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


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

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

事前準備

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

如果您不使用任何其他 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. 如果您使用公司 Proxy 或防火牆,請新增下列 Java 系統屬性,讓 App Distribution 能夠將發布內容上傳至 Firebase:

    -Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
    

步驟 2:使用 Firebase 進行驗證

您必須先透過下列任一方式驗證 Firebase 專案,才能使用 Gradle 外掛程式。根據預設,如果未使用其他驗證方法,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 建構項目分發至「demo」和「full」變種版本,請按照下列操作說明操作:

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 控制台的「Testers」分頁中找到這些群組。

您可以透過逗號分隔的清單列出群組別名:

groups="qa-team, android-testers"

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

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

以下發布類型屬於 自動測試人員 Beta 版功能

您要將版本發布的測試裝置 (請參閱「自動化測試」)。

您可以將測試裝置指定為裝置規格清單,並以分號分隔:

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

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

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

自動化測試期間要使用的自動登入使用者名稱。

testPasswordtestPasswordFile

自動化測試期間用於自動登入的密碼。

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

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 專案後,您可以將他們加入個別版本。移除的測試人員將無法再存取專案中的版本,但可能仍可在一段時間內存取您的版本。

    您也可以使用 --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 控制台會在版本測試人員旁邊顯示到期通知。您可以使用測試人員資料列的下拉式選單,重新傳送邀請,藉此續訂邀請。

後續步驟