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

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

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

事前準備

如果您尚未將 Firebase 新增至 Android 專案,請先完成這項操作。

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

步驟 1:設定 Android 專案

  1. 根層級 (專案層級) Gradle 檔案 (<project>/build.gradle.kts<project>/build.gradle) 中,將應用程式發布 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) 中,新增應用程式發布 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 系統屬性,讓「應用程式發布」能將您的發行版上傳至 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 區段來設定應用程式發布。

舉例來說,如要將 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"
          }
      }
  }

  // ...
}

您可以針對建構類型和變種版本設定應用程式發布。

舉例來說,如要在「試用版」和「完整」變種版本中發布 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"
          }
      }
  }

  // ...
}

使用下列參數設定分佈:

應用程式發布版本參數
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 檔案的絕對路徑。

releaseNotesreleaseNotesFile

這個版本的版本資訊。

您可以直接指定版本資訊,或是純文字檔案的路徑。

testerstestersFile

您要發布版本的目標測試人員電子郵件地址。

您可以利用逗號分隔的電子郵件地址清單形式指定測試人員:

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

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

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

您要發布版本的測試人員群組 (請參閱「管理測試人員」)。您必須使用群組別名來指定群組,該別名位於 Firebase 應用程式發布主控台的「測試人員」分頁中。

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

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 檔案中設定的值。例如:

    • 如何將偵錯版本上傳至「應用程式發布」:

      ./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 控制台的「應用程式發布」資訊主頁中會顯示 150 天 (五個月)。當版本過期 30 天後,主控台和測試人員的測試裝置上的版本清單都會顯示到期通知。

尚未受邀測試應用程式的測試人員會收到電子郵件入門邀請,現有測試人員則會收到新版本已可測試的電子郵件通知 (請參閱測試人員設定指南,瞭解如何安裝測試應用程式)。您可以監控每位測試人員的狀態,確認他們是否接受邀請,以及是否在 Firebase 控制台中下載應用程式。

測試人員有 30 天的時間可以接受邀請,在到期前接受測試應用程式。 邀請到期後的 5 天,每當有版本測試的測試人員旁邊,Firebase 控制台就會顯示到期通知。您可以使用測試人員列的下拉式選單重新傳送邀請,藉此續訂。

後續步驟