今月(2021年8月)からGooglePlayの要件が変更され、apkではなくappファイル(Android App Bundle)を使用することが必須になりました。
Android App BundleではGoogle Play App Signingという署名機能で署名を行う必要があるのですが、このGoogle Play App Signingの対応が地味に厄介だったので今後の為にメモとして残しておきたいと思います。
Google Play App Signingが有効かチェックする方法
まず、Google Play App Signingが有効になっているかチェックします。
Google Play Console上で「設定」>「アプリの完全性」をタップすると、
以下のような表示になっていれば Play App Signingが有効になっているので特に対応を行う必要はありません。
逆に、以下のような画面が表示される場合は対処が必要です。
比較的最近リリースしたアプリであれば、勝手に有効になっている場合もあります。3〜4年くらい前にリリースしたアプリの場合は対応が必要が場合が多いように感じます。
Java KeyStoreから鍵をエクスポートしてアップロードする方法でGoogle Play App Signingに対応する
対応が必要な場合、上記の3つのどれかの対応を行う必要があります。
今回は、「Java KeyStoreから鍵をエクスポートしてアップロードする」方法にしました。
以下にある通り、ツールをダウンロードして、ターミナルで以下のコマンドを実行させれば鍵が作れます。
注意点としては、pepk.jarやkeystoreファイルはちゃんとパスを指定しないとうまくいかない場合があるので、ちゃんと入れましょう。あと、encryptionkeyは管理画面で表示される値をそのまま使いましょう。
秘密鍵が生成できたら、「秘密鍵をアップロード」から鍵をアップロードします。
問題なくアップロードできればPlay App Signingが有効の表示になるはずです。
Google Play App Signingの秘密鍵をアップロードしようとするとエラーが出る場合
keystoreやaliasを正しく入力したはずなのに「アプリの秘密鍵と違います」的なエラーが出る場合は、リリース済みのapkのフィンガープリントと、秘密鍵の生成に使ったkeystoreのフィンガープリントが合っているか確認しましょう。
ターミナルで以下のコマンドを実行すればkeystoreのフィンガープリントを確認できます。
keytool -list -v -keystore {キーストアファイル名}
また、ターミナルで以下のコマンドを実行すればapkのフィンガープリントを確認できます。
keytool -printcert -jarfile {apkのファイル名}
上記の方法で調べたところ、リリース済みapkのフィンガープリントと、今回秘密鍵生成時に使用したkeystoreのフィンガープリントでは、keystoreのalias名やパス、keysotreパス等は全て同じだったのですが、シリアル番号やフィンガープリントの値が違うため、エラーがでたようです。
多分、同じキーストアをコピーして別のプロジェクトで使用した事により、シリアル番号などの値が変わってしまったことが原因だったようです。
コピー元のkeystoreから秘密鍵を生成し直したらOKでした。
なので、keystoreは安易にコピーせず、マスターのkeystoreファイルをできるだけ使い回すようにした方がよさそうです。
とりあえずGoogle Play App Signingに関しては以上になります。
お知らせ
謎解き推理ゲーム「イラスト探偵」を最近リリースしました!
もしよろしければダウンロードお願い致します!