メモ2ブログ

メモtoウェブログ。旧ブログはこちら。 http://sakebook.blogspot.jp/

忘れてしまったAndroidの署名情報は見つかるかもしれない

Androidのアプリの署名に使う情報を忘れてしまうことが、稀にあります。
やってはいけないことですが、稀にあります。

別PCで作業してていつもMaster Passwordに任せっきりだったりとか、久しぶりに更新をかけようとしたアプリで起きたりします。

同じ署名のkeystoreファイルが使えないとなると、別アプリ扱いとなるので同じアプリのストアの更新はできなくなります。なので、別アプリとしてストアに上げ直すことになります。
もちろんそれは意図した場合を除いては避けたいことなので、なんとか署名情報を思い出します。

これが助けになるかもしれないし、助けにならないかもしれません。 藁にもすがる思いでこの投稿をみつけた方には一度試してもらいたいと思います。

keystoreファイルをなくしてしまった方には今回の方法は使えません。教訓として同じことを繰り返さないようにしましょう。

署名情報

それぞれをなんと呼ぶのかわかりにくいと思ったので、この投稿では次のように扱います。

f:id:sakebook:20160503164033p:plain

画像のまんまですが、
1に入力するものを Key store password
2に入力するものを Key alias
3に入力するものを Key password

とします。

プロジェクトルートから探る

アプリのプロジェクトルートに.gradleという隠しフォルダがあると思います。 その中の、Gradleのバージョン/taskArtifacts/taskArtifacts.binというファイルを、エディターなどで無理やり開きます。

signingConfig.storePassword, signingConfig.keyAlias あたりで検索すると、 Key store passwordKey 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

Android Keystore Password Recovery / GitHub Pages

How to retrieve Key Alias and Key Password for signed APK in android studio(migrated from Eclipse) / StackOverFlow