【发布时间】: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