我忘记了我的密钥库密码,而且我真的不知道该怎么办(我不能或不会为此找任何借口)。我想更新我的应用程序,因为我刚刚修复了一个错误,但现在不可能了。如果我使用相同的密钥库但创建一个新密钥会怎样?我仍然可以更新该应用程序,如果无法更新,该如何向用户提供有关更新版本的信息?
如果有人遇到这样的问题或遇到麻烦,您能提供什么建议来帮助纠正这种情况?幸运的是,它是一个免费的应用程序。
我忘记了我的密钥库密码,而且我真的不知道该怎么办(我不能或不会为此找任何借口)。我想更新我的应用程序,因为我刚刚修复了一个错误,但现在不可能了。如果我使用相同的密钥库但创建一个新密钥会怎样?我仍然可以更新该应用程序,如果无法更新,该如何向用户提供有关更新版本的信息?
如果有人遇到这样的问题或遇到麻烦,您能提供什么建议来帮助纠正这种情况?幸运的是,它是一个免费的应用程序。
Answers:
我自己刚刚遇到了这个问题-幸运的是,我能够在Gradle的一些临时文件中找到密码。万一有人落在这里:
尝试寻找这个文件
..Project\.gradle\2.4\taskArtifacts\taskArtifacts.bin
or
.gradle/3.5/taskHistory/taskHistory.bin
.gradle/5.1.1/executionHistory/executionHistory.bin
.gradle/caches/5.1.1/executionHistory/executionHistory.bin
并搜索
storePassword
它以明文形式存在。通常,如果您确实记得密码的至少一部分,请尝试搜索包含该子字符串的文件,并希望您能从中得到一些东西。
想把它扔在这里,也许最终会帮助一个人。
编辑: 从评论中添加了新的见解,只是为了使其更加可见。
感谢Vivek Bansal,Amar Ilindra和Uzbekjon的帮助。
strings taskArtifacts.bin | grep storePassword -A1
顺便说一句,谢谢ElDoRado1239 -您节省了我很多时间。
5.1.1
gradle中找到任何提及的目录
如果提供了错误的密码(即使只有一次),它还会在下次尝试时提示:
密钥库被篡改或密码错误。
即使您提供的是正确的。我尝试了几次,也许是某种保护。
关闭导出向导,然后使用正确的密码重新启动,现在可以使用了:)
蛮力是你最好的选择!
这是一个帮助了我的脚本:
https://code.google.com/p/android-keystore-password-recover/wiki/HowTo
您可以选择为其提供密码可能包含的单词列表,以实现非常快速的恢复(对我而言,它在不到1秒钟的时间内就起作用了)
在MAC启动控制台实用程序上,向下滚动到〜/ Library / Logs-> AndroidStudio-> idea.log.1(或任何旧的日志编号),然后搜索“ keystore”,它应该出现在日志中的某个位置。
原始问题:链接
解决方案2019(Windows,Android Studio 3.3,gradle 4.10):
仅当先前标记了“记住密码”复选框时,此解决方案才有效。
首先,此版本的gradle不存在taskArtifacts.bin,idea.log显示密码的星号。过去的解决方案对我不起作用。
在哪里找到明文密码:C:\ Users \ {用户名} \ AndroidStudioProjects \ {project} \ app \ build \ intermediates \ signing_config \ release \ out \ signing-config.json
密钥:mStorePassword和mKeyPassword。
我真的希望它能帮助其他人。
实际上,丢失keystore password
并不是问题。
您可以使用以下keytool
命令创建新的密钥库并为其设置新密码。您不需要原始的密钥库密码:
keytool -importkeystore -srckeystore path/to/keystore/with/forgotten/pw \
-destkeystore path/to/my/new.keystore
出现提示时,只需按Enter即可为您的密码new.keystore
和源密钥库密码(您丢失的密码)创建密码。
您将收到有关未选中完整性的警告,并且将使用与新设置的密码相同的new.keystore。
与之相对,实际上使您的私钥保持加密,之所以这样做的原因keystore password
仅是为了提供的完整性keystore
,而不会使用对其进行private key password
加密。
请注意,您必须知道要private key password
对应用程序进行签名。好吧,如果它与被遗忘的一样,keystore password
那么您可以像@Artur的答案一样诉诸蛮力。
这种方法一直对我有用。
jarsigner: key associated with mykey-release not a private key
。我想念什么吗?
我觉得我需要做出回答,因为这可能不仅仅是评论。就像@ ElDoRado1239在他的回答中说的那样(不要忘了投票;)
..Project\.gradle\2.4\taskArtifacts\taskArtifacts.bin
在我的情况下寻找是..Project\.gradle\2.2.1\taskArtifacts\taskArtifacts.bin
因为我使用gradle 2.2.1
storePassword
@Moxet Khan在评论中说的...在我的情况下是在线signingConfig.storePassword¬í t my.forgoten.password—signingConfig.keyAlias
希望能帮助别人!
幸运的是,我从Android Studio日志中找到了丢失的密码以及密钥库路径和别名。
如果您正在运行基于linux / Unix的计算机。
导航到“库日志”目录
cd ~/Library/Logs/
在这里,如果您还记得用来构建最新版本APK的android studio版本。导航到该目录
例如:cd AndroidStudio1.5 /
在其中,您将找到日志文件。在任何日志文件(idea.log)中,您都会找到密钥库凭据
例
-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,
我希望这对Android Studio用户有帮助
对于可能遇到此问题的其他人,我想分享一个答案,可能对您或浏览本文的其他人(例如我自己)都是如此。
我正在使用Eclipse,并在其中为我的1.0版本创建了密钥库。快进3个月,我想将其更新为1.1。当我在Eclipse中选择Export ...并选择该密钥库时,我记得的所有密码都无法使用。每次说“密钥库被篡改或密码错误”。 到了某种程度,我已经准备好在它可以运行(一个星期左右)的时间内尝试对其进行暴力破解程序,以使其正常工作。
幸运的是,我在Eclipse之外对未签名的.apk文件进行了签名。瞧-奏效了!我的密码一直正确! 我不确定为什么,但是即使我的密码正确,通过“导出”菜单在Eclipse中对其进行签名也报告了错误。
因此,如果您遇到此错误,请按照以下步骤操作(摘自Android文档),以帮助您将APK做好准备投入市场。
注意:要从Eclipse获取未签名的apk:右键单击项目> Android Tools>导出未签名的应用程序
使用密钥库签署未签名的APK文件
一个。打开管理员cmd提示符,然后转到“ c:\ Program Files \ Java \ jdk1.6.0_25 \ bin”或您拥有的任何Java版本(在其中复制了未签名的APK文件和密钥库)
b。在带有密钥库文件和未签名apk在同一目录中的cmd提示符下,键入以下命令:jarsigner -keystore mykeystorename.keystore -verbose unsigned.apk myaliasnamefromkeystore
C。它会说:“输入密钥库的密码:”。输入它,然后按回车键。
d。===>成功看起来像这样:
adding: META-INF/MANIFEST.MF
...
signing: classes.dex
e。未签名的版本已被覆盖,因此您签名的apk文件现在与未签名的文件具有相同的文件名
使用ZipAlign压缩签名的apk文件以在市场上分发
一个。打开admin cmd提示符,然后转到“ c:\ AndroidSDK \ tools”或安装Android SDK的任何位置
b。输入此命令:zipalign -v 4signed.apksignedaligned.apk
C。===>成功看起来像这样:
Verifying alignment of signedaligned.apk (4)
50 META-INF/MANIFEST.MF (OK - compressed)
...
1047129 classes.dex (OK - compressed)
Verification succesful
d。已签名和对齐的文件位于signedaligned.apk(您在上一个命令中指定的文件名)
========>准备提交到市场
在花了将近一天的时间研究了用于恢复Android Studio中丢失的密钥库密码的可能选项之后。我发现了以下4种可能的方法:
使用AndroidKeystoreBrute检索密码。当您部分忘记密码时,此方法非常有用,这意味着您仍会想到一些密码提示。
如果您先前已在同一台计算机上发布了该应用程序(已找到其密钥库密码),则还可以通过Android Studio日志文件检索该文件。请参考以下目录:
Mac OSX
〜/ Library / Logs / AndroidStudio / idea.log.1
Linux(可能的位置)
/ home /用户名/ AndroidStudio / system / log
Windows(可能的位置)
C:\ Users \用户名\ AndroidStudio \ system \ log
并Pandroid.injected.signing.key.password
在文件中搜索。如果您以前使用与您当前使用的Android Studio版本相同的版本对应用程序进行了签名,则会看到密码。
您也可以通过项目的.gradle目录检索密码。寻找以下路径
project_directory / .gradle / 2.4 / taskArtifacts / taskArtifacts.bin。
注意:这似乎不适用于较新版本的Gradle(2.10及更高版本)。
如果以上解决方案均不起作用,则可以尝试使用该解决方案,但对于该解决方案,您还必须具有Android Studio IDE应用或,这是您的项目密钥存储区密码已被较早保存的首选项(在签署密码时使用“记住密码”选项)应用)。您可以从以下路径获取IDE首选项:
Mac OSX
〜/ Library / Logs / AndroidStudio / idea.log.1
Linux(可能的位置)
/ home /用户名/ AndroidStudio
Windows(可能的位置)
c:\ user \ username \ .AndroidStudio
如果您拥有旧IDE的首选项,或者将旧IDE的首选项导入新的IDE中,然后将密钥库文件放置在与以前签名时相同的路径中,并且最后一次保存密码,则只需使用旧的Android Studio IDE。
这样,一旦您打开项目并尝试Build-> Generate Signed APK,然后从较旧的位置选择密钥库文件。它将自动检索密码,并继续生成签名的APK以供发布。
发行APK成功生成后,您可以按照前面提到的选项2从日志文件中检查密码,以获取最近生成的发行APK。
获取密钥库密码的最简单方法
project_folder \ app \ build \ intermediates \ signing_config \ release \ out \ signing-config.json
在signing-config.json中检查此文件以搜索StorePassword
{"mName":"externalOverride","mStoreFile":"C:\\Users\\dAvInDeR\\Desktop\\KEYSTORE\\keystore.jks","mStorePassword":"1234@#abcd","mKeyAlias":"uploadkey","mKeyPassword":"1234@#abcd","mStoreType":"jks","mV1SigningEnabled":false,"mV2SigningEnabled":false}
完全希望它将对您有帮助。
我一下子遇到了同样的问题。即使使用Google Play进行应用签名,丢失密钥库或其密码并不像以前那样大不了,但作为开发人员,我们还是宁愿更改其密码并使用生成的密钥库文件,而不必等待几天来谷歌处理它。(为了解决这个问题,与谷歌使用这个链接,以请求),以处理自己这个问题,首先下载两个.java文件从该链接。然后通过以下方式编译ChangePassword.javajavac ChangePassword.java
命令。那你跑完之后
java ChangePassword <oldKeystoreFileName.keystore> <newKeystoreFileName.keystore>
更改oldKeystoreFileName.keystore与您当前的密钥库文件的路径/名称,newKeystoreFileName.keystore与新生成的新的密钥存储文件路径/文件名。这将促进您
输入密钥库密码:
。只需输入您喜欢的内容即可:)不必是丢失的原始密码。然后使用*输入新密码
新的密钥库密码:
如果您能够从PC上构建应用程序,但是您不记得密码,可以通过以下操作来检索密码:
方法1:
在您的build.gradle中,添加println MYAPP_RELEASE_KEY_PASSWORD
以下内容:
signingConfigs {
release {
if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
storeFile file(MYAPP_RELEASE_STORE_FILE)
storePassword MYAPP_RELEASE_STORE_PASSWORD
keyAlias MYAPP_RELEASE_KEY_ALIAS
keyPassword MYAPP_RELEASE_KEY_PASSWORD
println MYAPP_RELEASE_KEY_PASSWORD
}
}
}
之后,运行 cd android && ./gradlew assembleRelease
方法2:
运行keytool -list -v -keystore your <.keystore file path>
例如keytool -list -v -keystore ./app/my-app-key.keystore。
它将要求您输入密钥库密码:只需在此处按Enter键。您将可以找到映射到别名的名称:
然后,grep -rn "<your alias name>" .
在您的终端中运行,您将能够看到您的signing.json文件,如下所示:
./app/build/intermediates/signing_config/release/out/signing-config.json
该文件将使用密钥“ mKeyPassword”将您的密码设置为json格式:“ <您的密码>”
在Ionic中,我可以在这里找到它: /app/platforms/android/app/build/intermediates/signing_config/release/out/signing-config.json
也许这会帮助某人。干杯。
如果两个密码都不相同,Android暴力破解将无法工作,因此最好的选择可能是尝试查找名为的文件
对数思想
在您的C:/ users /您的命名帐户中,您可能会发现在android文件夹中的记事本中打开文件lpg.idea,然后搜索
别名
使用记事本中的“查找”选项,您会发现那里已经显示了密码,别名和别名密码
我在找到密码
C:\Users\{Username}\.AndroidStudio2.2\system\log\idea.txt
搜索
Pandroid.injected.signing.store.password
转到taskhistory.bin
在.gradle
你的项目中搜索密码滚动的文件夹下来,直到你找到密码
令人惊讶的是没有人提及此事,但是您可以寻求Google Play开发者支持,他们将与您一起创建新的上传密钥:
https://support.google.com/googleplay/android-developer/contact/otherbugs
我填写了一个问题,他们在1天内与我联系。
更新:按照他们的电子邮件指示,我能够创建一个新的上传密钥,几天后启用了它!问题解决了。
总结一下,这个问题有3个答案(解决方案不是公认的答案):
如果您的日志完整无缺,则可以按照上述Georgi Koemdzhiev的答案在Android Studio日志文件中找到密码。
您可以按照上述ElDoRado1239和Gueorgui Obregon的回答从.gradle目录中的'taskArtifacts.bin'文件中检索密码。这似乎不适用于较新版本的Gradle(2.10及更高版本)。
根据上面的Srinivas Keerthiprakasam的回答,使用AndroidKeystoreBrute猜测或暴力破解您的密码。
该链接将深入介绍所有这三种解决方案。
C:\ Users \ admin \ AndroidStudioProjects \ TrumpetTVChannel2.gradle \ 2.14.1 \ taskArtifacts \ taskArtifacts.bin
第一次尝试创建新的密钥库。...然后用记事本打开taskArtifacts.bin并查找您刚刚输入的密码...。您将能够找出您刚刚输入的密码附近的单词,然后在这些位置附近搜索这些单词。您的密码在同一文件中....您将能够找出密码..... :)
解决方案2018:如果您缺少密码或jks文件,请使用新的密钥库文件对应用程序进行签名。
1)用命令行创建新的keystore.jks文件(不是android studio构建菜单)
keytool -genkeypair -alias upload -keyalg RSA -keysize 2048 -validity 9125 -keystore keystore.jks
Windows示例:
"C:\Program Files\Android\Android Studio\jre\bin\keytool.exe" -genkeypair -alias upload -keyalg RSA -keysize 2048 -validity 9125 -keystore "C:\keystore_new.jks"
2)从新的密钥库生成一个.pem文件
keytool -export -rfc -alias upload -file upload_certificate.pem -keystore keystore.jks
Windows示例:
"C:\Program Files\Android\Android Studio\jre\bin\keytool.exe" -export -rfc -alias upload -file "C:\upload_cert.pem" -keystore "C:\keystore_new.jks"
3)使用此支持表格,设置“密钥库问题”,并在附件中添加.pem文件: https : //support.google.com/googleplay/android-developer/contact/otherbugs
4)在12-48h启用新的密钥库。使用签名有新密钥库:D的新APK更新Playstore上的应用