如何在Android Studio中检索签名的APK的密钥别名和密钥密码(从Eclipse迁移)


89

我目前在Google Play中发布了一个android应用,该应用会定期更新。我会按照以下过程在新推送之前对应用程序进行签名:

在项目上按鼠标右键,在“ Android工具”->导出已签名的应用程序包中提供密钥库密码对您的应用程序签名将apk文件上传到Google Play开发者控制台

最近,我已将项目从Eclipse导入到Android Studio,并继续在Android Studio上工作。现在,我计划在应用程序中推送修复程序。我已经知道我可以使用此选项在android studio中签名apk

生成->生成签名的APK->在此处输入图片说明

据我了解,对于我的Android应用程序,我必须使用与之前用于将更新推送到Google Play相同的密钥存储区和密钥存储区密码。同样在这里,它要求提供密钥别名和密钥密码。我不记得在Eclipse中对apk签名时的密钥别名和密钥密码(图像中输入的数字4)。有什么建议我现在可以做什么?如果我已经知道我的密钥库和密钥库密码,是否可以检索密钥别名和别名密钥密码?

更新:现在我可以通过keytool -list -v -keystore name.keystore命令检索我的密钥别名了


“在Eclipse中签名apk时,没有任何选项可以用作密钥别名或密钥密码” –在我的Eclipse中带有ADT插件。实际上,没有别名就无法创建密钥。
CommonsWare 2015年

在那种情况下,我可能不记得了。您能否告诉我们如何检索Key别名?
MSIslam 2015年

2
如果您具有密钥库密码,则keytool可能能够列出别名。自从我keytool手动弄乱以来已经有一段时间了。
CommonsWare 2015年

1
不,创建新密钥是不可行的,除非您想更改为新密钥并强迫用户丢失其应用数据(至少是那些通过Play商店获得该应用的用户),以替换现有的应用。一个不同的名字。您当前使用的文档很可能存储在项目元数据中的某个位置,很可能是纯文本格式。
克里斯·斯特拉顿

3
我实际上可以通过keytool -list -v -keystore name.keystore命令检索别名。现在,我需要检索密码。有什么方法可以检索别名密钥密码?
MSIslam

Answers:


159

在Mac上,在更新Android Studio之前,我在较早的日志报告中找到了密钥库文件路径,密码,密钥别名和密钥密码。

我启动了控制台实用程序,然后向下滚动到〜/ Library / Logs-> AndroidStudioBeta-> idea.log.1(或任何旧的日志号)

然后,我搜索了“ android.injected.signing.store”,并从较早的日期开始发现了它:

-Pandroid.injected.signing.store.file=/Users/myuserid/AndroidStudioProjects/keystore/keystore.jks, 
-Pandroid.injected.signing.store.password=mystorepassword, 
-Pandroid.injected.signing.key.alias=myandroidkey, 
-Pandroid.injected.signing.key.password=mykeypassword,

在Windows上

您可以在以下路径中找到丢失的密钥密码

Project\.gradle\2.14.1\taskArtifacts\taskArtifacts.bin 要么 ..taskHistory\taskHistory.bin

这是文件夹结构中路径视图的图像

使用适当的工具(例如NotePad ++)打开文件,然后使用您记得的部分密码进行搜索。您一定会找到它的。否则,请尝试使用此字符串“ signingConfig.storePassword”进行搜索。

注意:我也经历过同样的事情,并且能够找到它。如果找不到,则清除所有缓存和临时文件。


14
你是神 如果您使用的是Windows,请转到.AndroidStudioX.X (x.x is the version number eg 1.5) > system > log > idea
Pztar '16

10
哇!你救了我的日子,我的月和年!太棒了!:)但在我的情况下(Android 2.2),密码显示为:********。在Windows上C:\Users\yourUser\.Android2.2\system\log\idea.log.1
弗朗西斯科·罗梅罗

7
@ Error404密码显示在第一个*****部分的正下方。它在Android 2.2上与我一起使用
Montolide '16

1
^^ @grant抱歉,但我忘了在此加上您的标签...以防万一您仍然遇到问题
Kmanc '17

7
不幸的是,它不适用于Windows和Android Studio 3.3。用********隐藏的密码
D.Zotov

120

我终于可以解决这个问题。

获取密钥别名:我将keytool.exe和密钥库文件复制到C:\ Program Files \ Java \ jdk1.7.0_71 \ bin文件夹中。然后在命令提示符下我写道:keytool -list -v -keystore <name>.keystore 它还将询问密钥库密码。然后它将显示密钥别名和证书指纹以及其他信息。

