【问题标题】:Android release keystore issue: "Keystore was tampered with, or password was incorrect"Android 发布密钥库问题:“密钥库被篡改,或密码不正确”
【发布时间】:2012-03-07 18:34:40
【问题描述】:

几个月前,我使用以下命令生成了我的 android 发布密钥库:

keytool -genkey -v -keystore my-release-key.keystore -alias myalias -keyalg RSA -keysize 2048 -validity 10000

我输入了密钥库的密码并将其记下,在最后一步中,当需要输入证书的密码时,我按下回车键使用与密钥库相同的密码(所以我只需要记住一个整个过程的密码)。

生成此密钥库后,我使用以下命令签署了我的 apk 以供发布:

jarsigner -verbose -keystore my-release-key.keystore my.apk myalias

我输入密码的地方(没问题)。

现在我必须在市场上推送我的 apk 更新,当我尝试使用上面的命令签署新的 apk 时,我得到“密钥库被篡改,或密码不正确”。

我很困惑,我回到我的密钥库备份,我遇到了同样的问题。我确定密码是正确的。请注意,我根本没有在该过程中使用 Eclipse(我正在从命令行签名)。

这可能是什么问题?嘻嘻!!

【问题讨论】:

  • 你是怎么解决你的问题的?我也有同样的问题

标签: android jar-signing


【解决方案1】:

与社区分享我的经验...

JDK 1.7 android 的 build.gradle

android {
    compileSdkVersion 18
    buildToolsVersion "17.0.0"

    signingConfigs {
        release {
            storeFile file("../my-release.keystore")
            storePassword "$MakeMyDay!"
            keyAlias "my-release"
            keyPassword "$MakeMyDay!"
        }
    }
:

当我 gradlew assembleRelease 时,我得到了可怕的“被篡改或密码不正确”的错误。

分辨率:

使用更简单的密码,例如 abcdef。不确定是否有特殊字符,如 $ 和 !得到了支持。

【讨论】:

  • 我遇到了同样的问题 - 我的密码包含特殊字符,看起来像 Android 工具 don't like some of them。相同的密码在 Android Studio 中工作(自动转义?),但不是在命令行上。我通过更改密码并确保它不包含字符 &$%@ 来解决此问题。
【解决方案2】:

隐式 keyalg、digestalg 和/或 sigalg 在不同版本的 Java 和可能的 eclipse 之间发生了变化。

使用命令行并尝试几种不同的组合。在使用 Java 5.0 创建密钥但将我的系统升级到 Java 6 之后,这对我有用 jarsigner -verbose -keystore <.keystore> -sigalg MD5withRSA -digestalg SHA1 <apk file> <alias>

【讨论】:

    【解决方案3】:

    这个错误发生在我身上,因为我的公司名称中有逗号,例如“Company, Inc.”。 删除逗号,一切正常。 希望对您有所帮助。

    【讨论】:

      【解决方案4】:

      该消息表示密码错误。您似乎忘记了用于密钥存储的密码。

      强烈建议在创建密钥和密码时将副本保存在非常安全的地方,防止忘记、火灾、驱动器故障等,因为后果可能非常严重(永远无法在市场中更新应用程序)。

      【讨论】:

        猜你喜欢
        • 2012-08-22
        • 1970-01-01
        • 1970-01-01
        • 2014-12-24
        • 1970-01-01
        • 2012-12-21
        • 2016-04-10
        • 2017-11-20
        • 2011-05-14
        相关资源
        最近更新 更多