在安卓系统的机制里面 ,只要是将app复制到系统的system文件/system/app 文件夹中的app,都是系统应用(不可删除同时获取了系统的最高权限).在做开发的时候,有的情况需要获取到系统权限但是拿不到系统的签名(厂商编译源码时输出的),就会想到搞一下这个系统应用.
当然,要做这个操作,就必须得先root,不然是不可能做到的.
root的具体教程还请自行查询,毕竟机型以及刷机包版本种类太多了

以下操作为root成功以后
准备工作

  • adb环境 打开命令行终端
    adb version 查看 配置好环境变量直接使用
  • 连接电脑进入手机root模式
    这个操作也可以使用adb来完成
    adb push demo.apk /sdcard/
    进入手机的shell 命令行:
    adb shell
    然后切换root 用户
    su root

    这个"#"就是获得root权限的标志
  • 解锁system分区
    mount -o rw,remount,rw /system
  • 复制apk到system分区
    cat /sdcard/demo.apk > /system/app/demo.apk
    这里要罗嗦一下,有的手机厂商会修改这个system分区位置,我们可以在su root 命令后使用ls命令逐级查看
  • 还原分区属性,只读
    mount -o remount,ro -t remount,rw /system
    关机重启, 这样自己的app就设置为系统app了.
    [注]以上操作并不能保证app可以正常运行,需要对libs里文件进行copy
    操作如下:
    1.将app解压到一个文件夹如图

打开这个文件夹,里面会有三个文件夹,分别对应不同的 系统架构生成的 so文件 ,需要找到合适系统架构的的so文件,复制到 系统分区的lib 目录中去(/system/lib/)
重复以上步骤–>copy到/sdcard/ -->system分区解锁–>copy到目标文件 -->锁system分区
参考命令如下:
cat /sdcard/libsqlcipher.so > /system/lib/libsqlcipher.so
以上操作也可以使用代码实现如下:

