使用 Gradle 將 Android 應用程式發布給測試人員


您可以使用 App Distribution Gradle 外掛程式,將 App Distribution 整合至 Android 建構程序。您可以在應用程式的 Gradle 檔案中指定測試人員和版本說明,並為應用程式的不同建構類型和變體設定發布作業。

本指南說明如何使用 App Distribution Gradle 外掛程式,將 APK 分發給測試人員。

事前準備

  1. 如果尚未新增,請將 Firebase 新增至 Android 專案

    如果您沒有使用任何其他 Firebase 產品,只需要建立專案並註冊應用程式即可。不過,如果您日後決定使用其他產品,請務必完成上述連結頁面中的所有步驟。

  2. 開啟 Firebase 控制台的「App Distribution」頁面。系統提示時選取 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.5.0" apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id("com.google.firebase.appdistribution") version "5.3.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.5.0' apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id 'com.google.firebase.appdistribution' version '5.3.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. 如果您使用公司 Proxy 或防火牆,請新增下列 Java 系統屬性,讓 App Distribution 將發行版本上傳至 Firebase:

    -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) 中,新增至少一個 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

舉例來說,如要在「試用版」和「完整版」變種版本中發布 debugrelease 建構版本,請按照下列指示操作:

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 外掛程式時,才需要執行這個步驟。您可以在 google-services.json 檔案中找到應用程式 ID,也可以在Firebase控制台的「General Settings」(一般設定) 頁面中找到。build.gradle 檔案中的值會覆寫 google-services 外掛程式輸出的值。

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

服務帳戶私密金鑰 JSON 檔案的路徑。只有在使用服務帳戶驗證時才需要。

artifactType

指定應用程式的檔案類型。可以設為 "AAB""APK"

artifactPath

要上傳的 APK 或 AAB 檔案絕對路徑。

releaseNotesreleaseNotesFile

這個版本的版本資訊。

您可以直接指定版本說明,也可以指定純文字檔案的路徑。

testerstestersFile

要將建構版本發布給測試人員的電子郵件地址。

您可以指定測試人員,方法是以半形逗號分隔電子郵件地址清單:

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

或者,您也可以指定包含以半形逗號分隔電子郵件地址清單的檔案路徑:

testersFile="/path/to/testers.txt"
groupsgroupsFile

要發布建構版本的測試人員群組 (請參閱「管理測試人員」)。群組是使用群組別名指定,您可以在 Firebase App Distribution 控制台的「測試人員」分頁中找到別名。

您可以透過以半形逗號分隔的群組別名清單指定群組:

groups="qa-team, android-testers"

或者,您也可以指定檔案路徑,該檔案包含以半形逗號分隔的群組別名清單:

groupsFile="/path/to/tester-groups.txt"
testDevicestestDevicesFile

要執行應用程式測試代理測試的測試裝置。

您可以指定測試裝置,方法是以半形分號分隔裝置規格清單:

testDevices="model=shiba,version=34,locale=en,orientation=portrait"

或者,您也可以指定檔案路徑,該檔案包含以半形分號分隔的裝置規格清單:

testDevicesFile="/path/to/testDevices.txt"
testUsername

App Testing 代理程式測試期間,用於自動登入的使用者名稱。

testPasswordtestPasswordFile

應用程式測試代理程式測試期間,系統會使用這個密碼自動登入。

或者,您也可以指定含有密碼的純文字檔路徑:

testPasswordFile="/path/to/testPassword.txt"
testUsernameResource

使用者名稱欄位的資源名稱,用於 App Testing 代理程式測試期間的自動登入。

testPasswordResource

應用程式測試代理程式測試期間,用於自動登入的密碼欄位資源名稱。

testNonBlocking

如果在執行 App Testing 代理程式測試時設定,指令會啟動測試,然後立即傳回結果,不會等待測試完成。如要查看測試結果,請前往 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 專案後,即可將他們加入個別版本。遭移除的測試人員將無法再存取專案中的版本,但可能仍可在一段時間內存取您的版本。

    您也可以使用 --file="/path/to/testers.txt" 指定測試人員,而非 --emails

    appDistributionAddTestersappDistributionRemoveTesters 工作也接受下列引數:

    • projectNumber:您的 Firebase 專案編號。

    • serviceCredentialsFile:Google 服務憑證檔案的路徑。這與上傳動作使用的引數相同。

Gradle 外掛程式會在上傳版本後輸出下列連結。您可以透過這些連結管理二進位檔,並確保測試人員和其他開發人員取得正確版本:

  • firebase_console_uri - 顯示單一版本的Firebase控制台連結。您可以與貴機構的其他開發人員分享這個連結。
  • testing_uri - 測試人員體驗中的版本連結 (Android 原生應用程式),可讓測試人員查看版本說明,並在裝置上安裝應用程式。測試人員必須有權存取版本,才能使用連結。
  • binary_download_uri:已簽署的連結,可直接下載及安裝應用程式二進位檔 (APK 或 AAB 檔案)。連結將於一小時後失效。

發布版本後,該版本會在 Firebase 控制台的 App Distribution 資訊主頁中保留 150 天 (五個月)。如果建構版本即將在 30 天後過期,控制台和測試裝置的建構版本清單都會顯示過期通知。

尚未受邀測試應用程式的測試人員會收到電子郵件邀請,現有測試人員則會收到電子郵件通知,告知他們有新版本可供測試 (如需安裝測試版應用程式的操作說明,請參閱測試人員設定指南)。您可以在 Firebase 控制台中,監控每位測試人員的狀態,包括是否接受邀請及是否下載應用程式。

測試人員有 30 天的時間可以接受應用程式測試邀請,邀請過期後將失效。 如果邀請即將在 5 天後到期,Firebase控制台會在版本中測試人員旁邊顯示到期通知。如要續發邀請,請使用測試人員列的下拉式選單重新傳送邀請。

後續步驟