前言
一般情况下,我们使用的签名都是自己生成的Java签名来编译APP. 但是,如果需要开发一些特定设备的APP(对权限有更高的要求,需求一些系统基本的权限,比如让APP可以控制设备的休眠),那就需要编译系统签名的APP.
首先你还要明白,APP系统签名的文件必需是你当前设备的系统签名文件一致,这种签名文件只有你自己是Android系统开发才能获取到(Rom是你自己打包的).
准备工作
- 在github上下载工具 https://github.com/getfatday/keytool-importkeypair
- Android证书文件准备
文件路径:Android/build/target/product/security,包括platform.pk8和platform.x509.pem
打包系统签名
生成keystore文件
- 将keytool-importkeypair、platform.pk8和platform.x509.pem文件放在同一个目录下,执行如下命令,会生成platform.keystore文件:
sh keytool-importkeypair -k ./platform.keystore -p android -pk8 platform.pk8 -cert platform.x509.pem -alias platform
- -p 表示新生成的keystore的密码是什么,这里为android
- -pk8 表示要导入的pk8文件的名称,可以包括路径,pk8文件用来保存private key的,是个私钥文件。
- -cert 表示要导入的证书文件,和pk8文件在同一个目录,pem这种文件就是一个X.509的数字证书,里面有用户的公钥等信息,是用来解密的,这种文 件格式里面不仅可以存储数字证书,还能存各种key。(有兴趣的可以点击此了解一下)
- -alias 表示给生成的platform.keystore取一个别名,这个名字只有我们在签名的时候才用的到,这里我们生成的文件名是platform。这个名字,可以随便取,但是你自己一定要记住。
AndroidManifest.xml修改
AndroidManifest.xml中添加共享系统进程属性,如下(三选一):
android:sharedUserId="android.uid.system"
android:sharedUserId="android.uid.shared"
android:sharedUserId="android.media"
在manifest节点中添加
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.y.demoapp" android:sharedUserId="android.uid.system">
打包APP
最后就是按照正常流程打包app了.在菜单栏选择 Build > Generate Signed Bundler or Apk > 点击进入菜单后选择APK > 然后选择你生成的签名文件,输入密码即可.
本文来自博客园,作者:观心静 ,转载请注明原文链接:https://www.cnblogs.com/guanxinjing/p/11410915.html
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。