public  void setSysApp() {final Runnable runnable = new Runnable() {@Overridepublic void run() {// 解锁系统分区String s = "mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system";CMDUtils.upgradeRootPermission(s);//s="cat /sdcard/demo.apk > /system/app/demo.apk";CMDUtils.upgradeRootPermission(s);s="cat /sdcard/libsqlcipher.so > /system/lib/libsqlcipher.so";CMDUtils.upgradeRootPermission(s);s="mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system ";CMDUtils.upgradeRootPermission(s);}};new ExecutorUtil(runnable).execute();
}public class ExecutorUtil extends Thread{final static ExecutorService cachedThreadPool = Executors.newCachedThreadPool();private Runnable runnable;public ExecutorUtil(Runnable runnable){this.runnable=runnable;}@Overridepublic void run() {try{Looper.prepare();new Handler().post(runnable);//在子线程中直接去new 一个handlerLooper.loop();//这种情况下,Runnable对象是运行在子线程中的,可以进行联网操作,但是不能更新UI}catch (Exception e){e.printStackTrace();}}public void execute() {cachedThreadPool.execute(this);}
}
// 获取系统权限的方式执行public static String upgradeRootPermission(String cmd) {Log.i(TAG, "执行开始");//String pkgCodePath = "/sdcard";Process process = null;DataOutputStream os = null;try {process = Runtime.getRuntime().exec("su"); //切换到root帐号os = new DataOutputStream(process.getOutputStream());os.writeBytes(cmd + "\n");os.writeBytes("exit\n");os.flush();process.waitFor();StringBuilder successMsg = new StringBuilder();StringBuilder errorMsg = new StringBuilder();BufferedReader successResult = new BufferedReader(new InputStreamReader(process.getInputStream()));BufferedReader errorResult = new BufferedReader(new InputStreamReader(process.getErrorStream()));String s;while ((s = successResult.readLine()) != null) {successMsg.append(s);}while ((s = errorResult.readLine()) != null) {errorMsg.append(s);}
//                cmdRsult = new CMD_Result(result, errorMsg.toString(),
//                        successMsg.toString());Log.i(TAG, successMsg.toString() + "执行完成" + errorMsg.toString());return successMsg.toString();} catch (Exception e) {Log.e(TAG, "异常 upgradeRootPermission: ", e);} finally {Log.i(TAG, "执行完成finally");try {if (os != null) {os.close();}process.destroy();} catch (Exception e) {}}return  null;}

参考病毒先生文章

修改安卓系统应用,将自己的app变成系统应用(需要root)相关推荐

  1. 修改安卓系统应用,将自己的app变成系统应用

    在安卓系统的机制里面 ,只要是将app复制到系统的system文件/system/app 文件夹中的app,都是系统应用,如果你把系统内置的应用从里面删除了,也就是彻底移除了作为系统应用的条件 .这就 ...

  2. 游戏陪玩系统源码,陪玩APP开发系统自动化代码实践

    android端游戏陪玩系统源码主流的Butternife ,Dragger2等很好的实现了AOP的编程理念. 在陪玩APP开发中我们利用这种思想将陪玩间很多的共有逻辑变为不可见,不需要开发人员去关注 ...

  3. 安卓原生系统_手机用这个App,系统变得比原生安卓还干净

    总是有人问我原生 Android 跟 MIUI.Flyme.EMUI 这些定制 ROM 相比,哪个更好. 该怎么回答呢? 论颜值,论本地化,论广告和预装,原生 Android 其实不怎么占优势了,唯独 ...

  4. 修改安卓默认的系统button样式,以及其它系统控件的默认样式

    先介绍下修改原理:首先打开位于android.widget包下面的Button.java文件,这里有一句关键的代码如下: public Button(Context context, Attribut ...

  5. 【阿里聚安全·安全周刊】阿里安全潘多拉实验室完美越狱iOS11.2.1|Janus漏洞修改安卓app而不影响签名

    原文链接:点击打开链接 摘要: 关键词:阿里安全潘多拉实验室丨Janus漏洞丨御城河丨编程语言出现漏洞丨APP追踪定位丨银行APP存在漏洞丨安卓统一推送联盟|AhMyth RAT|HP笔记本 关键词: ...

  6. 【阿里聚安全·安全周刊】阿里安全潘多拉实验室完美越狱iOS11.2.1|Janus漏洞修改安卓app而不影响签名...

    关键词:阿里安全潘多拉实验室丨Janus漏洞丨御城河丨编程语言出现漏洞丨APP追踪定位丨银行APP存在漏洞丨安卓统一推送联盟|AhMyth RAT|HP笔记本 本周资讯top3 [越狱苹果]独家探寻阿 ...

  7. 安卓 App 库存系统开发 终端设备 SDK 分析

    安卓 App 库存系统 客户初步打算使用 南方鸿志 这款手持超高频扫描器 http://www.nanfang001.com/Product/7813605116.html 重点留意 安卓系统,产品选 ...

  8. java计算机毕业设计基于安卓Android的人在旅途旅行出行APP(源码+系统+mysql数据库+Lw文档)

    项目介绍 首先,论文一开始便是清楚的论述了系统的研究内容.其次,剖析系统需求分析,弄明白"做什么",分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求.然后在明白 ...

  9. 安卓手机APP播放系统铃声,不同于媒体铃声

    安卓app播放系统铃声,手机调节音量键后即可影响app的播放音量,不必单独调节媒体音量. protected void startRing() {Uri uri = RingtoneManager.g ...

最新文章

  1. python 小程序,输错三次密码锁定账户
  2. Draw Call未被批处理?在Unity 5.6中如何查找原因
  3. “裁员” + 滤镜 = “毕业”
  4. 设计模式(行为型模式)——访问者模式(Visitor)
  5. matlab对手写数字聚类的方法_scikitlearn — 聚类
  6. PHP实现文章的删除,php如何实现删除文章
  7. Django restframwork实现自定义数据格式的分页与搜索
  8. 得益于iPad 苹果二季度在平板电脑应用处理器市场份额接近60%
  9. (三十九)数据的持久化存储-plist实现(XML属性表)
  10. 高中同窗被叫“码子”的!如今转行软件测试,不止是年轻,还有拼搏的勇气
  11. 物业收费管理系统 java_基 于java的小区物业收费管理系统.doc
  12. 人生顿悟之博观而约取,厚积而薄发
  13. MyBatis逆向工程
  14. Windows修改文件报错:“文件或文件夹正在使用”解决办法
  15. regedit命令应用
  16. PCBA方案设计——人体电子秤芯片方案
  17. 使用golang链接达梦数据库
  18. 音频D类功放LC滤波器设计(二)
  19. 京东数科前端春招面经
  20. 原子核的奥秘:核力的发现

热门文章

  1. php开发商城系统怎么样?有哪些PHP开源商城系统推荐?
  2. (转)一篇令所有游戏圈的兄弟汗颜的文章
  3. 写给正在读计算机专业的同学: 大学期间该如何学习编程?
  4. windows server 2012 r2 及 server 2019的sxs文件
  5. cocos2d-x Tile Map教程(二)
  6. python里的map是什么意思_python中的map是什么意思
  7. 案场渠道稽核管理系统更新记录V1.2
  8. RuntimeError: PytorchStreamReader failed locating file data.pkl: file not found
  9. python小玩意——创建文件夹
  10. Android Binder学习指南