Android 使用系统权限开发apk

文章详细描述了如何在Android应用中设置UID,以及如何使用openssl和keytool工具生成和操作keystore文件进行系统签名。过程中提到了命令行操作,如pkcs8转换、pkcs12导出、keytool导入以及jarsigner签名,同时也指出了签名过程中可能遇到的问题及解决办法,如删除已签名apk的META-INF文件。
  1. 声明UID,AndroidManifest.xml文件中添加

    android:sharedUserId="andorid.uid.system"

  2. android 源码目录 build/make/target/product/security/取platform.pk8 platform.x509.pem放到同一个目录下

  3. 在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后重新签名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值