-
声明UID,AndroidManifest.xml文件中添加
android:sharedUserId="andorid.uid.system" -
android 源码目录 build/make/target/product/security/取platform.pk8 platform.x509.pem放到同一个目录下
-
在platform文件目录下分别运行命令
openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out shared.priv.pem -nocrypt
openssl pkcs12 -export -in platform.x509.pem -inkey shared.priv.pem -out shared.pk12 -name platform
输入密码:
Enter Export Password:123456
Verifying - Enter Export Password:123456
keytool -importkeystore -deststorepass 123456 -destkeypass 123456 -destkeystore platform.keystore -srckeystore shared.pk12 -srcstoretype PKCS12 -srcstorepass 123456 -alias platform
生成platform.keystore 或者 jks
Eclipse中Window–Preferences–Android–Build–Custom debug keystore选择生成的keystore。
android studio中将debug.keystore拷贝到项目中和build.gradle同级目录,并在build.gradle 的android节点中添加如下引用
signingConfigs {
release {
storeFile file("platform.keystore")
storePassword '123456'
keyAlias 'platform'
keyPassword '123456'
}
debug {
storeFile file("platform.keystore")
storePassword '123456'
keyAlias 'platform'
keyPassword '123456'
}
}
使用命令签名:
jarsigner.exe -verbose -keystore platform.keystore -signedjar demo_sign.apk demo.apk platform
输入密钥库的密码短语:123456
jarsigner: 找不到debug.keystore的证书链。platform.keystore必须引用包含私有密钥和相应的公共密钥证书链的有效密钥库密钥
条目。
修改命令指定别名:
jarsigner.exe -verbose -keystore platform.keystore -signedjar demo_sign.apk demo.apk platform
输入密钥库的密码短语:123456
platform为别名,如果忘记别名,使用以下命令查看
keytool -list -v -keystore platform.keystore -storepass 123456
如果apk已签过名,再进行系统签名时会报错:
jarsigner: 无法对 jar 进行签名: java.util.zip.ZipException: invalid entry compressed size (expected 55025 but got
53199 bytes)
可以将apk重命名为zip文件,将其中的签名信息META-INF删掉,再将后缀改为apk后重新签名。
文章详细描述了如何在Android应用中设置UID,以及如何使用openssl和keytool工具生成和操作keystore文件进行系统签名。过程中提到了命令行操作,如pkcs8转换、pkcs12导出、keytool导入以及jarsigner签名,同时也指出了签名过程中可能遇到的问题及解决办法,如删除已签名apk的META-INF文件。

7216

被折叠的 条评论
为什么被折叠?



