忘れてしまったAndroidの署名情報は見つかるかもしれない
Androidのアプリの署名に使う情報を忘れてしまうことが、稀にあります。
やってはいけないことですが、稀にあります。
別PCで作業してていつもMaster Passwordに任せっきりだったりとか、久しぶりに更新をかけようとしたアプリで起きたりします。
同じ署名のkeystoreファイルが使えないとなると、別アプリ扱いとなるので同じアプリのストアの更新はできなくなります。なので、別アプリとしてストアに上げ直すことになります。
もちろんそれは意図した場合を除いては避けたいことなので、なんとか署名情報を思い出します。
これが助けになるかもしれないし、助けにならないかもしれません。 藁にもすがる思いでこの投稿をみつけた方には一度試してもらいたいと思います。
keystoreファイルをなくしてしまった方には今回の方法は使えません。教訓として同じことを繰り返さないようにしましょう。
署名情報
それぞれをなんと呼ぶのかわかりにくいと思ったので、この投稿では次のように扱います。
画像のまんまですが、
1に入力するものを Key store password
2に入力するものを Key alias
3に入力するものを Key password
とします。
プロジェクトルートから探る
アプリのプロジェクトルートに.gradle
という隠しフォルダがあると思います。
その中の、Gradleのバージョン/taskArtifacts/taskArtifacts.bin
というファイルを、エディターなどで無理やり開きます。
signingConfig.storePassword
, signingConfig.keyAlias
あたりで検索すると、
Key store password
とKey alias
が見つかります。私の環境では、Key password
は見つかりませんでした。
Key password
は次のツールを使えば探すことができます。
力技をサポートしてくれるツールです。
Android-keystore-password-recover by MaxCamillo
パスワードに使われていそうな文字列にあたりがある場合は見つけられる確率は少しあると思いますが、非常に時間がかかります。
上のツールを使うと、Key alias
はすぐに表示してくれます。
Android Studioのログから探る
~/Library/Logs/
に、いろんなアプリケーションのログがあります。AndroidStudio
のものは複数見つかると思いますが、Releaseビルドを成功させたバージョンのログをみます。idea.log
というファイルをエディターで開きます。こちらもidea.log.1
など複数あると思いますが、大まかに日ごとに分かれているので、作成日などをヒントにあたりをつけましょう。
android.injected.signing.store
と検索すると、近くに見つかると思います。GUI上で****と入力された履歴の下に、実際に入力されていた文字列がそのまま表示されています。
こちらは、Key store password
, Key alias
, Key password
すべてが見つかります。
まとめ
keystoreファイルと同じく、それに使う署名情報もバックアップが取れる形で保存しておきましょう。
GUIでapkを生成するのではなく、CLIで生成できるようにしておき、人力による入力漏れを無くすのも効果的です。
Please Advice Needed, Lost KeyStore password / StackOverFlow
android KeystorePassとaliasPassを忘れた時の対処法 / Game Factory