如何在 android studio 中检索签名 APK 的密钥别名和密钥密码(从 Eclipse 迁移)
Posted
技术标签:
【中文标题】如何在 android studio 中检索签名 APK 的密钥别名和密钥密码(从 Eclipse 迁移)【英文标题】:How to retrieve Key Alias and Key Password for signed APK in android studio(migrated from Eclipse) 【发布时间】:2015-03-18 01:33:13 【问题描述】:我目前在 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 插件。实际上,没有别名是不可能创建密钥的。 那样的话我可能不记得了。您能告诉我如何检索密钥别名吗? 如果您有密钥库密码,keytool
或许能够列出别名。自从我手动弄乱 keytool
已经有一段时间了。
不,创建新密钥是不行的,除非您想更改新密钥并迫使您的用户丢失他们的应用程序数据(至少那些通过 Play 商店获取应用程序的用户)将现有应用替换为具有不同名称的应用。您当前使用的很可能存储在项目元数据中的某个位置,很可能是纯文本。
我实际上可以通过 keytool -list -v -keystore name.keystore 命令检索别名。现在我需要找回密码。有没有办法找回别名密钥密码?
【参考方案1】:
在 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”进行搜索。
注意:我也有同样的经历,我能找到它。如果您没有找到,您可能会清除所有缓存和临时文件。
【讨论】:
你是神。如果您使用的是 Windows,请转到.AndroidStudioX.X (x.x is the version number eg 1.5) > system > log > idea
您可以使用grep -r "android.injected.signing" /home/.AndroidStudio*
在庞大的日志中查找密码
哇!你拯救了我的一天、我的一个月和我的一年!太棒了! :) 但在我的情况下(Android 2.2),密码显示为:********。在 Windows 上C:\Users\yourUser\.Android2.2\system\log\idea.log.1
@Error404 密码显示在第一个 ***** 部分的正下方。它在 Android 2.2 上与我一起工作
很遗憾不能在 Windows 和 Android Studio 3.3 上运行。用 ******** 隐藏的密码【参考方案2】:
我终于可以解决问题了。
要获取密钥别名:我将 keytool.exe 和我的密钥库文件复制到 C:\Program Files\Java\jdk1.7.0_71\bin 文件夹中。然后从命令提示符我写道:keytool -list -v -keystore <name>.keystore
然后它还会询问密钥库密码。然后它会显示密钥别名和证书指纹等信息。
然后我再次尝试为项目生成签名 Apk,我提供了密钥库、密钥库密码、密钥别名并提供了相同的密码。然后它要求输入主密码,我尝试了相同的,但失败了。使用重置选项,我在这里重置主密码。
【讨论】:
@JoelDean,你能提供更多细节吗?您是否能够使用此方法重置或检索您的 keystore 别名密码?还是只是别名? 我记住了密码,所以我可以使用这种方法检索别名。 你能重新解释你答案的第二部分吗?!!你失去了我“并提供了相同的密码” @MuhammedRefaat 密码与密钥库密码相同 我知道我的密钥库密码,但不知道密钥库路径,你能帮我在哪里找到它。我只知道我的 jks 文件路径和密钥库密码和密钥别名,但不记得密钥密码。请帮忙【参考方案3】:如何找回密钥库密码
您无法找回密码。它不会以任何形式存储在密钥库文件中,因此无需检索任何内容。如果你忘记了密码,那你就完蛋了。
如何检索密钥别名
$ keytool -list -v -keystore <store>
但您首先需要密钥库密码。
编辑
我不记得是“密钥密码”
无法恢复密码。如果您永远忘记了密钥密码,那么您也注定要失败,除了努力回忆它或尝试一些蛮力尝试之外别无他法,因为 keytool 不会在那里扼杀您,所以根据您的需要(和绝望),您可以试试看,但总的来说事情看起来并不乐观。也没有密码重置或类似的东西。
请注意,如果您永远忘记了密码,那么您将无法对已发布的应用程序发出进一步的更新 (docs):
警告:将您的密钥库和私钥保存在安全可靠的地方,并确保对它们进行安全备份。如果您将应用发布到 Google Play,然后丢失了您签署应用所用的密钥,您将无法发布对应用的任何更新,因为您必须始终使用相同的密钥签署应用的所有版本。
【讨论】:
我记得密钥库密码。我也有密钥库,现在我记得密钥别名。我不记得是“密钥密码”(相关图像中的第 4 框)。 感谢您的回答。投票。实际上,我之前以与您提到的相同方式获得了密钥别名。我面临的问题是密钥别名密码。 但这只会为您提供有关包括指纹在内的密钥的信息,但不会为您提供密码本身,我在这里遗漏了什么吗? keytool 也适用于 Mac 只要您没有完全格式化您的硬盘并移除您的 IDE,您始终可以恢复您的密码。正如@Distjoy 下面解释的那样,我一直使用这种方式来恢复我的密码。【参考方案4】:恢复您的密钥库密码
100% 正常工作
Projects->taskHistory.bin
Find->KeyAlias
注意:点击查看我的图片供您参考
【讨论】:
密码在较新的版本中被散列了,现在是怎么回事【参考方案5】:在 Windows 中 - 只需在记事本中打开您的密钥库文件,在第一行 - 您可以看到用英文字母书写的别名。
【讨论】:
在 Mac 上,您可以使用 TextEdit 完成此操作【参考方案6】:仅恢复 KEY ALIAS。在终端输入以下命令。
$ keytool -list -v -keystore <storekey>
它会给出启动信息,
您的密钥库包含 2 个条目...
你可以在那里查找别名。
【讨论】:
效果很好!谢谢!【参考方案7】:不幸的是,上面提供的解决方案对初学者不友好。
这是
keytool -list -v -keystore keystore_name.jks
【讨论】:
如果您记住密钥库密码,上述解决方案将为您提供 keyAlias。【参考方案8】:根据 gkemp 的回答,在 Windows 上,我在更新 Android Studio 之前的早期日志报告中找到了密钥库文件路径、密码、密钥别名和密钥密码。
来自 windows 文件资源管理器 c:/Users/您的电脑名称/.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
【讨论】:
【参考方案9】:在ubuntu中,我们可以从给定的路径中找到所有与keystore相关的密码。
/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
【讨论】:
【参考方案10】:我在下面的路径中找到了我的密钥密码
Project\.gradle\2.14.1\taskArtifacts\taskArtifacts.bin
打开文件并使用您记得的密码部分进行搜索。你一定会找到的。
另外,你可以参考这个答案***.com/a/43007357/7089151
【讨论】:
无法在 android studio 3.0 中找到此文件,请告诉我如何获取。 @Peter 请参考:***.com/a/43007357/7089151 在您的项目结构中探索 taskArtifacts.bin。版本号可能会改变,但您需要做的就是找到 taskArtifacts.bin 如果 taskArtifacts 文件夹不存在,请在文本编辑器中打开 taskHistory/taskHistory.bin 文件并搜索您记得的密码部分。 你们知道如何找到密钥密码吗?我有 storePassword 但没有 KeyPassword。【参考方案11】:是的,您可以在 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”或示例字符串中给出的任何字符串进行搜索
注意:我经历过同样的事情,我可以在上面的路径中找到它。如果你没有找到可能是你清除了所有的缓存和临时文件。
【讨论】:
【参考方案12】:如果查看日志没有帮助,您也可以尝试暴力破解密码 - 检查此帖子中的方法 3 - Android KeyStore Password Recover。
这个SO post 也有更多答案。
【讨论】:
【参考方案13】:只要用notepad++打开密钥文件(.jks文件),第一行就会得到别名...
【讨论】:
这并没有带来什么新东西,Lucky Rana 已经涵盖了这个。【参考方案14】:如果您碰巧在 MacOS 上并选中了 Android Studio 中的“保存密码”框,则可以从 Keychain Access 中恢复密码。
-
从应用程序/实用程序启动钥匙串访问。
在左侧面板的类别中选择密码。
在右上角的搜索框中,输入您的 Android 应用名称或应用名称的一部分。
如果您保存了密码,您将看到结果行。
双击它,选中显示密码复选框,在询问时提供您的系统密码,它会显示您的密钥库密码。
【讨论】:
【参考方案15】:您可以通过以下方式在不使用密码的情况下找到您的密钥库详细信息。
在命令提示符下执行命令(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
【讨论】:
感谢您的帮助。是的,它写在最上面一行。你可以在记事本上打开它【参考方案16】:只需用记事本打开 yourApp.jks 文件,您就会在其中找到 Keystore 和别名!!
【讨论】:
已加密。在记事本中打开时无法读取字符。 虽然这确实可以让您找出您的别名,因为别名在 .jks 中仍未加密,但它不会让您更接近发现丢失的密码。【参考方案17】:点击KeyAlias你会知道别名
【讨论】:
非常感谢,你救了我的命【参考方案18】:不要在所有这些解决方案上浪费你的时间,它们不再起作用了,谷歌设法修复了所有这些泄漏并加密了所有提到的文件的密码。只需联系google support,创建一个新的密钥库文件并将其发送给他们,他们将为您的应用更新它。
【讨论】:
【参考方案19】:您可能想试试这个密码破解器。
http://maxcamillo.github.io/android-keystore-password-recover/index.html
我使用的是字典攻击方法。它对我有用,因为我能想到的密码组合只有几个。
【讨论】:
【参考方案20】: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”来恢复文件和搜索文件。
【讨论】:
【参考方案21】:我尝试了很多解决方案,只有那些对我有用,我会与你分享
按 Ctrl + F
搜索【讨论】:
【参考方案22】:有一种方法可以重置密码。
转到此链接,描述您的问题(忘记 KeyStore 密码)并生成令牌。 https://support.google.com/googleplay/android-developer/contact/otherbugs
如果你幸运的话,1 小时内你会得到一个重播。 (通常最多需要 2 天)。
您需要生成一个新密钥和 upload_certificate.pem 并将其发送给 google 以进行重置。您将在邮件中收到说明。
要生成 upload_certificate.pem,请转到 android studio 终端并输入:
keytool -export -rfc -alias upload -file upload_certificate.pem -keystore keystore.jks
【讨论】:
请注意,对于关键问题,现在有一个单独的链接。使用这个:support.google.com/googleplay/android-developer/contact/key【参考方案23】:在任何情况下,您都对自己的密码感到困惑。您可以使用命中和试用。 它会要求您输入密码。如果正确,它将向您显示列表。
列表项$ keytool -list -v -keystore 文件名
【讨论】:
【参考方案24】:上传密钥丢失或泄露? 如果您丢失了私有上传密钥或已被泄露,您可以创建一个新密钥,然后让您的帐户所有者联系支持人员以重置密钥。联系支持人员时,请确保您的帐户所有者附上 upload_certificate.pem 文件。
在我们的支持团队注册新的上传密钥后,您会收到一封电子邮件,然后您可以更新您的密钥库并向 API 提供商注册您的密钥。
重要提示:重置您的上传密钥不会影响 Google Play 用于在将 APK 交付给用户之前对其进行重新签名的应用签名密钥。
来源:https://support.google.com/googleplay/android-developer/answer/9842756?hl=en#zippy=%2Cdescriptions-of-keys-artifacts-and-tools%2Capp-signing-process
请参阅:最佳做法【讨论】:
以上是关于如何在 android studio 中检索签名 APK 的密钥别名和密钥密码(从 Eclipse 迁移)的主要内容,如果未能解决你的问题,请参考以下文章