前言
应用使用系统签名可以在用户不需要手动授权的情况下自动获取权限。适合一些定制系统中集成apk的方案商。
步骤
-
需要在AndroidManifest.xml中添加共享系统进程属性:
android:sharedUserId="android.uid.system"
如下图所示:
-
找到系统定制厂商获取如下文件:
/build/target/product/security/platform.x509.pem /build/target/product/security/platform.pk8
-
生成系统签名的keystore
使用的工具keytool-importkeypair
下载地址这个工具的作用是将系统签名的相关信息导入到已有的签名文件中。
命令如下:
keytool-importkeypair -k test.keystore -p android -pk8 platform.pk8 -cert platform.x509.pem -alias platform
- test.keystore:是已有的签名文件,如果不存在的话,此命令会在当前目录下新建一个签名文件;
- platform.pk8:从系统定制厂商中获取到的私钥文件,用于对apk进行签名。这个私钥需要保密保存,不能公开。
- platform.x509.pem:从系统定制厂商中获取到的证书文件,相当于公钥。这个可以公开,主要用于验证某个apk是否由相应的私钥签名
-
为了方便调试可以将生成的系统签名文件配置到Android Studio中,只需要在app module目录下的build.gradle中添加如下内容
signingConfigs { release { storeFile file("test.keystore的路径") storePassword 'android' keyAlias 'platform' keyPassword 'android' } debug { storeFile file("test.keystore的路径") storePassword 'android' keyAlias 'platform' keyPassword 'android' } } buildTypes { release { //引用配置的签名,如果想在debug中使用 signingConfig signingConfigs.release } debug { //引用配置的签名,如果想在debug中使用 signingConfig signingConfigs.debug } }
配置完成之后,每一次运行app的时候就会使用带系统签名了。