我目前在 Google Play 中发布了一个 Android 应用程序,我会定期更新它。在新推送之前,我按照以下流程对应用程序进行签名:
在项目上按鼠标右键,“Android 工具”-> 导出已签名的应用程序包 提供密钥库密码 为您的应用程序签名 将 apk 文件上传到 Google Play 开发者控制台
最近我已经将项目从 Eclipse 导入到 Android Studio 并继续在 Android Studio 上工作。现在我打算在应用程序中推送一个修复程序。我想我有这个选项可以在 android studio 中签署 apk
https://i.stack.imgur.com/YgmKd.png
据我了解,对于我的 android 应用程序,我必须使用我之前用于将更新推送到 Google Play 的相同密钥库和密钥库密码。同样在这里它要求输入密钥别名和密钥密码。在 Eclipse 中签名 apk 时,我不记得密钥别名和密钥密码(图像中的数字 4 输入)。有什么建议我现在可以做什么?如果我已经知道我的密钥库和密钥库密码,有没有办法检索密钥别名和别名密钥密码?
更新:现在我可以通过 keytool -list -v -keystore name.keystore 命令检索我的密钥别名
keytool
或许能够列出别名。自从我手动弄乱 keytool
已经有一段时间了。
在 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
https://i.stack.imgur.com/ApIvP.png
使用适当的工具(例如 NotePad++)打开文件并使用您记得的密码部分进行搜索。你一定会找到的。否则,请尝试使用此字符串“signingConfig.storePassword”进行搜索。
注意:我有同样的经历,我能够找到它。如果您没有找到,您可能会清除所有缓存和临时文件。
我终于可以弄清楚这个问题了。
要获取密钥别名: 我将 keytool.exe 和我的密钥库文件复制到 C:\Program Files\Java\jdk1.7.0_71\bin 文件夹中。然后从命令提示符我写道: keytool -list -v -keystore <name>.keystore
然后它还会询问密钥库密码。然后它将向您显示密钥别名和证书指纹和其他信息。
然后我再次尝试为项目生成签名 Apk,我提供了密钥库、密钥库密码、密钥别名并提供了相同的密码。然后它要求输入主密码,我尝试了相同的,但失败了。使用重置选项,我在这里重置主密码。
如何找回密钥库密码
您无法找回密码。它不会以任何形式存储在密钥库文件中,因此无需检索任何内容。如果您忘记了密码,那么您几乎注定要失败。
如何检索密钥别名
$ keytool -list -v -keystore <store>
但是您首先需要密钥库密码。
编辑
我不记得的是“密钥密码”
无法恢复密码。如果您永远忘记了密钥密码,那么您也注定要失败,除了努力回忆它或尝试一些蛮力尝试之外别无他法,因为 keytool 不会在那里扼杀您,所以根据您的需要(和绝望),您可以试试看,但总的来说事情看起来并不乐观。也没有密码重置或类似的东西。
请注意,如果您永远忘记了密码,那么您将无法对已发布的应用程序 (docs) 发出进一步的更新:
警告:将您的密钥库和私钥保存在安全可靠的地方,并确保您拥有它们的安全备份。如果您将应用程序发布到 Google Play,然后丢失了用于签署应用程序的密钥,您将无法发布对应用程序的任何更新,因为您必须始终使用相同的密钥签署应用程序的所有版本。
恢复您的密钥库密码
100% 工作
Projects->taskHistory.bin
https://i.stack.imgur.com/9fBv8.png
Find->KeyAlias
https://i.stack.imgur.com/j24xC.png
注意:单击并查看我的图像供您参考
https://i.stack.imgur.com/M1LwB.png
在 Windows 中 - 只需在记事本中打开您的密钥库文件,然后在第一行 - 您可以看到用英文字母书写的别名。
只恢复KEY ALIAS。在终端上键入以下命令。
$ keytool -list -v -keystore <storekey>
它将提供信息开始,
您的密钥库包含 2 个条目...
您可以在那里查找别名。
不幸的是,上面提供的解决方案对初学者不友好。
它是
keytool -list -v -keystore keystore_name.jks
根据 gkemp 的回答,在 Windows 上,我在更新 Android Studio 之前的早期日志报告中找到了密钥库文件路径、密码、密钥别名和密钥密码。
从 windows 文件资源管理器 c:/Users/your pc name/.AndroidStudio1.4 (your android studio version)\system\log\idea.log.1 (or any old log number)
然后我搜索了“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
在 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
我在下面的路径中找到了我的密钥密码
Project\.gradle\2.14.1\taskArtifacts\taskArtifacts.bin
打开文件并使用您记得的部分密码进行搜索。你一定会找到的。
另外,您可以参考这个答案stackoverflow.com/a/43007357/7089151
是的,您可以在 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”或示例字符串中给出的任何字符串进行搜索
注意:我经历过同样的事情,我可以在上面的路径中找到它。如果您没有找到,您可能会清除所有缓存和临时文件。
只需使用记事本++ 打开密钥文件(.jks 文件)。您将在第一行获得别名...
如果您碰巧在 MacOS 上并选中了 Android Studio 中的“保存密码”框,则可以从 Keychain Access 中恢复密码。
从应用程序/实用程序启动钥匙串访问。在左侧面板的类别中选择密码。在右上角的搜索框中,输入您的 Android 应用名称或应用名称的一部分。如果您保存了密码,您将看到结果行。双击它,选中显示密码复选框,在询问时提供您的系统密码,它将显示您的密钥库密码。
您可以通过以下方式在不使用密码的情况下找到您的密钥库详细信息。
在命令提示符下执行命令 (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 ***************** 存储在密钥库中的信息的完整性 * 尚未已验证!为了验证其完整性,* 您必须提供您的密钥库密码。 * ***************** WARNING WARNING WARNING ***************** 密钥库类型:JKS 密钥库提供者:SUN 您的密钥库包含 1 entry samplekey, Apr 26, 2017, PrivateKeyEntry, 证书指纹 (SHA1): XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX: XX:XX:XX
只需使用记事本打开 yourApp.jks 文件,您就会在其中找到 Keystore 和别名!!
单击 KeyAlias 您将了解别名
https://i.stack.imgur.com/usKmR.png
不要在所有这些解决方案上浪费你的时间,它们不再起作用谷歌设法修复所有这些泄漏并加密所有提到的文件的密码。只需联系 google support,创建一个新的 Keystore 文件并将其发送给他们,他们将为您的应用程序更新它。
您可能想试试这个密码破解器。
http://maxcamillo.github.io/android-keystore-password-recover/index.html
我正在使用字典攻击方法。它对我有用,因为我能想到的密码组合只有几个。
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”恢复文件和搜索文件。
我尝试了很多解决方案,只有那些对我有用,我会与你分享
https://i.stack.imgur.com/qkFfh.png
https://i.stack.imgur.com/HuK6J.png
https://i.stack.imgur.com/WYnBO.png
按 Ctrl + F 搜索
有一种方法可以重置密码。
转到此链接,描述您的问题(忘记 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
无论如何,您都对密码感到困惑。您可以使用命中和试用。它会要求您输入密码。如果正确,它将向您显示列表。
项目清单
keytool -list -v -keystore 文件名
上传密钥丢失或泄露?如果您丢失了私有上传密钥或它已被泄露,您可以创建一个新密钥,然后让您的帐户所有者联系支持人员以重置密钥。联系支持人员时,请确保您的帐户所有者附加了 upload_certificate.pem 文件。
在我们的支持团队注册新的上传密钥后,您会收到一封电子邮件,然后您可以更新您的密钥库并向 API 提供商注册您的密钥。
重要提示:重置您的上传密钥不会影响 Google Play 在将 APK 交付给用户之前用于重新签署 APK 的应用签名密钥。
请参阅:最佳实践
在 MacO 或 Linux 上获取密钥别名:
keytool -list -v -keystore <name>.keystore(or .jks)
它会要求您输入您的 key password
如果您的密钥文件名没有扩展名,只需将 <name>
感谢亲爱的@MSIslam
对于颤振,运行这样的东西......你应该已经有一个带有密码的证书。
keytool -list -v -keystore /Users/mac/Desktop/github/ict4farmers-flutter/ict4farmers.jks
.AndroidStudioX.X (x.x is the version number eg 1.5) > system > log > idea
grep -r "android.injected.signing" /home/.AndroidStudio*
在大量日志中查找密码C:\Users\yourUser\.Android2.2\system\log\idea.log.1
上