Expo build でリリースしたAndroidアプリを更新しようとしたら、フィンガープリントで詰まりまくった件

雑記

最近はchatGPTのおかげでプログラミング関連の分からないことは結構解決できるようになったのですが、知らなかったワードも多くてめっちゃ詰まりまくって大変だったのでメモしておきます。(というのを2ヶ月前に下書きしていたのですが、もうすでに忘れまくっていました、、メモはすぐやらなきゃですね、、、)

.aabを更新しようとしたら何故かエラー

Android App Bundle が誤った鍵で署名されています。App Bundle を正しい署名鍵で署名して、もう一度お試しください。App Bundle はフィンガープリント「
SHA1:xxxxxxxxx
」の証明書で署名される必要がありますが、アップロードしたApp Bundle の署名に使われている証明書のフィンガープリントは「
SHA1:xxxxxxxxx
」です。

などというエラーが出て、エラーメッセージやフィンガープリントなどでGoogle検索やchatGPTで検索しまくりましたが、イマイチ全然しっくりこないというか求めている回答が出てこなくて困り果てていました。。

本当に同じPC使ってますか?

もう意味わからん!無理!となりながらよくよく考えると、そういえば無駄にMacBookを買い替えたことを思い出して色々納得がいきました。(USキーボードが結局使いにくくて、メルカリで売って、日本語キーボードで買い直すという愚行、、)

買い替えた事を完全に失念していたために、検索しても「うーん、これは環境が違うなぁ」みたいに有益な情報をスルーしてしまっていました。。フィンガープリント(指紋)が違うって、PC本体が違うんだもん、そりゃそうですね。。

.pemの存在にやっと気付く

で、そのフィンガープリント(指紋)の情報というのが、前のPCの作業フォルダに.pemファイルとして保持されていたはずなのですが、当然ながらデフォルトで .gitignore に記載されているべきで普通に記載されていて、つまり新しいPCには git clone しただけでは取得できません

本来ならばどこかにバックアップしておかなければならなかったのですが、もう手元には前のPCはないので困った。という状況ですね。

わかってしまえば結構単純なことだったのですが、ここまで理解がたどり着くのが大変でした。。

アップロード鍵のリセット

ただ、ここからもうひと手間かかりました。

Google Play Console から、設定 > アプリの署名 > アップロード鍵のリセットのリクエスト というのを行えば、フィンガープリント(指紋)を更新できることが分かりました。

が、

これを行うにはキーストア(.jks)というものが必要になります。ここがちょっと一瞬意味が分からなかったというか、知らない単語の連続で理解が追いつくまで苦労しました。。

キーストア(.jks)を作ってから、指定のコマンドを使って.pemファイルを自分で生成して、その.pemファイルをアップロードして登録することで、新しい指紋情報に更新(リセット)するという感じです。

keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem

このコマンドで、キーストア(.jks)とエイリアス(キーストアのコピーみたいなやつ)を、.pemファイルに変換していきます。

キーストア(.jks)は自分で作成する

意外とこれがしっくりこなかったのですが、先ほど書いたようにこのキーストア(.jks)は自分で作るものらしいです。検索したら普通に色々でてきました。ただ、React Native × Expo でのスマホアプリ作成というくだりでは全く目にしなかったし、そういった記事にも出会いませんでした。

こういった、当然知ってるでしょ?みたいな優しくないところが、プログラミング初学者には本当に辛いですね。。chatGPTがなければマジで詰んでました多分。(逆に今後は乗り越えれる人が増えまくるということか、、)

キーストア(.jks)を作成するには keytool という Java のコマンドを使うようです。Java はいつのまにかインストールしていたようで動きました。(Mac への Java のインストールからキーストア作成まで、この自分の記事まったくいらんやんというくらい分かりやすい記事がありました↓)

Mac に Java をインストールして jks(キーストア)を作成するまで
(実施した時のメモ) Java をインストールする # Homebrew で openjdk をインストールする。 openjdk — Homebrew Formulae brew install openjdk インストール中に以下のメッ...

とりあえずchatGPTに促されるままに、おもむろにターミナルにコードを打ち込んでみます

keytool -genkeypair -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias

すると、まさかの姓名とか都道府県名などを自分で入力する対話形式のやり取りが走りました。なんじゃこりゃ。自分で自分の名刺作ったみたいな感じか?

とにかくこれで、キーストア(.jks)が作成されました。

.PEMファイルも自分で作成する

このキーストアと、さっきのGoogle Play Consoleに書いてあったコマンド、

keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem

を使って.pemファイルを生成するのですが、待って、エイリアスってなに?

ああ、、ちょっとどうやったか失念、、ちゃんとファイルを指定したら無事に.pemファイルは生成されます。。。ちょっとまたどうやったか追記します、、

更新完了

.pemファイルをアップロードしたら、フィンガープリント(指紋)更新申請が完了です。

アップロードしてから結局24時間も経たなかった気がしますが、わりとすぐに更新完了しました。そしてやっとAndroidスマホアプリの更新もできました!!!

長かった、、、いやほんとに一人で孤独に手探りでやるの大変です、、友達ほしい切実にw