双签名 .apk // SHA1 和其他问题
Double-Signing .apk // SHA1 & other issues
我目前在对 .apk 进行双重签名时遇到一些问题。
正常的工作流程总是:
zip -d FILE.apk META-INF/\*
jarsigner -verbose -keystore EXTERNAL.keystore FILE.apk EXTERNAL
jarsigner -verbose -keystore INTERNAL FILE.apk INTERNAL
zipalign -v 4 FILE.apk FILE_ALIGNED.apk
使用这种原始方法时,我从 Google Play 商店收到错误消息:
您上传的 APK 签名无效(了解有关签名的更多信息)。来自 apksigner 的错误:ERROR (Jar signer INTERNAL.RSA): JAR signature META-INF/INTERNAL.RSA uses digest algorithm 2.16.840.1.101.3.4.2.1 and signature algorithm 1.2.840.113549.1.1.1 which is not supported在 API 级别 [[14, 17]]
由于我仅针对 "INTERNAL.RSA" 收到此算法错误,因此我尝试使用:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore INTERNAL FILE.apk INTERNAL
这会导致另一个错误:
您上传的 APK 签名无效(了解有关签名的更多信息)。来自 apksigner 的错误:错误(Jar 签名者 EXTERNAL.DSA):META-INF/EXTERNAL.SF
中没有 assets/www/assets/fonts/FONT.ttf 的摘要
这只是错误的一小段,因为它列出了具有相同错误的应用程序的每个资产。我非常感谢有关如何解决此问题的所有帮助或提示。
干杯,
马吕斯
您可以尝试从 jarsigner
切换到 apksigner
(https://developer.android.com/studio/command-line/apksigner.html)。原来的四个命令切换为:
zipalign -v -p 4 FILE.apk FILE_ALIGNED.apk
apksigner sign --ks EXTERNAL.keystore --next-signer --ks INTERNAL FILE_ALIGNED.apk
OP 中的第一个错误是由于具有 SHA-256 APK 签名的 RSA(现代 jarsigner
中的默认设置)在早于 API 18 级(Jelly Bean MR2)的平台上不受支持,并且APK 的 AndroidManifest.xml 声明(通过 android:minSdkVersion
)APK 在 API 14 级及更高级别的平台上支持 运行。
P. S. 您可以通过 运行
来近似 Play 的 APK 签名检查行为
apksigner verify some.apk
我目前在对 .apk 进行双重签名时遇到一些问题。 正常的工作流程总是:
zip -d FILE.apk META-INF/\*
jarsigner -verbose -keystore EXTERNAL.keystore FILE.apk EXTERNAL
jarsigner -verbose -keystore INTERNAL FILE.apk INTERNAL
zipalign -v 4 FILE.apk FILE_ALIGNED.apk
使用这种原始方法时,我从 Google Play 商店收到错误消息:
您上传的 APK 签名无效(了解有关签名的更多信息)。来自 apksigner 的错误:ERROR (Jar signer INTERNAL.RSA): JAR signature META-INF/INTERNAL.RSA uses digest algorithm 2.16.840.1.101.3.4.2.1 and signature algorithm 1.2.840.113549.1.1.1 which is not supported在 API 级别 [[14, 17]]
由于我仅针对 "INTERNAL.RSA" 收到此算法错误,因此我尝试使用:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore INTERNAL FILE.apk INTERNAL
这会导致另一个错误:
您上传的 APK 签名无效(了解有关签名的更多信息)。来自 apksigner 的错误:错误(Jar 签名者 EXTERNAL.DSA):META-INF/EXTERNAL.SF
中没有 assets/www/assets/fonts/FONT.ttf 的摘要这只是错误的一小段,因为它列出了具有相同错误的应用程序的每个资产。我非常感谢有关如何解决此问题的所有帮助或提示。
干杯, 马吕斯
您可以尝试从 jarsigner
切换到 apksigner
(https://developer.android.com/studio/command-line/apksigner.html)。原来的四个命令切换为:
zipalign -v -p 4 FILE.apk FILE_ALIGNED.apk
apksigner sign --ks EXTERNAL.keystore --next-signer --ks INTERNAL FILE_ALIGNED.apk
OP 中的第一个错误是由于具有 SHA-256 APK 签名的 RSA(现代 jarsigner
中的默认设置)在早于 API 18 级(Jelly Bean MR2)的平台上不受支持,并且APK 的 AndroidManifest.xml 声明(通过 android:minSdkVersion
)APK 在 API 14 级及更高级别的平台上支持 运行。
P. S. 您可以通过 运行
来近似 Play 的 APK 签名检查行为apksigner verify some.apk