APK签名错误:无法从密钥库读取密钥


74

我正在使用intellij和gradle开发android应用。并使用以下方式生成密钥库文件:

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

然后在build.gradle中使用密钥库文件:

signingConfigs {
    robert {
        storePassword 'robert'
        storeFile file('/Users/bournewang/Documents/Project/android.keystore')
        keyPassword 'robert'
        keyAlias 'mike'
    }
}

最终尝试生成签名的apk文件时:./gradlew assembleRelease

它给出了错误:

任务':Myexample:packageRelease'的执行失败。

无法从密钥库读取密钥


1
在gradlew命令行中添加--info和--stacktrace应该会为您提供更多信息,以帮助查明问题所在。
Scott Barta 2013年

2
我正面临这个问题,因为我输入的“密钥别名”在密钥库中不存在。这个答案帮助了我。
Sufian

Answers:


65

首先检查您的密钥库文件,在本示例中,您将创建名称为my-release-key.keystore的文件。如果其正确且确实存在于文件夹 Users/bournewang/Documents/Project检查别名中,则在您的示例中为-alias alias_name,但在配置中,您指定了别名mike


71

为了找出问题所在,您可以使用gradle的signingReport命令。

在Mac上:

./gradlew signingReport

在Windows上:

gradlew signingReport

+1感谢您的提示!通过这种方式,我发现,在运行signingReport时,它确实列出了我的发行签名配置,但仅列出了存储位置,变体,配置和别名。它缺少Sha1,md5和有效期直到。原因是:我的别名错误:)-因此,如果上面的命令列出了整个信息集,则应该全部设置好(变量,配置,存储,别名,md5,sha1,有效期至),如果没有,请确保在项目的build.gradle文件中正确设置了密码,密钥库和别名
AgentKnopf 2015年

1
运行它表明: Variant: release Config: none 我的.keystore是否已删除?
Shajeel Afzal

谢谢一群!gradlew直接位于android studio项目目录中。调用signingReport会发现调试键的别名实际上是“ AndroidDebugKey” ...
hotzen 2015年

还是对我来说(在Android平台总监中)。/gradlew.bat signingReport
csga5000 '16

我使用了错误的别名,并且得到了没有错误但没有所需数据的结果,因此对于那些一开始不知道如何解释报告的人,您的密钥必须在其旁边打印SHA1和MD5值才能考虑正确。
费利佩·萨比诺

8

您的密钥库文件最有可能没有密钥别名。

这个答案应该可以解决您的签名问题;)


为什么我的Android Studio版本4.0.1没有选项
Mike Victoria

5

删除double-quotes解决了我的问题,现在它是:

DEBUG_STORE_PASSWORD=androiddebug
DEBUG_KEY_ALIAS=androiddebug
DEBUG_KEY_PASSWORD=androiddebug

14
您在哪里移走了??在天上??
sajid

3

以我为例,从其他来源复制文本时,它在剪贴板输入的末尾包含了空格。这样,密钥密码末尾会有一个空格。


1

对于不使用签名配置并尝试在命令行中键入所有参数来测试Cordova Release命令的用户,如果密码中包含特殊字符,则可能需要用单引号将密码引起来

cordova run android --release -- --keystore=../my-release-key.keystore --storePassword='password' --alias=alias_name --password='password'

1

重要的是别名或其他密码错误。请检查您的密码,问题就解决了。如果您忘记了密码,则可以从androidStuido3.0 / System / Log中恢复它。


您能否确认我是否要查看的日志文件是否是== idea.log,位于路径== C:\ Users \ xxxx \ .AndroidStudio3.5 \ system \ log \ idea.log
Rohit Dhankar

-1

它可以是任何一个参数,而不仅仅是文件名或别名-对我来说,它是密钥密码。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.