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


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

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

事前準備

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

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

  2. 開啟 Firebase 控制台的「App Distribution」頁面。系統提示時,選取 Firebase 專案,使用產品切換工具選取應用程式,然後按一下「Get started」(開始使用)。

步驟 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 進行驗證

您必須先透過下列任一方式驗證 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。

舉例來說,如要發布「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 外掛程式時,才需要執行這項操作。您可以在 google-services.json 檔案中,或 Firebase 控制台的 一般設定頁面,找到應用程式 ID。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 控制台的「Testers」(測試人員) 分頁中找到群組別名。

您可以指定群組,方法是以半形逗號分隔群組別名清單:

groups="qa-team, android-testers"

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

groupsFile="/path/to/tester-groups.txt"
testDevices或testDevicesFile

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

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

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

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

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

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

testPassword或testPasswordFile

應用程式測試代理測試期間,自動登入所用的密碼。

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

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

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

testPasswordResource

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

testNonBlocking

如果在執行應用程式測試代理程式測試時設定,指令會啟動測試,然後立即傳回,而不是等待測試完成。如要查看測試結果,請前往 Firebase 控制台。如未設定這個旗標,指令會封鎖,直到測試完成為止,並在任何測試失敗時,以失敗代碼結束。

resultsBucket

儲存測試結果的自訂 Google Cloud Storage (GCS) bucket。如果留空,則會使用預設 bucket。值區必須由已啟用計費功能的專案擁有,且指定值區會產生所用儲存空間的費用。

stacktrace

列印使用者例外狀況的堆疊追蹤。這在偵錯時很有幫助。

步驟 4:將應用程式提供給測試人員

  1. 最後,如要封裝測試應用程式並邀請測試人員,請使用專案的 Gradle 包裝函式建構目標 BUILD-VARIANT 和 appDistributionUploadBUILD-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) 指定測試人員。

    appDistributionAddTesters 和 appDistributionRemoveTesters 工作也接受下列引數:

    • 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 控制台會顯示到期通知,就在版本測試人員旁邊。如要更新邀請,請使用測試人員列的下拉式選單重新傳送。

後續步驟