新的 Android Studio 允许我们保存密钥库密码以备后用。这些密码存储在我的计算机(OSX)上的什么位置,有没有办法检索保存的值?
编辑 我正在寻找别名密码,而不是密钥库密码
新的 Android Studio 允许我们保存密钥库密码以备后用。这些密码存储在我的计算机(OSX)上的什么位置,有没有办法检索保存的值?
编辑 我正在寻找别名密码,而不是密钥库密码
您可以在 Android Studio 生成的 idea.log 文件中找到它:
搜索“Pandroid.injected.signing.key.password”可以看到密钥密码。
示例日志:
2015-11-13 10:22:48,844 [709463] 信息 - a.gradle.invoker.GradleInvoker - 构建命令行选项:[--按需配置,-Pandroid.injected.invoked.from.ide=true, -Pandroid.injected.signing.st ore.file=/Users/varun/Projects/myapp/mykey.jks,-Pandroid.injected.signing.store.password=mykeystorepassword,-Pandroid.injected.signing.key.alias=myalias , - Pandroid.injected.signing.key.password=mykeypassword , -Pandroid.injected.apk.location=/Users/varun/code/android/workspace/myapp, --init-script, /private/var/folders/vk /z504nlhd6v30p7zvtgjp5sjm0000gn/T/asLocalRepo0.gradle]
注意 1:在 OSX 上,idea.log 文件可以在 ~/Library/Logs/AndroidStudio2.0 找到
注2:如果在idea.log中没有找到密码,那么还要查看idea.log.1、idea.log.2等文件。
在 macOS 上,最新版本的 Android Studio(在 3.2 上测试)将密钥库/密钥密码存储在 Keychain 中的以下项下:
org.jetbrains.android.exportSignedPackage.KeystoreStep$KeyStorePasswordRequestor
org.jetbrains.android.exportSignedPackage.KeystoreStep$KeyPasswordRequestor
前者存储密钥库本身的密码,后者存储密钥的密码。
您可以使用系统钥匙串访问应用程序访问它们。找到相应的条目并双击它。Account 字段应包含您的密钥库的路径或密钥库中密钥别名的路径,格式如下:
KEY_STORE_PASSWORD__/Users/username/keystorename
或KEY_STORE_PASSWORD__/Users/username/keystorename__alias
在请求时单击Show password
并输入您的 macOS 密码。而已!
对于尝试在 Android Studio 和 Ubuntu 的较新版本上恢复密钥库密码的任何人,似乎大多数记录在案的从日志、gradle 等恢复密码的建议不再有效。Corneliu 出色的蛮力脚本非常棒 - 除非您选择了一个 16 字符的密码,其中没有字典单词,并且希望本月某个时候得到结果 :) 不再可以使用 Intellij security.xml 解决方案从 Android Studio 检索保存的密码或者,据我所知。
然而——经过一番挖掘,Android Studio 3.1 似乎使用了 Ubuntu 18.04 中的 OS 钥匙串,因此检索已保存的密钥库密码非常简单:
找到您要查找的密钥库,@ 后面的位是您丢失的密码。希望能帮助那里的人!
Gradle 将它们存储在您的项目目录中的二进制文件中。您可以像这样(从项目目录)获取它们:
strings .gradle/GRADLE_VERSION/taskArtifacts/taskArtifacts.bin | grep storePassword -A1
(感谢https://stackoverflow.com/a/33624636/1982087提供 taskArtifacts.bin 指针)
从您签署 apk 之日起查找日志文件,您可以在那里找到您的密钥信息,如下所示。
-Pandroid.injected.signing.store.password=[store_password],
-Pandroid.injected.signing.key.alias=[alias],
-Pandroid.injected.signing.key.password=[key_password]
你可以在下面找到你的日志文件
C:\Users\username.AndroidStudio[versionNum]\system\log\
afterEvaluate {
if (project.hasProperty("android.injected.signing.store.file")) {
println "key store path: ${project.property("android.injected.signing.store.file")}"
}
if (project.hasProperty("android.injected.signing.store.password")) {
println "key store password: ${project.property("android.injected.signing.store.password")}"
}
if (project.hasProperty("android.injected.signing.key.alias")) {
println "key alias: ${project.property("android.injected.signing.key.alias")}"
}
if (project.hasProperty("android.injected.signing.key.password")) {
println "key password: ${project.property("android.injected.signing.key.password")}"
}
}
我写了一个Idea插件,命名为RestoreKeystorePlugin