如何在 android 工作室(从 Eclipse 迁移)中检索签名 APK 的密钥别名和密钥密码

How to retrieve Key Alias and Key Password for signed APK in android studio(migrated from Eclipse)

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

在项目上按right-mouse,'Android tools' -> 导出已签名的应用程序包 提供密钥库密码 签署您的应用程序 将 apk 文件上传到 Google Play Developer Console

最近我将项目从 Eclipse 导入到 Android Studio 并继续在 Android Studio 上工作。现在我打算在应用程序中推出修复程序。我想我可以选择在 android studio

中签署 apk

构建 -> 生成签名 apk ->

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

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

how to retrieve keystore password

您无法找回密码。它不会以任何形式存储在密钥库文件中,因此无法检索任何内容。如果您忘记了密码,那您就完蛋了。

how to retrieve key alias

$ keytool -list -v -keystore <store>

但是您首先需要密钥库密码。

编辑

What I don't remember is the 'Key Password'

无法恢复密码。如果您永远忘记了密钥密码,那么您也注定要失败,除了更加努力地回忆它或尝试一些蛮力尝试之外别无他法,因为 keytool 不会在那里限制您,因此根据您的需要(和绝望)您可以尝试一下,但总的来说事情看起来并不乐观。也没有密码重置之类的东西。

请注意,如果您永远忘记了密码,那么您将无法对已发布的应用程序发布任何更新 (docs):

Warning: Keep your keystore and private key in a safe and secure place, and ensure that you have secure backups of them. If you publish an app to Google Play and then lose the key with which you signed your app, you will not be able to publish any updates to your app, since you must always sign all versions of your app with the same key.

我终于想通了。

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

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

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

我启动了控制台实用程序并向下滚动到 ~/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.14.1\taskArtifacts\taskArtifacts.bin ..taskHistory\taskHistory.bin

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

进行搜索

注:我也遇到过,我能找到。如果您没有找到,可能是您清除了所有缓存和临时文件。

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

来自 windows 文件资源管理器 c:/Users/your 电脑名称/.AndroidStudio1.4(您的 android 工作室版本)\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

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

如果查看日志没有帮助,您也可以尝试暴力破解密码 - 检查方法 3 post - Android KeyStore Password Recover.

这个 SO post 也有更多答案。

只需要用notepad++打开密钥文件(.jks文件)。你会在第一行得到别名...

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

Project\.gradle.14.1\taskArtifacts\taskArtifacts.bin 打开文件并使用您记得的密码部分进行搜索。你一定会找到的。

另外,你可以参考这个答案whosebug.com/a/43007357/7089151

在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

您可以通过以下方式在不使用密码的情况下找到您的密钥库详细信息。

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

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

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

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

***************** WARNING WARNING WARNING *****************

  • The integrity of the information stored in your keystore *

  • has NOT been verified! In order to verify its integrity, *

  • you must provide your keystore password. *

***************** WARNING WARNING WARNING *****************

Keystore type: JKS Keystore provider: SUN

Your keystore contains 1 entry

samplekey, Apr 26, 2017, PrivateKeyEntry, Certificate fingerprint (SHA1): XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX

只需用记事本打开 yourApp.jks 文件,您就会在那里找到密钥库和别名!

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

Project\.gradle.14.1\taskArtifacts\taskArtifacts.bin

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

Project\.gradle.1.1\executionHistory\executionHistory.bin

打开文件并搜索您记得的密码部分。

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

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

注:我也遇到过同样的事情,在上面的路径下都能找到。如果您没有找到,可能是因为您清除了所有缓存和临时文件。

只恢复密钥别名。在终端上输入以下命令。

$ keytool -list -v -keystore <storekey>

开始会给出信息,

Your keystore contains 2 entries...

您可以在那里查找别名。

您可能想试试这个密码破解器。

http://maxcamillo.github.io/android-keystore-password-recover/index.html

我使用的是字典攻击方法。它对我有用,因为我能想到的密码组合只有几种。

AndroidStudio 3.0以下工作方式:
找到您的旧压缩项目。
如果您已经构建了 apk,您将在文件中找到密码:

Project\.gradle.14.1\taskArtifacts\taskArtifacts.bin

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

如果您没有压缩项目,请搜索您的 git 存储库(如果您有或没有推送 .gradle 文件夹。
否则,您将必须恢复文件并按内容搜索文件 "Pandroid.injected.signing.store.password"。

恢复您的密钥库密码

100% 工作

Projects->taskHistory.bin

Find->KeyAlias

注意:点击查看我的图片供大家参考

无论如何,您对 password.You 可以使用命中和试用感到困惑。 它会要求你 password.If 然后它会告诉你列表。

  • 列表项

$ keytool -list -v -keystore 文件名

如果您碰巧使用的是 MacOS 并在 Android Studio 中勾选了 "save password" 框,您可以从钥匙串访问中恢复密码。

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

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

keytool -list -v -keystore keystore_name.jks

我尝试了很多解决方法,只有适合我的方法,我会与您分享

Ctrl + F

搜索

点击KeyAlias你就会知道别名

不要在所有这些解决方案上浪费时间,它们不再有效 google 设法修复了所有这些漏洞并加密了所有提到的文件的密码。只需联系 google support,创建一个新的 Keystore 文件并将其发送给他们,他们将为您的应用更新它。

有一种方法可以重设密码。

转到此 link,描述您的问题(忘记 KeyStore 密码)并生成令牌。 https://support.google.com/googleplay/android-developer/contact/otherbugs

如果幸运的话,1 小时内您将获得重播。 (一般最多需要2天)。

您需要生成一个新密钥和upload_certificate.pem并将其发送到google进行重置.您将在邮件中获得说明。

要生成 upload_certificate.pem,请转到 android 工作室终端并输入:

keytool -export -rfc -alias upload -file upload_certificate.pem -keystore keystore.jks

上传密钥丢失或泄露? 如果您丢失了私人上传密钥或遭到泄露,您可以创建一个新密钥,然后让您的帐户所有者联系支持人员以重置密钥。联系支持人员时,请确保您的帐户所有者附上 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

  • 参见:最佳做法

获取 MacO 上的密钥别名或Linux:

keytool -list -v -keystore <name>.keystore(or .jks)

它会要求你输入你的 key password

如果您的密钥文件名没有扩展名,只需粘贴 <name>


感谢亲爱的