【问题标题】:Keytool Signing Problem: Keystore was tampered with, or password was incorrectKeytool 签名问题:密钥库被篡改或密码不正确
【发布时间】:2011-05-14 20:22:30
【问题描述】:

我正在尝试为 Google Maps 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 中导出我的应用程序时,它会要求输入密钥库和密码,并且我输入正确。

不知道为什么我不能签名?我需要在发布模式下显示谷歌地图(在调试模式下工作)。

【问题讨论】:

    标签: java android google-maps keystore keytool


    【解决方案1】:

    keytool -list -keystore "Path of the keystore"

    这个命令会在linux机器上询问密码,而在windows机器上,你只需要输入list keystore。

    【讨论】:

      【解决方案2】:

      不知何故,在 Windows 上,keytool 不接受密码。我只需要 SHA1 密码就可以在 google 开发控制台上的项目中配置客户端 ID。以下似乎对我有用

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

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

      【讨论】:

        【解决方案3】:

        检查您的别名一次。有时您的别名与 keytool 别名不同,然后它会给出相同的错误。 即

        【讨论】:

          【解决方案4】:

          我认为,当您只是在做一个清单时,您不必包含商店通行证。 storepass 加密了做列表时不显示的私钥。试试这个:

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

          然后在出现提示时提供您的密钥库密码。如果可行,那么您可以在命令行上尝试只使用 keypass。

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

          【讨论】:

          • 效果很好。真希望谷歌在他们的文档中写了这个,这样我就不会头疼了!
          【解决方案5】:

          当我切换回 1.6.0_29 jarsigner 正常工作时,我在 jdk1.6.0.31 上遇到了同样的问题。请注意jdk版本。

          【讨论】: