一些(但不是全部)用户收到"包文件未正确签名"从Google Play下载我的应用时

时间:2014-09-12 16:43:14

标签: android google-play jar-signing

我已在Google Play商店中提交并发布了一个应用。我上传二进制文件时没有收到任何错误。现在,我收到某些(并非所有)客户的报告,说明他们在安装我们的应用时遇到以下错误:

  

"包文件未正确签名"

当我尝试自己复制此错误(使用Nexus 7重置为出厂设置)时,一切顺利。

这似乎与this问题中描述的问题类似,但accepted answer在这种情况下似乎并不适用。

看到看到了使用JDK 6而不是JDK 7的建议,但像this one这样的答案让我相信这个解决方案适用于在旧版本中创建密钥库的情况Java此外,我担心如何使用旧版Java重新签署新版本会影响我们的客户,他们没有在初始安装时遇到问题。

  1. 用于签署应用程序的JDK版本是否仅对某些客户产生负面影响是否有意义?如果是这样,哪些因素可能决定问题发生在哪些设备上?
  2. 更改如何我签署二进制文件(而不是证书)会对我们目前没有此问题的用户更新应用的能力产生任何负面影响
  3. 如果我用来签署APK的Java版本不是问题,还有什么可能导致这样的错误?
  4. 修改 所有遇到此问题(或没有此问题)的用户都在运行Android 4.0或更高版本。该应用不支持早期版本的Android。

1 个答案:

答案 0 :(得分:6)

在我读了一下后,我需要明确地为JDK7 jarsigner指定算法..

将其添加到项目的build.xml文件中:

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

经过一点阅读之后,它似乎与设备上用于摘要的默认算法有关,它似乎因设备而异,所有设备上的通用算法都是上面xml中指定的算法。这就是为什么它在某些设备上失败,其他用户经历过同样的事情,例如:“Package not signed correctly” appearing for some users

此博客文章还包含有关apk签名的一些有趣信息:Android code signing

我现在非常有信心明确设置Android指定的签名算法不会影响已安装的客户,我希望它能为其他客户解决问题。