【问题标题】:Double-Signing .apk // SHA1 & other issues双重签名 .apk // SHA1 和其他问题
【发布时间】:2017-12-24 06:11:27
【问题描述】:

我目前在对 .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 的错误:错误(Jar 签名者 INTERNAL.RSA):JAR 签名 META-INF/INTERNAL.RSA 使用摘要算法 2.16.840.1.101.3.4.2.1 和签名算法 1.2.840.113549.1.1.1,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 没有摘要

这只是错误的一个小sn-p,因为它列出了应用程序的每个资产都有相同的错误。感谢您提供有关如何解决此问题的所有帮助或提示。

干杯, 马吕斯

【问题讨论】:

  • 关于第二个错误:(1)你是在原来的四行脚本中添加-sigalg和-digestalg参数并重试,还是在前两行之后运行修改后的jarsigner命令?文件? (2) 除了“在 META-INF/EXTERNAL.SF 中没有...的摘要”之外,Play 是否还有其他错误或警告
  • 我尝试在新文件上使用 -sigalg 和 -digestalg 签名。我总是使用原始文件的副本对其进行签名,如果它不起作用,我将删除它。遗憾的是,除了“No digest for...Asset XY”之外,没有显示其他错误。
  • 请添加 Play(或 apksigner verify)抱怨的 APK 中 META-INF/EXTERNAL.SFassets/www/assets/fonts/FONT.ttf 部分的内容。

标签: java android algorithm apk jarsigner


【解决方案1】:

您可以尝试从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 中的第一个错误是由于 API 级别 18 (Jelly Bean MR2) 和 APK 的 AndroidManifest.xml 声明(通过android:minSdkVersion) APK 支持在 API 级别 14 及更高级别的平台上运行。

P。 S. 你可以通过运行来近似 Play 的 APK 签名检查行为

apksigner verify some.apk

【讨论】:

  • 我将尝试使用 apksigner,并在今天晚些时候发表评论,一旦我有结果。感谢您迄今为止的帮助!
猜你喜欢
  • 1970-01-01
  • 2014-07-05
  • 2015-11-21
  • 2019-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多