Android系统权限签名

让apk拥有系统权限签名有两种方法

1. 用系统签名文件进行签名

java -jar signapk.jar platform.x509.pem platform.pk8 input.apk output.apk

具体在一个linux环境的AOSP中命令(路径中可以可以看到上述命令相关文件的路径,命令执行路径为你AOSP源码根路径

java -jar out/host/linux-x86/framework/signapk.jar build/target/product/security/media.x509.pem build/target/product/security/media.pk8 input.apk output.apk

然后在Android8.0之后(拾人牙慧,自己没有查到官方说明和原因),直接运行上述命令可能会报错,报错使用如下命令即可(多了参数指定库路径-Djava.library.path=out/host/linux-x86/lib64

java -Djava.library.path=out/host/linux-x86/lib64 -jar out/host/linux-x86/framework/signapk.jar build/target/product/security/media.x509.pem build/target/product/security/media.pk8 input.apk output.apk

2. 生成系统签名文件 .jks(java keystore)

进入AOSP源码编译路径build/target/product/security

  • 运行如下命令,生成platform.pem

openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem

  • 运行如下命令,生成platform.p12mypassword是jks签名会用到的密码, myname是jks的alias名

openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:mypassword -name myname

  • 运行如下命令,生成myplatform.jks

keytool -importkeystore -deststorepass mypassword -destkeystore myplatform.jks -srckeystore platform.p12 -srcstoretype PKCS12 -srcstorepass mypassword

  • myplatform.jks就可以在android studio中配置使用了
signingConfigs {
    main {
        storeFile file(".myplatform.jks")
        storePassword "mypassword"
        keyAlias "myname"
        keyPassword "mypassword"
    }
}

就酱, Good Day~

你可能感兴趣的:(Android系统权限签名)