马上:系统签名apk和工具

马上:系统签名apk和工具

开发一款系统插件app, 系统权限,android:sharedUserId="android.uid.system , 其中涉及系统签名和一下工具使用,记录一下

android:sharedUserId

官方爸爸

警告:API 级别 29 中已弃用此常量。 共享用户 ID 会在软件包管理器中导致具有不确定性的行为。因此,强烈建议您不要使用它,并且我们在未来的 Android 版本中会将其移除。相反,应用应使用适当的通信机制(例如服务和内容提供程序),在共享组件之间实现互操作性。

与其他应用共享的 Linux 用户 ID 的名称。默认情况下,Android 会为每个应用分配其唯一用户 ID。不过,如果针对两个或多个应用将此属性设置为相同的值,则这些应用都将共享相同的 ID,前提是这些应用的证书集完全相同。具有相同用户 ID 的应用可以访问彼此的数据,如果需要的话,还可以在同一进程中运行。

系统app签名证书

asop,  build/target/product/security 下的相关签名文件

signapk.jar  //自带的签名工具,能二次签名
build/target/product/security/platform.x509.pem  //
build/target/product/security/platform.pk8 //

platform.x509.pem X.509的数字证书,有用户的公钥等信息 是不是想起了X509TrustManager

pk8文件,估计看名字是private key ,私钥,加密的

java -jar signapk.jar platform.x509.pem platform.pk8 unsign.apk sign.apk
通过jar工具进行系统签名

Android Studio 配置打包签名

android {


    signingConfigs {
        //签名
        vx_systemKeystore {
            keyAlias ''
            keyPassword ''
            storeFile file('./xxa.keystore')
            storePassword ''
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.vx_systemKeystore
        }

    }
}

上面一般配置签名文件的做法。那调试系统app,总不能每次都手动签名吧,所以强烈推荐 keytool-importkeypair 。经实践失败,分析其原因是  -alias, 不能有空格!!!

那怎么办,又想用现有的签名文件,keytool

Key and Certificate Management Tool

Commands:

 -certreq            Generates a certificate request
 -changealias        Changes an entry's alias
 -delete             Deletes an entry
 -exportcert         Exports certificate
 -genkeypair         Generates a key pair
 -genseckey          Generates a secret key
 -gencert            Generates certificate from a certificate request
 -importcert         Imports a certificate or a certificate chain
 -importpass         Imports a password
 -importkeystore     Imports one or all entries from another keystore
 -keypasswd          Changes the key password of an entry
 -list               Lists entries in a keystore
 -printcert          Prints the content of a certificate
 -printcertreq       Prints the content of a certificate request
 -printcrl           Prints the content of a CRL file
 -storepasswd        Changes the store password of a keystore
 -showinfo           Displays security-related information

Use "keytool -?, -h, or --help" for this help message
Use "keytool -command_name --help" for usage of command_name.
Use the -conf <url> option to specify a pre-configured options file.

可以改别名,别名密码,秘钥密码,等

可以解决,.jks和.keystore文件互相转换问题

keytool -changealias -keystore  xxa.keystore -alias 'old' -destalias 'new'  //Enter 修改新的别名
Out:
Enter keystore password:
Enter key password for
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore vxiao.keystore -destkeystore vxiao.keystore -deststoretype pkcs12".


keytool -storepasswd -keystore  xxa.keystore    //Eneter ,修改密码
keytool -keypasswd -keystore 签名文件路径 -alias 新的证书别名  //修改别名密码

keytool -importkeystore -srckeystore aa.keystore -destkeystore aa.keystore -deststoretype pkcs12  //Enter 转pkcs12
 
keytool -v -importkeystore -srckeystore a.keystore -srcstoretype PKCS12 -destkeystore a.jks -deststoretype JKS  //keystore  转jks

keytool -importkeystore -srckeystore a.jks -destkeystore a.jks -deststoretype pkcs12 //转pkcs12 

错误原因:keyPassword ,storePassword 密码不一致
keytool error: java.security.UnrecoverableKeyException: Cannot recover key
java.security.UnrecoverableKeyException: Cannot recover key
        at java.base/sun.security.provider.KeyProtector.recover(KeyProtector.java:303)
        at java.base/sun.security.provider.JavaKeyStore.engineGetKey(JavaKeyStore.java:146)
        at java.base/java.security.KeyStoreSpi.engineGetEntry(KeyStoreSpi.java:494)
        at java.base/sun.security.util.KeyStoreDelegator.engineGetEntry(KeyStoreDelegator.java:166)
        at java.base/java.security.KeyStore.getEntry(KeyStore.java:1548)
        at java.base/sun.security.tools.keytool.Main.recoverEntry(Main.java:3668)
        at java.base/sun.security.tools.keytool.Main.doImportKeyStoreSingle(Main.java:2328)
        at java.base/sun.security.tools.keytool.Main.doImportKeyStoreAll(Main.java:2378)
        at java.base/sun.security.tools.keytool.Main.doImportKeyStore(Main.java:2270)
        at java.base/sun.security.tools.keytool.Main.doCommands(Main.java:1220)
        at java.base/sun.security.tools.keytool.Main.run(Main.java:417)
        at java.base/sun.security.tools.keytool.Main.main(Main.java:410)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值