【问题标题】:Issue signing Android Release Build " Failed to read key from keystore"问题签署 Android 发布版本“无法从密钥库中读取密钥”
【发布时间】:2015-02-18 02:24:12
【问题描述】:

我正在使用 gradle (assembleRelease) 来生成发布 apk。

我已将密钥库文件保存在 project/app/filename.keystore 中(在应用程序内)

我已经指定了与登录 gradle.properties 文件相关的详细信息

RELEASE_STORE_FILE=filename.keystore
RELEASE_STORE_PASSWORD=****
RELEASE_KEY_ALIAS=alias
RELEASE_KEY_PASSWORD=****

我的 build.gradle 文件有以下与签名相关的内容

signingConfigs {
        release {

            storeFile file(RELEASE_STORE_FILE)
            storePassword RELEASE_STORE_PASSWORD
            keyAlias RELEASE_KEY_ALIAS
            keyPassword RELEASE_KEY_PASSWORD
        }
    }

我在同一个 gradle 文件中指定了签名配置,如下所示

 buildTypes {
    release {
        signingConfig signingConfigs.release
    }
 }

但是,当我尝试创建发布版本时,我不断收到以下错误

Error:Execution failed for task ':app:package<flavor>Release'.
> Failed to read key from keystore

我试过关注

  • 输入错误密码以查看是否可以找到该文件。给出以下错误且路径正确,因为我假设可以找到该文件。

    从存储“”读取密钥失败:密钥库被篡改,或密码不正确

感谢您的意见!

【问题讨论】:

  • 我也有同样的问题,但还没解决:(
  • 我尝试在 android Studio 中使用 Build>Generate Signed APK" 对 APK 进行签名。有趣的是签名成功。但是当我使用 gradle task "assmbleRelease" 时出现上述错误。现在我创建了一个在 QA 期间启用自动部署的新密钥。在我找到解决方案之前只是一个解决方法
  • @Marky17 和其他有同样问题的人:我遇到了这个问题,因为我输入的“密钥别名”在密钥库中不存在。 This answer 帮了我。

标签: android apk android-gradle-plugin


【解决方案1】:

我的问题是我输入了一个随机的keyAlias。尝试使用 IDE(IntlliJ Idea 和 Android Studio:构建菜单 -> 生成签名的 APK)对 apk 进行签名时,通过单击用于输入密钥别名的文本框旁边的椭圆按钮 (...),我找到了正确的密钥别名我之前为我的密钥库设置的。仔细检查您没有为密钥库输入一些临时随机密码和 keyAlias,因为它们应该与您在创建密钥库时为密钥库设置的密码和密钥别名相同。

如果您忘记了密码或密钥别名,恐怕您必须创建一个新的密钥库,因为没有这些您将无法读取您的密钥库。我建议将这两个属性(并附加您的密钥库文件)保存在 Lastpass 之类的密码管理器中,以备将来使用。

【讨论】:

  • 你节省了我很多时间!正在使用我的一个旧 apk。谢谢!
【解决方案2】:

我使用双引号和别名和密码,如下所示

storePassword="spass"
keyAlias="kalias"
keyPassword="kpass"

删除双引号解决了我的问题

storePassword=spass
keyAlias=kalias
keyPassword=kpass

【讨论】:

  • 谢谢。令人惊讶的是,烤盘不检查报价,但它真的很有帮助
  • 谢谢。删除双引号后。我的问题解决了。
【解决方案3】:

我的问题是 gradle.properties 文件中有多余的空格。所以如果你有这样的条目:

MYAPP_RELEASE_KEY_ALIAS=my-key-alias(\s)(\r\n)

确保所有条目都没有前导空格:

MYAPP_RELEASE_KEY_ALIAS=my-key-alias(\r\n)

【讨论】:

    【解决方案4】:

    我还没有完全解决这个问题,但我认为它与 'Telegram\TMessagesProj\build.gradle' 中的以下条目有关:

    signingConfigs {
        debug {
            storeFile file("config/release.keystore")
            storePassword RELEASE_STORE_PASSWORD
            keyAlias RELEASE_KEY_ALIAS
            keyPassword RELEASE_KEY_PASSWORD
        }
    
        release {
            storeFile file("config/release.keystore")
            storePassword RELEASE_STORE_PASSWORD
            keyAlias RELEASE_KEY_ALIAS
            keyPassword RELEASE_KEY_PASSWORD
        }
    }
    

    请注意,DEBUG 配置为我们设置了“release.keystore”。

    密码和别名存储在“Telegram\gradle.properties”中,通过将这些更改为我在签署 APK 时使用的密码和将调试行更改为指向您自己的签名密钥(通过 Android 创建),我取得了一些成功工作室)。

    例如将行改为

    调试{ storeFile 文件(“路径/to/your/signing/key/ApkSigning.jks”) ... }

    并在gradle属性文件中设置相应的密码和别名。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-25
      • 2012-03-07
      • 1970-01-01
      • 1970-01-01
      • 2015-09-13
      • 1970-01-01
      • 2016-06-11
      • 1970-01-01
      相关资源
      最近更新 更多