【问题标题】:"Package not signed correctly" appearing for some users某些用户出现“包未正确签名”
【发布时间】:2014-01-22 16:33:58
【问题描述】:

多年来,我在 Google Play 上有一款应用程序,该应用程序更新了无数次。某些人无法安装最新更新(一段时间内的第一个更新),他们只是收到“包未正确签名”错误消息。

它适用于我家里的 Android 设备。我正在使用自定义构建系统进行构建和签名,基本上可以归结为调用ant release,然后是

jarsigner -verbose -keystore $(keystore) -storepass $(storepass) $(appname).apk $(alias)
zipalign -v 4 $(appname).apk $(finalname).apk

这已经工作了多年,构建系统或密钥库没有任何变化,我不知道为什么它停止为 一些用户工作。

我注意到documentation 添加了以下警告:

从 JDK 7 开始,默认的签名算法 [原文如此] 已更改,需要您 指定签名和摘要算法 [原文如此] (-sigalg 和 -digestalg) 签署 APK 时。

所以我添加了-sigalg SHA1withDSA -digestalg SHA1,它会生成一个大小不同的APK。我可以尝试推出它,但我不想在不知道我实际上正在修复某些东西的情况下继续推出更新并惹恼用户。

为什么这只对某些人失败?我如何解决它?明确指定 -sigalg/-digestalg 是否足够?

【问题讨论】:

标签: android google-play jar-signing


【解决方案1】:

问题和你说的jdk7一样。为了克服这个问题,有很多关于同一主题的讨论

添加试试这个

<presetdef name="signjar">
<signjar sigalg="MD5withRSA" digestalg="SHA1" />
</presetdef>

在您的build.xml 文件中

注意

问题是在构建发布版本之后 蚂蚁释放 无法在物理设备上安装 apk

这只发生在 JDK 7 和 JDK 1.6.25 上,一切都很好!

它只影响一小部分,因为for jarsign jdk7 need SHA1 digest algm, but not with the default algorithms, whatever they are. 所以默认使用一些其他算法的设备会拒绝这个并导致问题。

以下是使用的算法

默认情况下,jarsigner 使用以下方法之一对 JAR 文件进行签名:

DSA (Digital Signature Algorithm) with the SHA1 digest algorithm
RSA algorithm with the SHA256 digest algorithm.
EC (Elliptic Curve) cryptography algorithm with the SHA256 with ECDSA (Elliptic Curve Digital Signature Algorithm).

了解更多jar signing

【讨论】:

  • 谢谢阿朱。我想我的困惑来自于不知道每个设备都有自己的默认算法——我不认为这会因设备而异。
  • 是的,你的问题也让我对此有了更多了解
【解决方案2】:

检查这个答案:

Published Android apk gives error “Package file was not signed correctly

问题似乎与jdk7有关,所以你的修复可以解决问题(但我自己没有经历过!)

【讨论】:

  • 这表明我在问题中的假设修复实际上会修复它。我不明白为什么它只会影响一部分用户?
  • 我相信 arju 对此有回应:某些设备可能缺少该算法或默认不使用正确的算法
【解决方案3】:

我们可以使用 eclipse 签署应用程序。 喜欢:- 在 Eclipse 中右键单击您的项目 > 选择 Android 工具 > 导出签名的应用程序包...

Android Application APK signing?

我希望这可能会有所帮助。谢谢!

【讨论】:

    猜你喜欢
    • 2012-12-15
    • 1970-01-01
    • 2011-01-31
    • 2013-11-19
    • 2011-06-13
    • 1970-01-01
    • 2019-09-24
    • 2020-04-07
    • 1970-01-01
    相关资源
    最近更新 更多