1.前言
你从来不知道为什么会有这么多神奇的需求,如果再Android板子没下来的时候,又要开发app.而有些API又在sysytem App下才能有用的话.模拟器是一个快速开发的方式…
保证你下载的模拟器后面不可以是Google PLAY,至少是Google APIS,不然root失败
2.签名
工具栏.Build->Generate Signed Bundle or APK
选择APK进入
PS:我也不知道这步要不要,但是我觉得这步是为了保证我的app唯一
create New 后,创建一个新的签名
第一行的password是数字证书密码.
第二行Alias:是指定数字证书的别名.
剩下的是个人信息,自行填写就是了.点击ok
选择个人需求是debug or release版本签名以及还是对整个apk进行签名l
生成证书后,得到一个.jks文件
然后通过build.gradle文件配置签名.
android{
signingConfigs {
debug {
keyAlias 'key0'
keyPassword '123456'
storeFile file('../zzhkeystore')
storePassword '123456'
}
release {
keyAlias 'key0'
keyPassword '123456'
storeFile file('../zzhkeystore')
storePassword '123456'
}
}
}
3.打开模拟器
这里打开不可以用Android Studio中普通打开一样.
去到sdk下的tools文件中.执行以下命令
emulator -avd emulatorName -writable-system
中间是模拟器的名字
,如果不知道使用emulator -list-avds
执行后,你会发现这有一大堆东西出现。之后,你的模拟器就正常打开了.
4.命令
打开第二个cmd.
保证你的adb加入到了系统变量中!!!
如果没有则到sdk中的platform-tools找到他.
执行命令
adb root
如果adb都不成功…检查一下自己的模拟器能不能root
adb remount
然后人家叫你reboot,你就reboot
adb reboot
重启后,要重新root和remount!不然也put不进去sysytem/app
,知道我们看到了曙光~~!!
好了,这个时候把你的apk文件放到system/app即可.
adb push E:\project\demo\app\build\outputs\apk\debug /system/app/DemoActivity2
然后再reboot一次!!!
你就会神奇的发现,模拟器上面,你能看到自己的app了。!!!
然后就可以快乐的开发调试了.
5.校验
在AndroidManifests.xml actvity内加入android:sharedUserId=“android.uid.system”
(其实这里我不知道是加到manifest标签去还是acitivty去,不过我是单Activity架构.所以都ok~剩下的自己去实验哈,知道的请读者告诉我一声,十分感谢)
val pInfo: PackageInfo
try {
pInfo = packageManager.getPackageInfo(packageName, PackageManager.GET_PERMISSIONS)
val b = pInfo.applicationInfo.flags and ApplicationInfo.FLAG_SYSTEM != 0
LogUtil.d(TAG, "是否为系统应用: $b")
} catch (e: PackageManager.NameNotFoundException) {
e.printStackTrace()
}
然后你使用上面的代码校验一下自己的应用是否成功成为超级大爹,成为系统应用!!!权限?小丑罢了~