Gradle で Android アプリをテスターに配布する


App Distribution Gradle プラグインを使用すると、App Distribution を Android ビルドプロセスに統合できます。このプラグインを使用すると、アプリの Gradle ファイルでテスターとリリースノートを指定して、アプリのさまざまなビルドタイプやバリアントを配布できます。

このガイドでは、App Distribution Gradle プラグインを使用して APK をテスターに配布する方法について説明します。

始める前に

まだ Firebase を Android プロジェクトに追加していない場合は追加します。

他の Firebase プロダクトを使用していない場合は、プロジェクトを作成してアプリを登録するだけでかまいません。ただし、今後追加のプロダクトを使用する場合は、上述のリンク先のページのステップをすべて完了してください。

ステップ 1. Android プロジェクトを設定する

  1. ルートレベル(プロジェクト レベル)の 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
    }
  2. モジュール(アプリレベル)の 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'
    }
  3. 企業のプロキシやファイアウォールの背後にいる場合は、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 = "APK"
              releaseNotesFile = "/path/to/releasenotes.txt"
              testers = "ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

Groovy

android {

  // ...

  buildTypes {
      release {
          firebaseAppDistribution {
              artifactType="APK"
              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 は、google-services.json ファイルまたは Firebase コンソールの全般設定ページで確認できます。build.gradle ファイル内の値は、google-services プラグインの出力値をオーバーライドします。

appId="1:1234567890:android:321abc456def7890"
serviceCredentialsFile

サービス アカウントの秘密鍵の JSON ファイルへのパス。サービス アカウント認証を使用する場合にのみ必要です。

artifactType

アプリのファイル形式を指定します。"AAB" または "APK" に設定できます。

artifactPath

アップロードする APK または AAB ファイルの絶対パス。

releaseNotes または releaseNotesFile

このビルドのリリースノート。

リリースノートを直接指定することも、書式なしテキスト ファイルのパスを指定することもできます。

testers または testersFile

ビルドの配布先のテスターのメールアドレス。

テスターは、メールアドレスのカンマ区切りのリストとして指定できます。

testers="ali@example.com, bri@example.com, cal@example.com"

メールアドレスのカンマ区切りリストを含むファイルへのパスを指定することもできます。

testersFile="/path/to/testers.txt"
groups または groupsFile

ビルドの配布先のテスター グループ(テスターを管理するをご覧ください)。グループはグループ エイリアスを使用して指定します。グループ エイリアスは、Firebase App Distribution コンソールの [テスター] タブにあります。

グループは、グループ エイリアスのカンマ区切りのリストとして指定できます。

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. テスターにアプリを配布する

  1. 最後にテストアプリをパッケージ化し、テスターを招待します。プロジェクトの Gradle ラッパーを使用して BUILD-VARIANTappDistributionUploadBUILD-VARIANT のターゲットをビルドします。BUILD-VARIANT は、前の手順で構成したオプションのプロダクト フレーバーとビルドタイプです。プロダクト フレーバーの詳細については、ビルド バリアントの構成をご覧ください。

    たとえば、release ビルド バリアントを使用してアプリを配布するには、次のコマンドを実行します。

    ./gradlew assembleRelease appDistributionUploadRelease
    

    または、Google アカウントで認証し、Gradle ビルドファイル内に認証情報を指定していない場合は、FIREBASE_TOKEN 変数を含めます。

    export FIREBASE_TOKEN=1/a1b2c3d4e5f67890
    ./gradlew --stop // Only needed for environment variable changes
    ./gradlew assembleRelease appDistributionUploadRelease
    
  2. また、コマンドライン引数を --<property-name>=<property-value> の形式で渡して、build.gradle ファイルに設定された値をオーバーライドすることもできます。例:

    • デバッグビルドを App Distribution にアップロードするには:

      ./gradlew bundleDebug appDistributionUploadDebug
          --artifactType="APK"
    • 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 コンソール内の、リリースのテスターの横に有効期限のお知らせが表示されます。招待状は、テスターの行のプルダウン メニューから再送信して更新できます。

次のステップ