然后,我再次尝试为该项目生成Signed Apk,我提供了密钥库,密钥库密码,密钥别名并提供了相同的密码。然后它要求输入主密码,我尝试用它输入,但失败了。使用重置选项,我在此处重置主密码。


@JoelDean,您能提供更多细节吗?您是否可以使用此方法重置或检索密钥库别名密码?还是只是别名?
rgamber

我记得密码,因此可以使用此方法检索别名。
乔尔·迪恩

您能解释答案的第二部分吗?您让我迷失了“并提供了相同的密码”
Muhammed Refaat

1
@MuhammedRefaat与密钥库密码相同的密码
MSIslam 2016年

1
我知道我的密钥库密码,但不知道密钥库路径,您能在哪里找到我吗?我只知道我的jks文件路径,密钥库密码和密钥别名,但不记得密钥密码。请帮忙
Rajkumar Gour,

52

如何检索密钥库密码

您无法检索密码。如果忘记了,那注定了。

如何获取密钥别名

$ keytool -list -v -keystore <store>

但是首先需要为此提供密钥库密码。

编辑

我不记得是“密钥密码”

无法恢复密码。如果您忘记了密钥密码,那么您也将注定要失败,别无他法。没有密码重置之类的东西。

请注意,如果您忘记了密码,那么您将不会对您的应用程序(docs)进行进一步的更新:

警告:将您的密钥库和私钥保存在安全的地方,并确保您有安全的备份。如果您将某个应用发布到Google Play,然后丢失了用来签署该应用的密钥,则您将无法发布该应用的任何更新,因为您必须始终使用同一密钥对所有版本的应用进行签名。


2
我记得密钥库密码。我也有密钥库,现在我还记得密钥别名。我不记得是“密钥密码”(问题图像中的数字4框)。
MSIslam 2015年

谢谢你的回答。投票了 实际上,您之前提到的方法与之前一样,实际上都得到了密钥别名。我面临的问题是密钥别名密码。
MSIslam 2015年

但这只为您提供有关包括指纹在内的钥匙的信息,而没有给您密码本身,这是我在此遗漏的吗?
Muhammed Refaat

密钥工具也存在于Mac
亚诺什

只要您不完全格式化硬盘并删除IDE,就可以始终恢复密码。正如@Distjoy在下面说明的那样,我一直都使用这种方式来恢复密码。
XIII

24

在Windows中-只需在记事本中打开密钥库文件,并且在第一行-您就可以看到用英文字母写的别名。


3
在Mac上,您可以使用TextEdit
Leo Droidcoder

24

恢复您的密钥库密码

100%工作

Projects->taskHistory.bin

在此处输入图片说明

Find->KeyAlias

在此处输入图片说明

注意:单击并查看我的图像以供参考

