安卓studio自带的模拟器运行system app的方法
前言: 本文教大家怎么使用安卓studio中自带的模拟器去运行一个system app。因为有时候自己写的应用需要作为system app才能实现某些功能,故需设置为system app, 但经常会出现明明打了系统签名却依然装不上的怪问题, 那么这篇文章能帮你解决问题。
一、安卓模拟器修改
想要让我们打了系统签名后的app能正常运行到安卓studio的模拟器中,首先要确保你的模拟器不是带google apis的, 你要打开AVDmanager。 看下图:
如图上所示, 可以看到target那里,Android8.1后面有个(Google APIs)。 像这种就不行, 即使你弄了对应的平台签名也无法安装上去。
因为这种带google apis的, 用的系统签名和你在AOSP(就是那个安卓开放源码平台, 里面有历代安卓源码的那个网)找的platform.pk8 和 platform.x509.pem文件生成的系统签名是不一样的。 这就是为什么我明明打了对应平台的系统签名还是无法将应用安装上去的原因。
怎么解决呢, 仔细看下面这张图。
在select a system images页面中, 我们选x86 images 。然后记得选那种没有带(Google apis)的系统, 即可。 对, 这就完了。。 后面的内容对于懂了的老哥不看也可以。
再补充一些吧:
按前面的步骤,如果你是把应用直接往模拟器里装,虽然你的应用可以安装上去。但是他并不是装在system/app/ 目录下的。我们可以通过adb确认。
在system/app/下并没有我们的app。 而我们的app还是装到了默认的位置/data/app下去了
看吧。
那么如果你想装到system/app下呢?
因为对于system分区下,我们只有读的权限,想要有写的权限,需要remount分区。
adb root
adb remount
adb shell mkdir /system/app/你的应用文件夹名
adb push 你的应用路径 /system/app/你的应用文件夹名
adb reboot
上面一顿操作后就可以了,你的应用就被安装到system/app下了, 记得reboot哦。
如果你想更新你在system/app/下的应用,步骤如下:
adb root
adb remount
adb shell #进入shell中
cd /system/app/你的应用 #先进入你那个应用所在的文件夹!
cp /xxx/xxx/你的应用 你的应用 # 因为此时已经在/system/app/你的应用 文件夹下了,此时用cp命令进行替换!即可
sync
reboot 或 pm clear 你的应用包名
删除同理。进入shell 里面, rm -rf 删除你的应用那个文件夹后reboot, 完事。 注意不要删了别的重要的app, 不然系统可能卡死。。。
至此本文的核心内容讲完了,
THE END
。
。
。
下面顺便给小白讲讲怎么打系统签名吧~
二、怎么生成系统签名
1.拿到 platform.pk8 和 platform.x509.pem
首先我们要拿到对应安卓系统的 platform.pk8 和 platform.x509.pem文件。
给大家推荐一个看源码的网:http://aospxref.com/
然后 platform.pk8 和 platform.x509.pem 文件在,/build/target/product/security/目录下。
注意, 按你的安卓版本去找。 我这里以8.1为例。然后将这两个文件下载下来。
2.下载keytool-importkeypair工具
keytool-importkeypair下载地址:https://github.com/getfatday/keytool-importkeypair
此工具下载完成后, 将platform.pk8 和 platform.x509.pem文件放到它的文件夹内。 如下所示:(此工具的使用需要linux环境 , 这个请自己看情况解决, 反正是需要linux环境的)
3. 生成签名
使用这条命令: ./keytool-importkeypair -k ./platform.keystore -p android -pk8 platform.pk8 -cert platform.x509.pem -alias platform
我这里已经生成好了。 如果成功会多出一个platform.keystore的文件。我们拿着这个文件即可。 记住, 它默认的账号密码是:
三、安卓studio中配置签名
- 将你的platform.keystore文件复制到项目中, 或者其他本地位置。 打开project structure, 如下图位置。 在store file中找到你的platform.keystore文件位置。
- 打开build variants , 为他们分别配置signing config。
最终我们的build.gradle会多下面两块代码。注意,signingConfigs中的内容和build types中的 signingConfig …
好了, 这样在安卓studio里直接点运行就可以将system app装上去了。他们都被打上了系统签名。