Android では、すべてのアプリをインストールする前に、証明書によるデジタル署名を行う必要があります。 Google Play ストア経由で Android アプリケーションを配布するには、リリース キーで署名する必要があり、そのキーを今後のすべての更新に使用する必要があります。 2017年以降、App Signing by Google Playの機能により、Google Playが自動的に署名リリースを管理することが可能になっています。 しかし、アプリケーションバイナリがGoogle Playにアップロードされる前に、アップロードキーで署名される必要があります。 Android DevelopersのドキュメントにあるSigning Your Applicationsのページで、このトピックの詳細が説明されています。 このガイドでは、このプロセスの概要を説明し、JavaScript バンドルをパッケージ化するために必要な手順を一覧で示します。 Windows では、keytool
は C:\Program Files\Java\jdkx.x.x_x\bin
から実行する必要があります。
Copy
このコマンドは、鍵ストアと鍵のパスワード、および鍵の識別名フィールドを尋ねるプロンプトが表示されます。 そして、my-upload-key.keystore
.
というファイルとして鍵ストアを生成します。
鍵ストアには、10000日間有効な1つの鍵が含まれています。 エイリアスは、後でアプリに署名するときに使用する名前なので、エイリアスのメモを忘れないでください。
Macでは、JDKのbinフォルダーがどこにあるかわからない場合、次のコマンドを実行して見つけます。
Copy
このような JDK ディレクトリを出力します:
コピー
コマンドでそのディレクトリに移動し、以下のように sudo 権限で keytool コマンドを使用します。
Copy
Note: keystore ファイルは忘れずにプライベートにしておいてください。 万が一、アップロード鍵を紛失したり、漏洩した場合は、以下の手順に従ってください。
Gradle 変数の設定#
- プロジェクトフォルダーの
android/app
ディレクトリの下にmy-upload-key.keystore
ファイルを配置する。 - ファイル
~/.gradle/gradle.properties
またはandroid/gradle.properties
を編集し、以下を追加します (*****
を正しい keystore パスワード、エイリアス、キー パスワードに置き換えます),
コピー
これらはGradleグローバル変数として、後でGradle configでアプリに署名するために使用する予定だ。
セキュリティに関する注意事項。 パスワードを平文で保存することに抵抗があり、macOS を実行している場合、Keychain Access アプリに資格情報を保存することもできます。 その後、
~/.gradle/gradle.properties
の最後の 2 行をスキップできます。
アプリの Gradle 設定に署名設定を追加する#
最後に行う必要のある設定ステップは、リリース ビルドがアップロード キーで署名されるように設定することです。 プロジェクトフォルダ内のファイル android/app/build.gradle
を編集し、署名設定を追加します。
….
コピー
リリースを生成する AAB#
ターミナルで以下を実行:
コピー
グラドルのbundleRelease
は、アプリの実行に必要なすべての JavaScript を AAB (Android App Bundle) にバンドルしています。 JavaScript バンドルおよび/または描画可能なリソースのバンドル方法を変更する必要がある場合 (たとえば、デフォルトのファイル/フォルダー名やプロジェクトの一般構造を変更した場合)、これらの変更を反映するために android/app/build.gradle
を更新する方法を確認します。
Note:
gradle.properties
にorg.gradle.configureondemand=true
を含まないことを確認し、これにより、リリース ビルドが JS とアセットをアプリ バイナリにバンドルせずにすむようにします。
生成された AAB は android/app/build/outputs/bundle/release/app.aab
の下にあり、Google Play にアップロードする準備ができています。
Google Play で AAB 形式を受け入れるには、Google Play コンソールでアプリケーションに対して App Signing by Google Play を設定する必要があります。 App Signing by Google Play を使用していない既存のアプリを更新する場合は、移行セクションで設定変更の方法を確認してください。
アプリのリリース ビルドのテスト#
リリース ビルドを Play ストアにアップロードする前に、徹底的にテストしてください。 まず、すでにインストールされている以前のバージョンのアプリをすべてアンインストールします。 プロジェクト ルートで次のコマンドを使用してデバイスにインストールします:
Copy
Note that --variant release
is only available if you have set up signing as described above.上記のように署名を設定しました。
すべてのフレームワークと JavaScript コードは APK のアセットにバンドルされているので、実行中のバンドル インスタンスを終了することができます。 これにより、ほぼすべての Android デバイスで動作する APK を共有することが容易になります。
android/app/build.gradle の次の行を変更することにより、各 CPU 用の APK を作成できます:
コピー
これらのファイルを Google Play や Amazon AppStore などデバイス ターゲットに対応しているマーケットにアップロードすれば、ユーザーは自動的に該当 APK を取得することができます。 1 つのアプリに対して複数の APK をサポートしない APKFiles などの他のマーケットにアップロードする場合は、次の行も変更して、両方の CPU に対応するバイナリを含むデフォルトのユニバーサル APK を作成します。
コピー
Proguard による APK サイズ削減を可能に (Optional)#
Proguard とは APK サイズをわずかに削減できるツールの一つである。 これは、アプリが使用していない React Native Java バイトコード (およびその依存関係) の部分を取り除くことにより行われます。
IMPORTANT: Proguard を有効にした場合、アプリを完全にテストすることを確認してください。 Proguard は、多くの場合、使用している各ネイティブ ライブラリに固有の構成を必要とします。
app/proguard-rules.pro
.
Proguard を有効にするには、android/app/build.gradle
:
コピー
Migrating old Android React Native apps to use App Signing by Google Play#
react Native の以前のバージョンから移行した場合、アプリで Google Play 機能によるアプリ署名を使っていない可能性があります。 アプリの自動分割などの利点を活用するために、この機能を有効にすることをお勧めします。 古い署名方法から移行するには、まず新しいアップロード鍵を生成し、android/app/build.gradle
にあるリリース署名設定を置き換えて、リリース鍵の代わりにアップロード鍵を使用する必要があります(gradle に署名設定を追加するセクションを参照)。 これが完了したら、Google Play ヘルプ サイトの指示に従って、オリジナルのリリース キーを Google Play に送信します。
Default Permissions#
By default, INTERNET
permission is added to your Android app as pretty much all apps use it.これは、ほとんどのアプリが使用する権限です。 SYSTEM_ALERT_WINDOW
権限は、デバッグ モードでは Android APK に追加されますが、実稼働環境では削除されます。