先日 Android Studioを 3.1.3にアップデートしてから、何故か .Keystoreの aliasをちゃんと選択しても証明書付きアプリのビルドが上手く行かなくなった。

「Cannot recover key」というエラーが表示されてビルド出来ないのだ。

それじゃという事で現在作成済みの aliasは捨てて、新しいアップロード鍵を作成してみると、当たり前だが正常にビルドが完了するし。

しかし、それで出来上がった APKを Google Consoleにてアップロードすると、コレまた当たり前だが Googleに登録済みの鍵と違う!という事でエラーとなりアップロードが出来ない。

原因調査

仕方ないので重い腰を起こし、対処方法をネットで色々調べたがそれらしい情報は得られず、どうもお手軽簡単に解決出来そうになかったので、仕方なくこの辺の原理を基本から勉強し直す事にしたのだが、なんつーか結構複雑で俺の頭脳では良く理解出来ない状態が続いた。

結局「Cannot recover key」が表示されるのは、何らかの原因で俺の .keystoreに登録されている証明書鍵やらなんたら情報の何かが壊れてしまったのではないかと仮定するしかなく、その上で再度ネットを調べてみると…

Googleサポートサイトで「新しいアップロード鍵を作成して、Googleに申請して、登録済みの鍵をリセットしてもらう」との情報を発見。

う〜ん、これすらも何の事やら良く判らないんだけど、何となくコレで行ける気もしてトライしてみる事にした。

Googleに登録済みのアップロード鍵をリセットしてもらう

まず .Keystoreで新しい aliasを作成し新しいアップロード鍵を .Keystoreに内蔵させ、対象アプリをビルドする。

当たり前だが正常にビルド完了し、この時点でアプリには新しいアップロード鍵が内蔵される。

この新しく作ったアップロード鍵を Googleに申請してリセットして貰うのだが、その時必要になるデータが PEMファイル形式の「鍵の証明書」で、それは Android Studioの最下部にある Terminalウィンドウから「keytool」というツールを使って作成出来る。

ちなみに俺のばやいは…

keytool -export -rfc -alias key1 -file key1_certificate.pem -keystore /Users/StudioProjects/XXX.keystore

てな感じでやると「key1_certificate.pem」というファイルが出力されるので、それを下記の Googleフォームに添付してアップロード鍵のリセット申請を行う訳だ。

Goole問い合わせフォーム

俺の場合、「受け付けたよ〜」っていう返事が来るのに丸 1日後、そしてそこから数日後からリセットが有効になるとの知らせが…

へぇ〜、リセットって即してくれるんじゃなくて、一定時間後から有効になるみたいですね。

まとめ

てな具合で、私にも良く判っていないんですが、上記の流れで対処したら Google Consoleで正常にアプリをアップデート出来ました。

今回の調査で何となく判った事を簡単に言うと…

証明書無しのアプリの場合は .keystoreファイルを紛失したりパスワードを忘れたら、それらのアプリを二度とアップデート出来なくなり、アプリを再度新規登録し直すしか方法が無くなる。

証明書有りのアプリの場合は .keystoreファイルを紛失したりパスワードを忘れてしまっても、今回の様に新しく証明書を作って Googleにリセットして貰えばアプリのアップデートが可能になる。

という具合みたいです。

ふぅ〜、疲れたよん!

では、また〜♡