Android Studio: 无法恢复密钥

我已经搜索 StackOverflow 有一段时间了,但我只是想确认一下..。

我刚刚清空了我的笔记本电脑备份了所有文件。我备份了我的 android jks 文件,它又回来了。当我尝试生成一个签名的 APK 时,它给我带来了每个人都会遇到的同样可怕的错误:

Error:Execution failed for task ':app:packageRelease'.
> Failed to read key conjugationappkey from store
"/Users/wasimsandhu/android.jks": Cannot recover key

我有 android.jks 密钥密码,密钥存储密码。一切正常。我错过了什么?我备份了我所有的文件,所以如果有我需要的特定文件,我可以找到它,但我不知道该怎么办..。

如果我没有任何意义,请让我澄清。谢谢!

100308 次浏览

我并不惊讶这篇文章没有得到任何关注,但是这里是我为那些偶然发现这篇文章的人所做的。

如前所述,我所有的文件都备份了。从旧备份中还原了 android.jks 文件。然后,我打开一个终端窗口,输入以下内容:

keytool -storepasswd -new [insert new keystore password] -keystore [insert keystore file name]


keytool -keypasswd -alias [insert alias] -new [insert new key password] -keystore [insert keystore file name]

密钥存储库和密钥密码必须是相同的!这解决了我的问题,我希望它也能帮到你。

[Update: This no longer works in Android studio 3.0 and above]

我也遇到过类似的问题,但是在网上浪费了3个小时之后,没有一个解决方案是有效的,所以我决定深入研究一下。

我是这样解决的: “无法恢复键”错误是因为我的 “密钥存储库密码”是正确的“密钥密码”(密钥别名)不正确。我很确定两个密码是一样的,但令我沮丧的是,它们不是,我不知道第二个密码是什么。因为我已经签署了一个 APK 之前,我检查了日志文件 可以找到:

  • C: 用户 your _ username. AndroidStudio2.1系统日志

打开您签署 apk 之日起的日志文件,查找以下条目:

 INFO - .project.GradleExecutionHelper - Passing command-line args to Gradle Tooling API: [--configure-on-demand, -Pandroid.injected.invoked.from.ide=true,
-Pandroid.injected.signing.store.file=E:\HobbyProjects\XYZProject\gpsjs.jks,
-Pandroid.injected.signing.store.password=***KeyStorePassword***,
-Pandroid.injected.signing.key.alias=***alias_name***,
-Pandroid.injected.signing.key.password=***Key password***,

你会发现密码是纯文本的。 这甚至可以在你忘记密码的情况下工作。

如果它可以帮助任何人-在我的情况下的问题是,“密钥存储密码”和“密钥密码”是不正确的。

我很幸运地在 Android Studio 中检查了项目结构/签名选项卡,并找到了明文列出的密钥密码和存储密码。我以为他们是一样的,但他们不是。

仅当密钥密码或密钥存储库密码不匹配时才发生此问题。

如果您正在运行 Eclipse,请尝试关闭它并再次生成一个带签名的 apk。

在我的例子中,我检查了所有的密码是否正确,甚至从 Android 工作室生成了一个新的密钥存储库。它仍然没有工作,但是在我关闭正在运行的 eclipse 之后,所有的东西都工作了,使用我使用的旧密钥存储库或者新生成的密钥存储库。

[ Android Studio 3.3] I got the 'cannot recover key' error on generating a signed APK. I was able to check in an older idea.log for the correctness of my password: Key Store and Key passwords 曾经是 identical and correct.

更新终端中的密钥密码:

keytool -keypasswd -alias MYKEY -keystore KEYSTORE

密钥存储库和密钥似乎不再可能有相同的密码。当我尝试时,键盘工具给了我一个错误。在为密钥设置了不同的密码之后,Android Studio 生成了一个带签名的 APK。

也许,在以前的 Android Studio 版本中,密码必须是相同的——现在可能正好相反。

在我第一次创建我的签名文件之前,我已经压缩了它。当我得到这个错误,我再次使用它。如果你有备份的话,你可以用它。我觉得我们在他们发现之前就把东西弄坏了。

也许能帮到别人。

几天前,我在 gitlab 上备份了我的 android 项目,然后安装了 Windows10。 之后我克隆了它,我知道密钥的别名和两个密码的确切位置。

Then while generating signed apk I entered those credentials but failed.

我把 jks 文件放在了应用程序文件夹里。我从那里删除它,并在那里创建 在 android 项目的根文件夹中分离文件夹placed jks file

然后我尝试 < strong > clean,重建项目,然后重新启动 android 工作室。 最后,它构建了签名的 apk: D

我试着在回答和评论中给出所有的建议:

我的密钥密码和密钥存储密码完全相同。 使用安卓工作室3.4

我的工作是 强制退出 Android Studio,重新开始,清理和重建项目,然后生成签名的 apk。所有的配置完全相同,但它 成功了这一次

我也面临着同样的问题。在我的例子中,用 gradle 文件同步项目之后解决了这个问题。这也许能帮到某人。

我的密码是相同的,仍然得到这个错误。清洁,重建和重新启动 Android 工作室不适合我。对我来说唯一有效的解决方案是将 keystore.jks 文件移动到一个新的位置。希望这个能帮上忙。

我刚刚从我的应用程序级别文件中删除了 signingConfigs 部分。 然后重建项目,它再次工作。

我只是删除了我的 项目.iml文件。然后重塑了项目,它再次工作。

在我的例子中,我使用的是 android 工作室4.2.2,我更改了。Jks 文件位置,并把它放到桌面,然后再次尝试生成的关键,它为我工作。

For me the solution was a combination of 2 solutions here. I had to first do a gradle sync:

enter image description here

Then quit, clean and rebuild project.

enter image description here

My passwords never changed. And doing the clean and rebuild without first doing the gradle sync didn't work for me either. Android Studio version 4.1.2.

这是在大约一个月没有生成以前版本的已签名捆绑包之后发生的,以前从未遇到过这种错误。

我尝试了一个干净,重建和梯度同步,但一直得到的 Cannot recover key错误。

File > Invalidate Caches / Restart帮我解决了这个问题。

我不需要改变我的密钥密码或我的 .jks密钥文件。我一直使用我原来的“密钥存储密码”和“密钥密码”(它们是不相同的)。