我在Google Play上有一个应用程序多年来已经看到了无数的更新.最新的更新(有一段时间的第一个)无法为某些人安装,他们只是得到"包未正确签名"错误消息.
它适用于我家里的Android设备.我正在使用自定义构建系统构建和签名,该系统基本上归结为调用ant release
,然后是
jarsigner -verbose -keystore $(keystore) -storepass $(storepass) $(appname).apk $(alias) zipalign -v 4 $(appname).apk $(finalname).apk
这已经工作了多年,构建系统或密钥库没有变化,我不知道它为什么停止为某些用户工作.
我注意到文档添加了以下注意事项:
从JDK 7开始,默认签名算法[sic]已更改,要求您在签署APK时指定签名和摘要算法[原文如此](-sigalg和-digestalg).
所以我补充说-sigalg SHA1withDSA -digestalg SHA1
,它产生了一个不同大小的APK.我可以尝试滚动它,但我不想继续推出更新并惹恼用户,而不知道我实际上正在修复某些东西.
为什么这对某些人来说只会失败?我如何解决它?明确指定-sigalg/-digestalg吗?