签署 Android 发行版内部版本" Failed to read key from keystore"时出现问题



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

我已将密钥库文件保存在项目/应用程序/文件名.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(IntlliJ Idea 和 Android Studio:构建菜单 ->生成已签名的 APK(对 apk 进行签名时,通过单击用于输入密钥别名的文本框旁边的省略号按钮 ( ... (,我找到了之前为密钥库设置的正确密钥别名。仔细检查您是否没有为密钥库输入一些临时随机密码和密钥别名,因为它们应与您在创建密钥库时为密钥库设置的密码和密钥别名相同。

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

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

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

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

storePassword=spass
keyAlias=kalias
keyPassword=kpass

我的问题是我在gradle.properties文件中有额外的空格。因此,如果您有这样的条目:

MYAPP_RELEASE_KEY_ALIAS=my-key-alias(s)(rn)

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

MYAPP_RELEASE_KEY_ALIAS=my-key-alias(rn)

我还没有完全解决这个问题,但我认为它与"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("path/to/your/signing/key/ApkSigning.jks"( ...}

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

希望有帮助。

最新更新