1. 准备文件
1.1 获取platform.pk8和platform.x509.pem
在Android源码的build/target/product/security/目录下找到文件platform.pk8和platform.x509.pem,复制到Linux下新建的signature文件夹下。
1.2 获取signapk.jar
在Android源码的out/host/linux-x86/framework/目录下找到文件signapk.jar,复制到Linux下signature目录下。
2.生成签名秘钥
上述文件都放到Linux的signature目录下,则在该目录下依次执行以下指令,就可以在同一目录下生成系统签名platform.keystore。
- 利用platform.pk8文件生成一个名为shared.priv.pem的中间文件
openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out shared.priv.pem -nocrypt
- 利用platform.x509.pem文件生成另一个名为shared.pk12中间文件
openssl pkcs12 -export -in platform.x509.pem -inkey shared.priv.pem -out shared.pk12 -name platform
这一步,会让输入密码
Enter Export Password: android12
Verifying - Enter Export Password: android12
- 生成秘钥platform.keystore
keytool -importkeystore -deststorepass android12 -destkeypass android12 -destkeystore platform.keystore -srckeystore shared.pk12 -srcstoretype PKCS12 -srcstorepass android12 -alias platform
3. Android Studio中使用该系统签名
把第二步生成的platform.keystore系统签名复制到window 上任意目录即可。
3.1 Generate Signed Bundle or APK
这样就可以打包系统签名的apk了。
3.2 调试有系统签名的apk直接run到设备中
这就需要在gradle中配置,在android节点下使用signingConfigs设置以下属性:
android {
...
signingConfigs {
config {
storeFile file("E:\\work\\signature\\platform.keystore")
storePassword "android12"
keyAlias "platform"
keyPassword "android12"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
debug {
signingConfig signingConfigs.config
}
}
}
这样就可以在Android Studio下生成和调试有系统签名的apk了。