密钥签名问题:密钥库被篡改或密码不正确。

15

我正试图为Google地图API签署我的Android应用程序的发布版本(调试版本已经签署成功):

keytool -list -alias cancertrials -keystore /Users/syalam/Documents/workspace/Cancer_Trials/keys/release -storepass android -keypass cancertrials

但我收到了错误:

java.io.IOException: Keystore was tampered with, or password was incorrect

我确定密码是正确的,因为当我尝试在Eclipse中导出我的应用程序时,它会要求输入密钥库和密码,而且我确信已经正确输入了密码。

不确定为什么我无法签名?我需要在发布模式下显示Google Maps(在调试模式下可以正常工作)。

5个回答

24

我认为在执行列表操作时不需要包含storepass。storepass加密的是私钥,而执行列表操作时并不会显示私钥。你可以尝试以下操作:

keytool -list -keystore /Users/salam/Documents/yada/yada

当提示时,请提供密钥库密码。如果可以工作,那么您可以尝试在命令行上只使用keypass。

您可能还想检查并确保使用相同版本的Java。我认为这不是问题,但如果上述方法没有帮助,请尝试一下。


1
太好了,这个方法很有效。但愿 Google 在他们的文档中写明了这一点,那就可以避免我头疼了! - Sheehan Alam

5

在Windows系统中,keytool无法接受密码。我只需要SHA1密码来配置Google开发控制台上项目的客户端ID。以下方法对我有效:

keytool --list --keystore android.jks --protected

这将打印所有别名的SHA1密钥。

2

当我切换回1.6.0_29时,我在jdk1.6.0.31上使用jarsigner遇到了同样的问题。请注意JDK版本。


2

请检查您的别名。有时候,您的别名与keytool别名不同,因此会导致相同的错误。


0

keytool -list -keystore "密钥库路径"

Linux 系统中,此命令将要求输入密码;而在 Windows 系统中,只需输入密钥库列表即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接