繁体   English   中英

签署Android版本Build时出现问题“无法从密钥库读取密钥”

[英]Issue signing Android Release Build “ Failed to read key from keystore”

我正在使用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

我尝试了以下

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

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

感谢您的投入!

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

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

我的问题是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

我尚未完全解决此问题,但我认为它与“ 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 Studio创建),我取得了一些成功。

例如,将行更改为

调试{storeFile file(“路径/到/您/签名/密钥/ApkSigning.jks”)...}

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

希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM