はじめに
Androidアプリの公開/リリースのために、署名付きの本番用ビルドをGoogle Playにアップロードします。
アプリケーションに署名を行い、正規のアプリであることを証明する必要があります。
署名・証明書の基礎知識
以下が覚えておきたい基本的な知識となっています。
公開鍵証明書(.der または .pem ファイル)
この証明書によって APK や App Bundle が対応する秘密鍵に関連付けられます。また、この証明書の作成に使用する鍵は、アプリ署名鍵と呼ばれます。
公開鍵証明書には秘密鍵は含まれていないので、証明書は誰とでも共有できます。
証明書フィンガープリント
API プロバイダは、そのサービスを利用するアプリを登録するために証明書フィンガープリントをリクエストすることがあります。その際に使用します。
アプリ署名鍵
デバイスにインストールされる APK の署名に使用される鍵。
アップロード鍵
Google Play App Signingを使用する場合に使用する鍵です。
アプリへの署名に使用する鍵。アップロード鍵は誰にも知られないようにしてください。ただし、アップロード鍵を使用して生成した証明書を共有することは可能です。
アプリに署名して Google Play でリリースする
アップロードするアプリの形式は、APK
とApp Bundle
の2種類があります。
この記事では、さまざまなメリットを享受できるApp Bundle
をオススメして紹介します。
APK と App Bundle
APKは、そのままデバイスにインストールできる形式です。
一方でAndroid App Bundle は、アプリのコンパイル済みコードとリソースがすべて含まれた公開形式で、これを元にAPKを作成することができます。
そしてAPK の生成と署名は Google Play が行います。
GooglePlay App Signing
APKの生成と署名をGoogleにお任せできるこの仕組みを、GooglePlay App Signing
と言います。
私たち開発者は、署名鍵の管理を行わないので鍵の流出や紛失といったトラブルから解放されます。
Google Play は App Bundle から、デバイス設定ごとに最適化した APK を生成、配信します。それによって、個々のデバイスでアプリを実行するのに必要なコードとリソースだけがダウンロードされます。デベロッパー側では、多様なデバイスのサポートを最適化するために複数の APK をビルド、署名、管理する必要がなくなり、ユーザー側では、よりサイズが小さく、最適化された APK をダウンロードできるようになります。
GooglePlay App Signingを使用すると、アプリ署名鍵の管理と保護、APK 配信時の署名を Google に委託することができます。自分でapkをビルドする場合、これらの鍵の管理を自分で行う必要があります。
自分で管理を行う場合は、鍵の流出や紛失がないように気をつけなければならないので、GooglePlay App Signingの利用が推奨されています。
また、App Bundleを選択することでバンドルサイズが小さくなるメリットもあります。
App Bundle と App Signing を使用する手順
開発したアプリを初めて公開する場合の手順を以下にまとめています。
アップロード鍵とキーストアを生成する
アップロード鍵をまだ生成していない場合は、次のように Android Studio を使用して生成できます。
1. メニューバーで、[Build] > [Generate Signed Bundle/APK] をクリックします。
2. [Generate Signed Bundle or APK] ダイアログで、[Android App Bundle] または [APK] を選択し、[Next] をクリックします。
3. [Key store path] のフィールドの下で、[Create new] をクリックします。
4. [New Key Store] ウィンドウでキーストアと鍵の情報を指定します。
Android Studio で新しいアップロード鍵とキーストアを作成します。
5. キーストア
- Key store path: キーストアを作成する場所を選択します。
- Password: キーストアの安全なパスワードを作成し、確認します。(後に必要なのでメモっておきます)
6. 鍵
- Alias: 鍵を識別する名前を入力します。(後に必要なのでメモっておきます)
- Password: 鍵の安全なパスワードを作成し、確認します。(後に必要なのでメモっておきます)
- Validity (years): 鍵の有効期間を年単位で設定します。鍵は少なくとも 25 年間は有効であるため、アプリの全期間を通じて同じ鍵を使用してアプリのアップデートに署名できます。
- Certificate: 証明書の所有者に関する情報を入力します。この情報はアプリには表示されませんが、APK の一部として証明書に含まれます。
7. フォームの入力が完了したら、[OK] をクリックします。
鍵を使ってアプリに署名する
先ほど作成した「アップロード鍵」を使用して、アプリに署名を行いapp bundleを作成します。
- [Generate Signed Bundle or APK] ダイアログを開いていない場合は、[Build] > [Generate Signed Bundle/APK] をクリックします。
- [Generate Signed Bundle or APK] ダイアログで、[Android App Bundle] または [ APK] を選択し、[Next] をクリックします。
- プルダウンでモジュールを選択します。
- キーストアへのパスと鍵のエイリアスを指定し、両方のパスワードを入力します。
アップロード鍵でアプリに署名します。
- GooglePlay App Signingを使用する場合は、[Export encrypted key] チェックボックスをオンにします。
- 暗号化された
.pepk
ファイルとして署名鍵を保存するパスを指定します。 - [次へ] をクリックします。
- 次のウィンドウ(図 4)で、署名済みアプリの保存先フォルダを指定し、ビルドタイプを選択します。
- [Finish] をクリックします。
Play Consoleを開き、生成された.aabファイル(App Bundle)をアップロードします。
まとめ
Androidアプリを公開する際の署名や証明書についてまとめました。
- App Bundleの使用がおすすめ
- App Signingを使用することで鍵の管理を減らすことができる