现在,用于更新的android studio任务历史记录已更改为执行历史记录[!


到目前为止,这是最简单的方法。
JPritchard9518

16

根据gkemp的答案,在Windows上,在更新Android Studio之前,我在较早的日志报告中找到了密钥库文件路径,密码,密钥别名和密钥密码。

从Windows文件资源管理器c:/用户/您的PC名称/.AndroidStudio1.4(您的Android Studio版本)\ system \ log \ idea.log.1(或任何旧的日志编号)

然后,我搜索了“ android.injected.signing.store”,并从较早的日期开始发现了它:

-Pandroid.injected.signing.store.file= path to your keystore 
-Pandroid.injected.signing.store.password=yourstorepassword
-Pandroid.injected.signing.key.alias=yourkeyalias
-Pandroid.injected.signing.key.password=yourkeypassword

14

在ubuntu中,我们可以从给定路径中找到与密钥库相关的所有密码。

/home/user/.AndroidStudio2.2(current version)/system/log/idea.log.x(older versions)

编辑文件并搜索android.injected.signing.store,然后可以找到密码。

-Pandroid.injected.signing.store.file= path to your keystore 
-Pandroid.injected.signing.store.password=yourstorepassword
-Pandroid.injected.signing.key.alias=yourkeyalias
-Pandroid.injected.signing.key.password=yourkeypassword

14

仅还原关键别名。在终端上键入以下命令。

$ keytool -list -v -keystore <storekey>

它将开始提供信息,

您的密钥库包含2个条目...

您可以在此处查找别名。


10

我在以下路径中找到了我的密钥密码

Project\.gradle\2.14.1\taskArtifacts\taskArtifacts.bin 打开文件,然后使用您记得的一部分密码进行搜索。您一定会找到它的。

另外,您可以参考此答案stackoverflow.com/a/43007357/7089151


1
在android studio 3.0上找不到此文件,请让我知道如何获取。
彼得

@Peter请参阅:stackoverflow.com/a/43007357/7089151 在您的项目结构中探索taskArtifacts.bin。版本号可能会更改,但您所需要做的就是找到taskArtifacts.bin
Maharshi Adiraju,2018年

1
如果taskArtifacts文件夹不存在,请在文本编辑器中打开taskHistory / taskHistory.bin文件,并搜索您记得的pwd部分。
Advait S '18年

1
你们对如何找到密钥密码有任何想法吗?我有storePassword,但没有KeyPassword。
sommesh

9

是的,您可以在Android Studio的任务工件中找到丢失的密钥。

Project\.gradle\2.14.1\taskArtifacts\taskArtifacts.bin

对于更新版本的android studio,路径为:

Project\.gradle\5.1.1\executionHistory\executionHistory.bin

打开文件,然后使用您记得的一部分密码进行搜索。

示例(将在该bin文件中): signingConfig.keyAlias�"key name"�signingConfig.keyPassword�"key password"�signingConfig.storePassword�"Store Password"�

您可以使用此字符串“ signingConfig.storePassword”或示例字符串中提供的任何字符串进行搜索

注意:我也经历过同样的事情,并且可以在上述路径中找到它。如果找不到,则清除所有缓存和临时文件。



5

只需使用notepad ++打开密钥文件(.jks文件)。您将在第一行中获得别名。


这不会带来任何新的变化,Lucky Rana已经对此进行了介绍。
EduardoHernández19年

5

您可以按以下方式查找密钥库详细信息,而无需使用密码。

执行命令(keytool -list -keystore <path>在命令提示符下)

您可以在我的机器的java文件夹中找到Keytool,可以从以下路径找到

C:\Program Files (x86)\Java\jdk1.7.0_71\bin> keytool -list -keystore C:\<YourKeystore>.Keystore

然后,它将要求您输入密码,在这里您不需要输入密码,而只需按向上箭头按钮并输入。然后将显示以下相同的详细信息和警告消息。

*****************警告警告警告*****************

  • 存储在密钥库中的信息的完整性*

  • 尚未验证!为了验证其完整性,*

  • 您必须提供密钥库密码。*

*****************警告警告警告*****************

密钥库类型:JKS密钥库提供者:SUN

您的密钥库包含1个条目

samplekey,2017年4月26日,PrivateKeyEntry,证书指纹(SHA1):XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX :XX:XX


谢谢您的帮助。是的,它写在最上面。您可以在记事本上打开它
-Mudasar

5

只需使用记事本打开yourApp.jks文件,您将在其中找到Keystore和Alias名称!


1
其加密。在记事本中打开时,您无法阅读字符。
Abhinav Raja

尽管这样做确实可以让您知道别名是什么,因为别名在.jks中保持未加密状态,但这并不能使您更接近发现丢失的密码。
埃文

1
找到别名,是的!并记住密码。
eric

5

如果您恰巧在MacOS上并选中了Android Studio中的“保存密码”框,则可以从钥匙串访问中恢复密码。

  1. 从应用程序/实用程序启动钥匙串访问。
  2. 在左侧面板的“类别”中选择密码。
  3. 在右上角的搜索框中,输入您的Android应用名称或应用名称的一部分。
  4. 如果您已保存密码,将看到结果行。
  5. 双击它,选中显示密码复选框,在询问时输入系统密码,它将显示您的密钥库密码。

5

不幸的是,以上提供的解决方案并不适合初学者。

它的

keytool -list -v -keystore keystore_name.jks

1
如果您记得密钥存储区密码,上述解决方案将为您提供keyAlias。
shahil

1

Android Studio 3.0下面的工作方法:
查找旧的压缩项目。
如果您已经构建了apk,则会在文件中找到密码:

Project\.gradle\2.14.1\taskArtifacts\taskArtifacts.bin

Pandroid.injected.signing.store.password =密码

如果您没有压缩项目,请搜索您的git存储库,无论是否已推送.gradle文件夹。
否则,您将必须通过“ Pandroid.injected.signing.store.password”内容恢复文件并搜索文件。



0

无论如何,您都对密码感到困惑。您可以使用点击和试用。它将要求您输入密码。如果正确,则会显示列表。

  • 项目清单

$ keytool -list -v -keystore文件名



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.