アップロードキーに苦戦した話

こんにちは、メグリ株式会社でAndroidエンジニアをしている増田です。

以前(10/13)、 STORES 株式会社さんとLTイベントを実施した際の内容をまとめてみました。

題目

アップロードキーに苦戦した話

話したこと

アップロードキーがなんらかの理由により紛失した実体験に基づいて(正確には前ベンダーがキーストアを引き渡してくれないという事件が発生発生していました)、
そんな場合でも対処できる方法があることと、実際の手順について発表させていただきました。

Androidのアプリ署名について

Androidのアプリ署名について軽くおさらいです。
アプリへの署名はPlayストアにアプリを公開する際に必須となっていますが、2020年の8月より、セキュリティの向上を目的とした「Google Play App Signing」という新しい署名方式(以降新方式と記載)が登場しました。

変更点としては、ベンダーが管理する鍵の種類が「アプリ署名キー」ではなく、「アップロードキー」に置き換わっており、アプリ署名キーはGoogleが管理してくれるようになりました。 (ここが重要!)

これにより、アプリの署名方式が新旧の2通りのどちらかを利用できるようになりました。 (ただし、現時点で新規アプリを公開するとした場合は必須となる
以前新方式での対応が必須となるみたいな記事を見かけた気がしたのですが、今どの方式でもバイナリをアップロードできているので見間違いですかね・・🤔

新旧それぞれの概要については以下図のようになっていて、 最大の違いとしては旧方式ではアプリ署名キーを紛失してしまうと パッケージ名を変更して新規アプリとして公開せざるを得ない状況となるのに対し、新方式ではアップロードキーが再登録して、引き続きアプリの公開が可能となる点です。

アップロードキーの再登録フローについて

再登録には新方式でないと対応できないため、先ほど紹介した新方式のオプトインが必須となりますので、ご注意ください。
(元々新方式ではなかったため、そこだけはなんとか対応してもらいました。旧→新への移行については後ほどほんの少しだけ触れます)

実際にアップロードキーを再登録するためには3つの作業が必要になりますので、それぞれについて軽く触れていこうと思います。

キーストアの作成

まずkeytoolを利用してキーストアを作成します。

作成したキーストアからPEMファイルを作成

上記で作成したキーストアから、先ほどと同じくkeytoolを利用して作成します。

Googleのサポート宛に申請

Play Consoleにログインし、該当アプリのリンクより申請します。

申請に向けて必要情報をフォームに入力していきます。

フォームの下部に、先ほど作成したPEMファイルを添付する箇所があるので添付します。

ここまで出来たら、その下にある申請ボタンをクリックすると申請は完了です。

申請後の流れ

申請後、サポートから返答がメールで届きます。 おおよそ返信が来るまでの時間と、実際に申請したキーストアが利用可能になるまで約1.5日ほどかかるので、少しラグがあります。 急を要する場合は注意が必要です。

また、平日で繁忙期や大型休暇シーズン(年末年始など)ではない時期に申請していたので、もし繁忙期に申請する場合はより時間がかかるかもしれませんので、そこにも注意です。

旧→新への移行

旧→新に移行するにはいくつか方法がありますので、詳しくはこちらをご覧ください。
(弊社では普段はAndroid Studio からエクスポートした鍵をアップロードする方式を利用しています) https://developer.android.com/studio/publish/app-signing?hl=ja#enroll_existing

まとめ

結論としては、早めにGoogle Play App Signingにオプトインしておくことをおすすめします!

理由としてはアップロードキーの紛失に対応できることと、アプリ署名キーをGoogleが管理してくれるのでセキュリティ的に旧方式よりもセキュリティ面に優れている点、
加えてアプリをインストールする際に端末に適したリソースのみを取得するため、ファイルサイズを小さくできるからです。

ご覧いただき、ありがとうございました🙇‍♂️