发布“Android发布版本”;无法从密钥库中读取密钥;

发布“Android发布版本”;无法从密钥库中读取密钥;,android,apk,android-gradle-plugin,Android,Apk,Android Gradle Plugin,我正在使用gradle(assembleerelease)生成发布apk 我已将密钥库文件保存在project/app/filename.keystore(应用程序内)中 我已指定与登录gradle.properties文件相关的详细信息 RELEASE_STORE_FILE=filename.keystore RELEASE_STORE_PASSWORD=**** RELEASE_KEY_ALIAS=alias RELEASE_KEY_PASSWORD=**** My build.gradl

我正在使用gradle(assembleerelease)生成发布apk

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

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

RELEASE_STORE_FILE=filename.keystore
RELEASE_STORE_PASSWORD=****
RELEASE_KEY_ALIAS=alias
RELEASE_KEY_PASSWORD=****
My 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
错误:任务执行失败:app:packageRelease'。
>无法从密钥库读取密钥
我试着跟随

  • 输入错误的密码以查看是否可以找到该文件。由于我假设可以找到该文件,因此给出了以下错误及其正确路径

    无法从存储“”读取密钥:密钥存储被篡改,或密码不正确


感谢您的意见

我的问题是我输入了一个随机的
keyalis
。当尝试使用IDE(IntlliJ Idea和Android Studio:Build menu->generate signed apk)对apk进行签名时,通过单击用于输入密钥别名的文本框旁边的椭圆按钮(
),我找到了我先前为密钥库设置的正确密钥别名。仔细检查您没有为密钥存储库输入一些特殊的随机密码和密钥别名,因为它们应该与创建密钥存储库时为密钥存储库设置的密码和密钥别名相同


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

我尚未完全解决此问题,但我认为它与“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
    }
}
注意,调试配置被设置为“release.keystore”

密码和别名存储在“Telegram\gradle.properties”中,我成功地将它们更改为我在签署APK时使用的密码,并将调试行更改为指向您自己的签名密钥(通过Android Studio创建)

例如,将线路更改为

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

并在gradle属性文件中设置适当的密码和别名


希望能有所帮助。

我的问题是gradle.properties文件中有多余的空白。因此,如果您有这样的条目:

MYAPP_RELEASE_KEY_ALIAS=my-key-alias(\s)(\r\n)
确保所有条目都没有前导空格:

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

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

storePassword="spass"
keyAlias="kalias"
keyPassword="kpass"
删除双引号解决了我的问题

storePassword=spass
keyAlias=kalias
keyPassword=kpass

我也遇到了同样的问题,但还没有解决:(我尝试在android Studio中使用Build>Generate Signed APK”对APK进行签名。有趣的是,签名成功了。但是当我使用gradle task“assmble release”时“我发现了上面的错误。现在我创建了一个新的密钥,以在qa期间启用自动部署。只是一个解决方案,直到我找到解决方案。”solution@Marky17还有其他人也有同样的问题:我之所以面临这个问题,是因为“密钥别名”我键入的密钥库中不存在。帮了我的忙。伙计,你帮了我很多时间!当时正在使用我的一个旧APK。谢谢!谢谢。令人惊讶的是griddle没有检查引号,但它真的很有用。谢谢。删除双引号后,我的问题解决了。