App Distribution Gradle プラグインを使用すると、App Distribution を Android ビルドプロセスに統合できます。このプラグインを使用すると、アプリの Gradle ファイルでテスターとリリースノートを指定して、アプリのさまざまなビルドタイプやバリアントを配布できます。
このガイドでは、App Distribution Gradle プラグインを使用して Android App Bundle(AAB)をテスターに配布する方法について説明します。
App Distribution は Google Play の内部アプリ共有サービスと統合して、アップロードした AAB を処理し、テスターのデバイス設定用に最適化された APK を提供します。AAB を配布すると、次のことが可能になります。
テスターのデバイス向けに最適化された APK(Google Play が提供)を実行する。
デバイス固有の問題を検出してデバッグする。
Play Feature Delivery や Play Asset Delivery などの App Bundle 機能をテストする。
テスターのダウンロード サイズを削減する。
必要な権限
AAB を App Distribution にアップロードするには、Firebase アプリを Google Play のアプリにリンクする必要があります。これらの操作を行うには、必要なアクセスレベルを持っている必要があります。
必要な Firebase アクセス権がない場合は、Firebase プロジェクトのオーナーに、Firebase コンソールの IAM 設定を介して該当するロールを割り当ててもらうよう依頼してください。オーナーの確認や割り当てなど、Firebase プロジェクトへのアクセスについてご不明な点がある場合は、Firebase プロジェクトの権限とアクセスに関するよくある質問をご覧ください。
次の表は、Firebase アプリを Google Play のアプリにリンクする操作と、AAB をアップロードする操作に適用されます。
Firebase コンソールでの操作 | 必要な IAM 権限 | 必要な権限をデフォルトで含む IAM ロール | その他の必要なロール |
---|---|---|---|
Firebase アプリを Google Play のアプリにリンクする | firebase.playLinks.update
|
次のいずれかのロール: | 管理者としての Google Play デベロッパー アカウントへのアクセス権 |
AAB を App Distribution にアップロードする | firebaseappdistro.releases.update
|
次のいずれかのロール: | –– |
始める前に
まだ Firebase を Android プロジェクトに追加していない場合は追加します。このワークフローを終了すると、Firebase Android アプリが Firebase プロジェクトに追加されます。
他の Firebase プロダクトを使用していない場合は、プロジェクトを作成してアプリを登録するだけでかまいません。追加のプロダクトを使用する場合は、Android プロジェクトに Firebase を追加するの手順をすべて完了してください。
Google Play への Firebase リンクを作成し、AAB をアップロードするには、アプリが次の要件を満たしていることを確認してください。
Google Play のアプリと Firebase Android アプリが同じパッケージ名で登録されていること。
Google Play のアプリがアプリ ダッシュボードで設定され、いずれかの Google Play トラック(内部テスト、クローズド テスト、オープンテスト、製品版)に配布されていること。
Google Play でアプリの審査が完了し、アプリが公開されていること。[アプリのステータス] 列に、内部テスト(未公開の内部テスト以外)、クローズド テスト、オープンテスト、製品版のいずれかのステータスが表示されている場合、アプリは公開されています。
Firebase Android アプリを Google Play デベロッパー アカウントにリンクします。
Firebase コンソールで、
に移動し、[統合] タブを選択します。 [プロジェクト設定] Google Play カードの [リンク] をクリックします。
すでに Google Play へのリンクがある場合は、[管理] をクリックします。画面上の手順に沿って App Distribution 統合を有効にし、Google Play にリンクする Firebase Android アプリを選択します。
Google Play へのリンクに関する詳細をご覧ください。
ステップ 1. Android プロジェクトを設定する
ルートレベル(プロジェクト レベル)の Gradle ファイル(
<project>/build.gradle.kts
または<project>/build.gradle
)で、依存関係として App Distribution Gradle プラグインを追加します。Kotlin
plugins { // ... id("com.android.application") version "7.3.0" apply false // Make sure that you have the Google services Gradle plugin dependency id("com.google.gms.google-services") version "4.4.2" apply false // Add the dependency for the App Distribution Gradle plugin id("com.google.firebase.appdistribution") version "5.0.0" apply false }
Groovy
plugins { // ... id 'com.android.application' version '7.3.0' apply false // Make sure that you have the Google services Gradle plugin dependency id 'com.google.gms.google-services' version '4.4.2' apply false // Add the dependency for the App Distribution Gradle plugin id 'com.google.firebase.appdistribution' version '5.0.0' apply false }
モジュール(アプリレベル)の Gradle ファイル(通常は
<project>/<app-module>/build.gradle.kts
または<project>/<app-module>/build.gradle
)に、App Distribution Gradle プラグインを追加します。Kotlin
plugins { id("com.android.application") // Make sure that you have the Google services Gradle plugin id("com.google.gms.google-services") // Add the App Distribution Gradle plugin id("com.google.firebase.appdistribution") }
Groovy
plugins { id 'com.android.application' // Make sure that you have the Google services Gradle plugin id 'com.google.gms.google-services' // Add the App Distribution Gradle plugin id 'com.google.firebase.appdistribution' }
企業のプロキシやファイアウォールの背後にいる場合は、App Distribution が配布を Firebase にアップロードできるように、次の Java システム プロパティを追加します。
-Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
ステップ 2. Firebase で認証する
Gradle プラグインを使用する前に、まず、次のいずれかの方法で Firebase プロジェクトで認証する必要があります。他の認証方法が使用されていない場合、デフォルトでは、Gradle プラグインは Firebase CLI の認証情報を探します。
ステップ 3. 配布プロパティを構成する
モジュール(アプリレベル)の Gradle ファイル(通常は <project>/<app-module>/build.gradle.kts
または <project>/<app-module>/build.gradle
)で、少なくとも 1 つの firebaseAppDistribution
セクションを追加して App Distribution を構成します。
たとえば、release
ビルドをテスターに配布するには、次のようにします。
Kotlin
import com.google.firebase.appdistribution.gradle.firebaseAppDistribution android { // ... buildTypes { getByName("release") { firebaseAppDistribution { artifactType = "AAB" releaseNotesFile = "/path/to/releasenotes.txt" testers = "ali@example.com, bri@example.com, cal@example.com" } } } // ... }
Groovy
android { // ... buildTypes { release { firebaseAppDistribution { artifactType="AAB" releaseNotesFile="/path/to/releasenotes.txt" testers="ali@example.com, bri@example.com, cal@example.com" } } } // ... }
ビルドタイプとプロダクト フレーバーに対して App Distribution を構成できます。
たとえば、「demo」と「full」のプロダクト フレーバーで debug
ビルドと release
ビルドを配布するには、次のようにします。
Kotlin
import com.google.firebase.appdistribution.gradle.firebaseAppDistribution android { // ... buildTypes { getByName("debug") {...} getByName("release") {...} } flavorDimensions += "version" productFlavors { create("demo") { dimension = "version" firebaseAppDistribution { releaseNotes = "Release notes for demo version" testers = "demo@testers.com" } } create("full") { dimension = "version" firebaseAppDistribution { releaseNotes = "Release notes for full version" testers = "full@testers.com" } } } // ... }
Groovy
android { // ... buildTypes { debug {...} release {...} } flavorDimensions "version" productFlavors { demo { dimension "version" firebaseAppDistribution { releaseNotes="Release notes for demo version" testers="demo@testers.com" } } full { dimension "version" firebaseAppDistribution { releaseNotes="Release notes for full version" testers="full@testers.com" } } } // ... }
次のパラメータを使用して、配布を構成します。
App Distribution ビルド パラメータ | |
---|---|
appId
|
アプリの Firebase アプリ ID。Google サービスの Gradle プラグインがインストールされていない場合にのみ必須です。アプリ ID は、 appId="1:1234567890:android:321abc456def7890" |
serviceCredentialsFile
|
サービス アカウントの秘密鍵の JSON ファイルへのパス。サービス アカウント認証を使用する場合にのみ必要です。 |
artifactType
|
アプリのファイル形式を指定します。 |
artifactPath
|
アップロードする APK または AAB ファイルの絶対パス。 |
releaseNotes または releaseNotesFile |
このビルドのリリースノート。 リリースノートを直接指定することも、書式なしテキスト ファイルのパスを指定することもできます。 |
testers または testersFile |
ビルドの配布先のテスターのメールアドレス。 テスターは、メールアドレスのカンマ区切りのリストとして指定できます。 testers="ali@example.com, bri@example.com, cal@example.com" メールアドレスのカンマ区切りリストを含むファイルへのパスを指定することもできます。 testersFile="/path/to/testers.txt" |
groups または groupsFile |
ビルドの配布先のテスター グループ(テスターを管理するをご覧ください)。グループは グループは、グループ エイリアスのカンマ区切りのリストとして指定できます。 groups="qa-team, android-testers" グループ エイリアスのカンマ区切りリストを含むファイルへのパスを指定することもできます。 groupsFile="/path/to/tester-groups.txt" |
testDevices または testDevicesFile |
次の配布タイプは、自動テスターのベータ版機能の一部です。 ビルドを配布するテストデバイス(自動テストをご覧ください)。 テストデバイスは、デバイス仕様のセミコロンで区切ったリストとして指定できます。 testDevices="model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait" または、デバイス仕様のセミコロン区切りリストを含むファイルへのパスを指定することもできます。 testDevicesFile="/path/to/testDevices.txt" |
testUsername |
自動テスト中に使用する自動ログインのユーザー名。 |
testPassword または testPasswordFile |
自動テスト中に使用する自動ログイン用のパスワード。 または、パスワードを含む書式なしテキスト ファイルのパスを指定します。 testPasswordFile="/path/to/testPassword.txt" |
testUsernameResource |
自動テスト中に自動ログインに使用するユーザー名フィールドのリソース名。 |
testPasswordResource |
自動テスト中に自動ログインに使用するパスワード フィールドのリソース名。 |
testNonBlocking |
自動テストを非同期で実行します。自動テストの結果は Firebase コンソールで確認できます。 |
stacktrace
|
ユーザー例外のスタックトレースを出力します。これは問題のデバッグに役立ちます。 |
ステップ 4. テスターにアプリを配布する
最後にテストアプリをパッケージ化し、テスターを招待します。プロジェクトの Gradle ラッパーを使用して
BUILD-VARIANT
とappDistributionUploadBUILD-VARIANT
のターゲットをビルドします。BUILD-VARIANT は、前の手順で構成したオプションのプロダクト フレーバーとビルドタイプです。プロダクト フレーバーの詳細については、ビルド バリアントの構成をご覧ください。たとえば、
release
ビルド バリアントを使用してアプリを配布するには、次のコマンドを実行します。./gradlew bundleRelease appDistributionUploadRelease
または、Google アカウントで認証し、Gradle ビルドファイル内に認証情報を指定していない場合は、
FIREBASE_TOKEN
変数を含めます。export FIREBASE_TOKEN=1/a1b2c3d4e5f67890 ./gradlew --stop // Only needed for environment variable changes ./gradlew bundleRelease appDistributionUploadRelease
また、コマンドライン引数を
--<property-name>=<property-value>
の形式で渡して、build.gradle
ファイルに設定された値をオーバーライドすることもできます。次に例を示します。デバッグビルドを App Distribution にアップロードするには:
./gradlew bundleDebug appDistributionUploadDebug --artifactType="AAB"
Firebase プロジェクトからテスターを追加したり、既存のテスターを削除するには:
./gradlew appDistributionAddTesters --projectNumber=<project_number> --emails="anothertester@email.com, moretesters@email.com"
./gradlew appDistributionRemoveTesters --projectNumber=<project_number> --emails="anothertester@email.com, moretesters@email.com"
Firebase プロジェクトにテスターを追加した後、そのテスターを個々のリリースに追加できます。削除されたテスターはプロジェクト内のリリースにアクセスできなくなりますが、一定期間、リリースへのアクセス権を保持する場合があります。
--emails
の代わりに--file="/path/to/testers.txt"
を使用してテスターを指定することもできます。また、
appDistributionAddTesters
タスクとappDistributionRemoveTesters
タスクは次の引数を受け入れます。projectNumber
: Firebase プロジェクト番号。serviceCredentialsFile
: Google サービス認証情報ファイルのパス。これはアップロード アクションで使用される引数と同じです。
リリースのアップロード後、Gradle プラグインによって次のリンクが出力されます。これらのリンクにより、バイナリを管理し、テスターや他のデベロッパーが正しいリリースを入手できるようになります。
firebase_console_uri
- 1 つのリリースを表示する Firebase コンソールへのリンク。このリンクは、組織内の他のデベロッパーと共有できます。testing_uri
- テスター エクスペリエンス(Android ネイティブ アプリ)のリリースへのリンク。これを使用すると、テスターはリリースノートを表示し、アプリをデバイスにインストールできます。このリンクを使用するには、テスターにリリースへのアクセス権が必要です。binary_download_uri
- アプリのバイナリ(APK または AAB ファイル)を直接ダウンロードしてインストールする署名付きリンク。このリンクは 1 時間後に失効します。
ビルドを配布すると、Firebase コンソールの App Distribution ダッシュボードで 150 日間(5 か月間)利用できます。ビルドが期限切れになる 30 日前に、テストデバイス上のテスターのビルドリストとコンソールの両方に有効期限のお知らせが表示されます。
アプリのテストに招待されていないテスターには、開始するための招待メールが届きます。既存のテスターには、新しいビルドのテスト準備ができていることを知らせるメールが届きます(テストアプリのインストール手順についてはテスターの設定ガイドをご覧ください)。Firebase コンソールで各テスターのステータス(招待を承諾したか、アプリをダウンロードしたか)をモニタリングできます。
招待の有効期間は 30 日です。この期間内にテスターは招待を承諾してアプリのテストを開始できます。招待が期限切れになる 5 日前に、Firebase コンソール内の、リリースのテスターの横に有効期限のお知らせが表示されます。招待状は、テスターの行のプルダウン メニューから再送信して更新できます。
次のステップ
アプリ内フィードバックを実装して、テスターがアプリに関するフィードバック(スクリーンショットを含む)を簡単に送信できるようにする。
アプリの新しいビルドがインストール可能になった場合にテスターにアプリ内アラートを表示する方法を確認する。
App Bundle リリースを配布する詳しい手順については、Android App Bundle Codelab をご覧ください。
CI / CD を使用して QA テスターに Android アプリを配布するためのベスト プラクティスを確認する。