Android:使用具有多证书的 ApkSigner 对 APK 进行签名
Android: Signing APK with ApkSigner with multi certificate
问题是我的应用程序 apk 是使用 jarsigner 使用 sha1 signer #1 和 sha1 signer #2 签名的。意思是使用 first-release-key.jks 和 second-release-key.jks 进行多重签名,我认为现在是错误的。 Apk 显示两个证书。现在尝试使用 sha2 signer #1 和 sha2 signer #2 为 apksigner 签名 apk 失败。
https://developer.android.com/studio/command-line/apksigner
通常,您只使用一个签名者来签署 APK。如果您需要使用多个签名者对 APK 进行签名,请使用 --next-signer 选项分隔一组通用选项以应用于每个签名者:
apksigner sign [signer_1_options] --next-signer [signer_2_options] app-name.apk
apksigner sign --ks sample.keystore --ks-key-alias abc --ks-pass pass:xyz --key-pass pass:somepass --next-signer --ks someks.jks --ks-key-alias key0 --ks-pass pass:123456 --key-pass pass:123456 MSIGN.apk
当 --next-signer 与上面一起使用时,apksigner 得到错误使用“SigningCertificateLineage”
Exception in thread "main" java.lang.IllegalStateException: Multiple signing certificates provided for use with APK Signature Scheme v3 without an accompanying SigningCertificateLineage
源代码:
有人帮忙在使用 --next-signer 时在哪里获取 SigningCertificateLineage 和随附的 SigningCertificateLineage 因此 apk 是多重签名的吗?
谢谢
尝试使用标志 --v3-signing-enabled=false
。
如错误消息中所述,v3 签名不支持使用多个密钥签名,因此我怀疑禁用它会修复此错误。
请注意,v3 签名是支持密钥轮换的 v2 签名的扩展,因此您不会失去安全性(好吧,除了您可能永远无法使用的密钥轮换)。
找到解决方案。
1)获取下面的证书沿袭使用。
apksigner rotate --out /path/to/new/file --old-signer \ --ks my.keystore --new-signer --ks mynew.jks
2)使用两个证书密码进行多重签名。
apksigner sign --lineage mylineagefile --ks my.keystore --next-signer --ks mynew.jks my.apk
问题是我的应用程序 apk 是使用 jarsigner 使用 sha1 signer #1 和 sha1 signer #2 签名的。意思是使用 first-release-key.jks 和 second-release-key.jks 进行多重签名,我认为现在是错误的。 Apk 显示两个证书。现在尝试使用 sha2 signer #1 和 sha2 signer #2 为 apksigner 签名 apk 失败。
https://developer.android.com/studio/command-line/apksigner
通常,您只使用一个签名者来签署 APK。如果您需要使用多个签名者对 APK 进行签名,请使用 --next-signer 选项分隔一组通用选项以应用于每个签名者:
apksigner sign [signer_1_options] --next-signer [signer_2_options] app-name.apk
apksigner sign --ks sample.keystore --ks-key-alias abc --ks-pass pass:xyz --key-pass pass:somepass --next-signer --ks someks.jks --ks-key-alias key0 --ks-pass pass:123456 --key-pass pass:123456 MSIGN.apk
当 --next-signer 与上面一起使用时,apksigner 得到错误使用“SigningCertificateLineage”
Exception in thread "main" java.lang.IllegalStateException: Multiple signing certificates provided for use with APK Signature Scheme v3 without an accompanying SigningCertificateLineage
源代码:
有人帮忙在使用 --next-signer 时在哪里获取 SigningCertificateLineage 和随附的 SigningCertificateLineage 因此 apk 是多重签名的吗?
谢谢
尝试使用标志 --v3-signing-enabled=false
。
如错误消息中所述,v3 签名不支持使用多个密钥签名,因此我怀疑禁用它会修复此错误。
请注意,v3 签名是支持密钥轮换的 v2 签名的扩展,因此您不会失去安全性(好吧,除了您可能永远无法使用的密钥轮换)。
找到解决方案。
1)获取下面的证书沿袭使用。
apksigner rotate --out /path/to/new/file --old-signer \ --ks my.keystore --new-signer --ks mynew.jks
2)使用两个证书密码进行多重签名。
apksigner sign --lineage mylineagefile --ks my.keystore --next-signer --ks mynew.jks my.apk