5

目前,我在 Google Play 上的三个应用程序在过去几天尝试上传新版本时遇到了这样的签名错误:

上传失败 您上传的 APK 使用与之前的 APK 不同的证书进行签名。您必须使用相同的证书。您现有的 APK 使用带有指纹的证书进行签名:

[ SHA1:87:17:A3:71:CD:CF:D6:73:71:56:B1:59:DE:89:6D:5A:E0:EE:31:8A,SHA1:4C:45:1E :30:2D:04:F4:DC:36:0E:EF:29:1B:1E:E1:02:C0:E8:E9:85]

并且用于签署您上传的 APK 的证书有指纹:

[SHA1:87:17:A3:71:CD:CF:D6:73:71:56:B1:59:DE:89:6D:5A:E0:EE:31:8A]

我仔细检查了密钥库,它是我一直使用的那个。事实上,一些应用程序有一个使用相同密钥库的专业版,并且更新工作正常。引人注目的是 IMO 是旧的现有 APK 的奇怪指纹,在上述情况下,其中有第二个条目,其中包含“SHA1:”,并且对于其他未通过旧指纹的应用程序之一被列为“[]” ,即一个空的。与此同时,我还更新了其他应用程序,在大多数情况下一切正常。唯一(我注意到),我遇到问题的三个应用程序有一个共同点,就是这些应用程序都很旧,第一个 APK 版本可以追溯到 2009 年甚至 2008 年。但是专业版 - 一切正常- 稍后介绍。

google play 上有一个类似的问题Upload failed for newer version apk,但是浏览器缓存解决方案不起作用,我也很有信心我使用了正确的密钥。

任何人都知道这里的解决方案可能是什么?我开始认为,也许对于一些较旧的应用程序,指纹是从谷歌方面的 APK 中错误地提取的(因此一个空的,另一个 IMO 对旧版本的指纹有点奇怪)。但通常问题源于自己的耳朵之间......

谢谢

4

2 回答 2

0

我也遇到了同样的问题。什么都没有改变,我仍在使用相同的密钥库,并在两周前更新了应用程序,没有任何问题。现在说签名的应用更新只有一个 SHA1-hash 指纹证书,而商店中现有的应用有两个不同的 SHA1-hash 指纹,(其中一个与应用更新的指纹相同)。所以看起来它曾经用两个证书签名,但现在只有一个。但是在导出和签名过程中没有任何改变——它是通过 eclipse 导出签名的应用程序完成的,因为它一直都是。

也许它过去总是与两个签名,其中一个已被移动或删除。这是我目前唯一的理论。或者 Google 土地上的 Play 开发者控制台上传/签名检查代码中的某些内容可能已过期。

我们的应用程序与 OP 的应用程序共享的另一个细节是它也是在 2009 年首次发布的。

于 2013-07-24T11:20:07.390 回答
0

可以使用多个密钥对 APK 进行签名。这从来都不是一个真正得到很好支持的行为,并且处理密钥的顺序是未定义的。但是,如果您的早期 APK 使用两个密钥签名,如消息所示,那么您的更新将需要使用所有相同的密钥(可能以相同的顺序)进行签名。

看起来第一个密钥与您使用的相同,因此您需要找到第二个密钥的密钥库。也许您的构建过程的某些部分是在上传之前重新签署 APK。一个可能的嫌疑人可能是您在 ~/.android 中的调试密钥库。

于 2013-07-24T03:46:58.193 回答