发布签名Android Release Build"无法从密钥库读取密钥"

Has*_*niK 13 android apk android-gradle-plugin

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

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

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

RELEASE_STORE_FILE=filename.keystore
RELEASE_STORE_PASSWORD=****
RELEASE_KEY_ALIAS=alias
RELEASE_KEY_PASSWORD=****
Run Code Online (Sandbox Code Playgroud)

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

signingConfigs {
        release {

            storeFile file(RELEASE_STORE_FILE)
            storePassword RELEASE_STORE_PASSWORD
            keyAlias RELEASE_KEY_ALIAS
            keyPassword RELEASE_KEY_PASSWORD
        }
    }
Run Code Online (Sandbox Code Playgroud)

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

 buildTypes {
    release {
        signingConfig signingConfigs.release
    }
 }
Run Code Online (Sandbox Code Playgroud)

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

Error:Execution failed for task ':app:package<flavor>Release'.
> Failed to read key from keystore
Run Code Online (Sandbox Code Playgroud)

我试过跟随

  • 提供错误的密码以查看是否可以找到该文件.如果我认为可以找到该文件,则会给出以下错误和正确的路径.

    无法从商店""读取密钥:密钥库被篡改,或密码不正确

感谢您的意见!

Jav*_*deh 26

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

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


Ala*_*pin 6

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

MYAPP_RELEASE_KEY_ALIAS=my-key-alias(\s)(\r\n)
Run Code Online (Sandbox Code Playgroud)

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

MYAPP_RELEASE_KEY_ALIAS=my-key-alias(\r\n)
Run Code Online (Sandbox Code Playgroud)


Vas*_*dev 6

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

storePassword="spass"
keyAlias="kalias"
keyPassword="kpass"
Run Code Online (Sandbox Code Playgroud)

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

storePassword=spass
keyAlias=kalias
keyPassword=kpass
Run Code Online (Sandbox Code Playgroud)