Android Studio:无法恢复密钥


94

我搜索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,密钥密码,密钥库密码。一切都正确。我想念什么?我备份了所有文件,因此,如果需要特定文件,可以找到它,但是我不知道该怎么办...

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


2
如果您在密钥库密码中使用了字符&或@,则不要向下滚动到答案部分,请跳至此链接,以获取sharma的答案。
meyasir

Answers:


115

我对此并不感到惊讶,这并不奇怪,但是对于那些偶然发现这篇文章的人,这就是我所做的。

正如我所说,所有文件都已备份。我从旧的备份中还原了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]

密钥库和密钥密码必须相同!这解决了我的问题,希望对您有所帮助。


5
谢谢!您是如何发现密码必须相同的?我今天开始收到此错误。到目前为止,使用两个不同的密码都可以正常工作。
阿伦·西尔雅克 Alen Siljak)2015年

6
我的密码相同,但仍然出现此错误。我能够使用相同的密钥签名以前的版本。现在我该怎么办?
塔莎·戈格纳

1
我一直面临着同样的问题。前天,我已经成功生成了签名的APK,今天又再次生成了同一问题。任何人都可以永久解决!

4
在我的情况下,它仍然给出此错误:“ keytool错误:java.security.UnrecoverableKeyException:无法恢复密钥”
0xAliHn

1
对我来说,同样的问题。执行第一行后,它要求输入密码。我给了它,但随后它说“ keytool错误... keystore被篡改或密码不正确”
Ammar Bukhari

64

[更新:此功能不再适用于Android Studio 3.0及更高版本]

我遇到了类似的问题,在Internet上浪费了3个小时之后,所有解决方案都没有起作用,我决定深入研究。

这是我的解决方法:对我来说,“无法恢复密钥”错误是因为我的“密钥库密码”正确,但是(密钥别名的)“密钥密码”不正确。我非常确定两个密码相同,但令我沮丧的是,两个密码都不相同,我也不知道第二个密码是什么。由于在签出日志文件之前已经对APK进行了签名,因此可以找到:

  • C:\ Users \您的用户名\ .AndroidStudio2.1 \ system \ log \

从您签署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***, 

您会以纯文本形式找到密码。如果您忘记密码,这甚至可以工作。


3
是!最后!我的密码在您提到的文件夹内的“ idea”文件中。我什至尝试使用密码破解程序,但它给了我Alias通行证,尽管我是密钥库的通行证,但事实并非如此。
乔治

谢谢!我使用的master password是在签署apk时输入的,但是我只需要重复key password
JCarlosR

我从未见过日志文件。检查日志文件为我提供了非常有力的线索。谢谢。
hata

6
这对AndroidStudio3.0有用吗?我看到的密码为*********。
TheLearner 2017年

2
@Androidcoder Android Studio团队在最新版本中修复了此漏洞。
Build3r

24

如果它可以帮助任何人-我的问题是“密钥库密码”和“密钥密码”不正确。


12

我尝试了所有给出的建议的答案和评论:(

我的密钥密码和密钥库密码完全相同。使用Android Studio 3.4

对我有用的是强制退出Android Studio,重新启动,清理并重建项目,然后生成签名的APK。所有CONFIGS一模一样,但它的工作这一次


3
我清理并重建了项目,然后工作正常。+1
sanjeeb,

1
这对我有用。对于IDE来说,搞乱关键信息的管理并不是一个很酷的“功能”。
马克·安德烈·韦伯赞

在Android Studio 3.6.2 PS中确认我爱你
bjm904

9

[Android Studio 3.3]生成签名的APK时出现“无法恢复密钥”错误。我能在我的密码的正确性旧的idea.log检查:密钥存储和密钥密码相同的,正确的。

在终端中更新密钥密码:

keytool -keypasswd -alias MYKEY -keystore KEYSTORE

似乎不再可能具有用于密钥库和密钥的相同密码。尝试时,keytool给我一个错误。在为密钥设置了不同的密码后,Android Studio生成了一个签名的APK。

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


我在2周前更新了我的应用,但今天无法正常工作。我使用它来更改密码,使其相同,并更新了Android Studio,现在我实现了一个新版本。
亚历杭德罗·坎帕

在@ Build3r的答案和此答案之间,我能够将两个密码设置为不同的可接受值,并成功签署了我的应用程序。多谢你们!
Peter Gluck

3

它可以帮助某人。

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

然后在生成签名的apk时,我输入了这些凭据,但是失败了。

我已将jks文件放置在app文件夹中。我从那里删除,并创造了在Android项目的根文件夹单独的文件夹,并放置JKS文件存在。

然后,我尝试清理,重建项目,然后重新启动android studio。 最后,它建立了签名的apk:D


2

仅当您的密钥密码或密钥库密码不匹配时,才会发生此问题。


2

我的密码相同,但仍然出现此错误。清理,重建和重新启动Android Studio对我不起作用。对我而言唯一有效的解决方案是将keystore.jks文件移动到新位置。希望这可以帮助。


1

我刚刚从我的应用gradle文件中删除了signingConfigs部分。然后重新构建该项目,它再次起作用。


0

我很幸运地在Android Studio中检查了“项目结构/签名”选项卡,并找到了以纯文本形式列出的密钥密码和存储密码。我以为它们彼此相同,但事实并非如此。


0

如果您正在运行日食,请尝试将其关闭并再次生成签名的apk。

就我而言,我检查了所有密码是否正确,甚至从Android Studio生成了新的密钥存储区。它仍然没有用,但是在我关闭正在运行的eclipse之后,一切都可以用我使用的旧密钥库或新生成的密钥库工作。


0

首次创建签名文件之前,我已经对其进行了压缩。当我收到此错误时,我再次使用它。如果有备份,可以使用它。我认为我们已经打破了事情,直到他们注意到。



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.