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

您所在的位置:网站首页 重大事件英文歌曲有哪些 修改安卓系统应用,将自己的app变成系统应用(需要root)

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

2024-07-17 01:32:00| 来源: 网络整理| 查看: 265

在安卓系统的机制里面 ,只要是将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() { @Override public 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; } @Override public void run() { try{ Looper.prepare(); new Handler().post(runnable);//在子线程中直接去new 一个handler Looper.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; }

参考病毒先生文章



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