我已经提出了申请,并在一个月前签署了它的 apk。现在我忘记了它的密码,当我为此使用新密钥并在 Google Play 上安装它时,它给了我指纹错误。我能做些什么?
申请链接在这里。
发生错误:
如果您使用的是 Gradle 4.0 及更高版本,请尝试在此处查找您的密码。
更新:
在gradle
5.4版本中,文件路径已更改如下:<project>\.gradle\5.4\executionHistory\executionHistory.bin
更新 apk 时必须使用相同的证书,否则 Google Play 不会将其识别为同一个应用程序。
如果您根本不记得您的密码,我认为除了从新应用程序(新包名称)开始之外别无选择。
来自谷歌文档
应用程序升级 – 当您发布应用程序更新时,如果您希望用户能够无缝升级到新版本,则必须继续使用相同的证书或一组证书对更新进行签名。当系统安装应用程序更新时,它会将新版本中的证书与现有版本中的证书进行比较。如果证书完全匹配,包括证书数据和顺序,则系统允许更新。如果您在不使用匹配证书的情况下签署新版本,您还必须为应用程序分配不同的包名称——在这种情况下,用户将新版本安装为全新的应用程序。
来源:http: //developer.android.com/tools/publishing/app-signing.html
Android 开发者博客中也有类似的信息:http ://android-developers.blogspot.com.au/2011/06/things-that-cannot-change.html
与清单包名称同样重要的是应用程序所使用的证书。签名证书代表应用程序的作者。如果您更改了应用程序的签名证书,它现在是一个不同的应用程序,因为它来自不同的作者。这个不同的应用程序不能作为原始应用程序的更新上传到 Market,也不能作为更新安装到设备上。
[...]
总之:您的应用程序的某些部分无法更改。请小心。
密钥库密码可以被破解,但您稍后仍需要别名密码。
从这里下载这两个文件
https://gist.github.com/zach-klippenstein/4631307
构建:
javac ChangePassword.java
跑:
java ChangePassword <keystore filename> <new keystore filename>
丢失的密钥密码可以在 .gradle 文件夹下找到,路径如下:
.gradle\3.3\taskArtifacts\taskArtifacts.bin
我认为 3.3 是 gradle 版本的编号,在某些情况下可能会发生变化。如果版本大于 4.0,路径实际上是不同的:
.gradle\4.1\taskHistory\taskHistory.bin
无论如何,这是二进制文件,所以它们充满了不可读的数据,但如果你搜索字符串“signingConfig.storePassword”,你会发现很多文本,我的看起来像:
<97>signingConfig.keyAlias^C<8a>MY_KEY_ALIAS<9c>signingConfig.storePassword^C<92>MY_STORE_PASSWORD<98>signingConfig.storeType^C<84>jks<9f>