如何使用apksigner将未签名APK用另一已签名APK的签名签名?
使用apksigner为A.apk应用B.apk相同签名的方法
核心前提
要完成这个操作,必须持有B.apk签名时使用的私钥文件(如.jks、.keystore、.p12),以及对应的密钥库密码、密钥别名、密钥密码。仅通过已签名的B.apk无法提取出私钥,因此没有这些核心信息的话,无法实现用相同签名为A.apk签名。
签名命令(拥有私钥时)
针对JKS/Keystore格式密钥
apksigner sign --ks /path/to/your/keystore.jks --ks-key-alias your-key-alias --out signed_A.apk A.apk
执行后会交互式提示输入密钥库密码和密钥密码;若两者相同,可添加参数跳过交互:
apksigner sign --ks /path/to/your/keystore.jks --ks-key-alias your-key-alias --ks-pass pass:your-store-password --key-pass pass:your-key-password --out signed_A.apk A.apk
针对PKCS#12格式密钥
如果私钥是.p12格式,需指定密钥类型:
apksigner sign --ks /path/to/your/key.p12 --ks-type PKCS12 --out signed_A.apk A.apk
同样可添加密码参数跳过交互:
apksigner sign --ks /path/to/your/key.p12 --ks-type PKCS12 --ks-pass pass:your-password --out signed_A.apk A.apk
验证签名一致性
签名完成后,可通过以下命令对比A.apk(签名后)与B.apk的签名信息,确认是否一致:
# 查看B.apk的签名证书信息 apksigner verify --print-certs B.apk # 查看签名后A.apk的签名证书信息 apksigner verify --print-certs signed_A.apk
对比两次输出的证书指纹、公钥、颁发者等信息,完全匹配则说明签名一致。
内容的提问来源于stack exchange,提问作者Debesh Mohanty
相关产品推荐
相关产品推荐

