将App设置为Android系统应用

荒凉一梦 提交于 2020-03-10 17:20:01

有些App是和一些设备厂商合作,将我们的app提供给设备厂商,厂商将我们的app设置为系统应用,这样可以获得系统应用权限,比如reboot,shutdown这些。但是我们平常开发调试时为了方便是直接运行在模拟器上的,这就需要我们做一些处理,将模拟器ROOT以后,然后将我们的apk push到系统的system/priv-app目录下,这样便可以将我们的app设置为系统应用。下面说一下详细的步骤。

参考大神的方案:搞机:AS自带模拟器AVD Root 和 Xposed安装

一、 准备工作

我们需要下载8.0以下的不带Google API 的x86系统做为模拟器的系统,这里我直接选择了7.1的
emulator
模拟器名字可以取一个简单点,等下方便在cmd中输入。

然后再下载supersu和re管理器。这里为大家准备好了,自行提取:
百度云盘地址:https://pan.baidu.com/s/1Jt7gAjB-kxSizlL70yYduw

然后将你的App打包出apk,然后将apk文件中的lib文件夹中的x86的.so文件都解压出来(因为我们这里的模拟器是x86的,所以只需要解压x86的就行),没有就跳过。

二、开搞

2.1 root

首先到sdk的tools的目录下打开cmd终端,然后运行emulator -avd root -writable-system,将模拟器启动,这里必须用这个命令启动才能root.
在这里插入图片描述
启动起来以后,到Sdk\platform-tools路径下新开一个终端,之前那个终端不要关闭,一关闭模拟器也关闭了。

先将刚才下载的re管理器和supersu安装到模拟器中去,安装好了先别打开。
adb install C:\Users\sherlock\Desktop\tind\reexplore.apk
adb install C:\Users\sherlock\Desktop\tind\pack\SuperSU-v2.79.apk
在这里插入图片描述
接着将你的apk和刚才解压出来的.so文件push到sdcard中去。
adb push C:\Users\sherlock\Desktop\tind\app-release.apk /sdcard/tind.apk
adb push C:\Users\sherlock\Desktop\tind\libBugly.so /sdcard
这里apk名字和.so文件取决于你自己的apk和.so文件的名字
在这里插入图片描述
接下来开始root。
逐次运行:

adb root 
adb remount
adb shell
setenforce 0
exit

在这里插入图片描述
接着将前面网盘中的另外一个压缩文件解压出来,将SuperSu 2.7.9 Recovery\x86\su.pie push到模拟器上。
adb push xxx\su.pie /system/bin/su
adb push xxx\su.pie /system/xbin/su
在这里插入图片描述
然后再次输入
adb shell
chmod 0755 /system/bin/su
chmod 0755 /system/xbin/su
su --install
su --daemon&
在这里插入图片描述
接着打开supersu,选择新用户,然后会提示你要不要更新,选择否。然后再打开re管理器,会提示是否授予root权限,选择同意授予。到此root完成。
盗用一下大佬的图片:
在这里插入图片描述
在这里插入图片描述

2.2 设置为系统应用

在re管理器中,将刚才push进来的你的.so文件剪切到system/lib目录下,然后将文件权限改为
在这里插入图片描述
第二部去/system/priv-app目录下新建一个文件夹,名字随便取,建议取你App名称。然后把apk剪切到这个文件下,然后同样的修改权限
在这里插入图片描述
点击ok以后,在刚才的那个终端中输入reboot,或者新开终端输入adb reboot,将模拟器重启,就会发现apk被安装上了(如果刚才是将apk剪切到system/app的话,经我测试apk也会成功安装,但是并不会获取到系统权限)。然后,前面参考的大神文章中说用reboot命令重启模拟器后还是会有root权限,但是我测试发现无论怎样重启,都是会丢失root权限。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!