Udostępnianie aplikacji na Androida testerom przy użyciu Gradle


Możesz zintegrować App Distribution z procesem kompilacji na Androida za pomocą wtyczki App Distribution do obsługi Gradle. Wtyczka umożliwia określenie testerów i informacji o wersji w pliku Gradle aplikacji, co pozwala skonfigurować dystrybucję dla różnych typów i wariantów kompilacji aplikacji.

Z tego przewodnika dowiesz się, jak rozpowszechniać pliki APK wśród testerów za pomocą wtyczki Gradle App Distribution.

Zanim zaczniesz

  1. Dodaj Firebase do projektu aplikacji na Androida, jeśli nie korzystasz w nim jeszcze z tej usługi.

    Jeśli nie używasz żadnych innych usług Firebase, musisz tylko utworzyć projekt i zarejestrować aplikację. Jeśli jednak zdecydujesz się w przyszłości korzystać z dodatkowych usług, wykonaj wszystkie czynności opisane na stronie, do której link podano powyżej.

  2. Otwórz stronę App Distribution w konsoli Firebase. Gdy pojawi się prośba, wybierz projekt w Firebase, a następnie wybierz aplikację za pomocą przełącznika aplikacji i kliknij Rozpocznij.

Krok 1. Konfigurowanie projektu aplikacji na Androida

  1. W pliku Gradle na poziomie głównym (poziomie projektu) (<project>/build.gradle.kts lub <project>/build.gradle) dodaj wtyczkę App Distribution do obsługi Gradle jako zależność:

    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. W pliku Gradle modułu (na poziomie aplikacji) (zwykle <project>/<app-module>/build.gradle.kts lub <project>/<app-module>/build.gradle) dodaj wtyczkę Gradle App Distribution:

    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. Jeśli korzystasz z firmowego serwera proxy lub zapory sieciowej, dodaj tę właściwość systemu Java, która umożliwia App Distribution przesyłanie dystrybucji do Firebase:

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

Krok 2. Uwierzytelnianie za pomocą Firebase

Zanim zaczniesz używać wtyczki Gradle, musisz najpierw uwierzytelnić się w projekcie w Firebase na jeden z tych sposobów. Domyślnie wtyczka Gradle szuka danych logowania z interfejsu wiersza poleceń Firebase, jeśli nie jest używana żadna inna metoda uwierzytelniania.

Krok 3. Konfigurowanie właściwości dystrybucji

W pliku Gradle modułu (na poziomie aplikacji) (zwykle <project>/<app-module>/build.gradle.kts lub <project>/<app-module>/build.gradle) skonfiguruj App Distribution, dodając co najmniej 1 sekcję firebaseAppDistribution.

Aby na przykład rozpowszechnić kompilację release wśród testerów, wykonaj te czynności:

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"
          }
      }
  }

  // ...
}

Możesz skonfigurować App Distribution dla typów kompilacji i wariantów usługi.

Aby na przykład rozpowszechniać kompilacje debug i release w wariantach usługi „demo” i „full”, wykonaj te czynności:

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"
          }
      }
  }

  // ...
}

Aby skonfigurować dystrybucję, użyj tych parametrów:

Parametry kompilacji App Distribution
appId

Identyfikator aplikacji w Firebase. Wymagane tylko wtedy, gdy nie masz zainstalowanej wtyczki Gradle usług Google. Identyfikator aplikacji znajdziesz w pliku google-services.json lub w konsoli Firebase na stronie Ustawienia ogólne. Wartość w pliku build.gradle zastępuje wartość wyjściową z wtyczki google-services.

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

Ścieżka do pliku JSON klucza prywatnego konta usługi. Wymagane tylko wtedy, gdy używasz uwierzytelniania konta usługi.

artifactType

Określa typ pliku aplikacji. Może mieć wartość "AAB" lub "APK".

artifactPath

Ścieżka bezwzględna do pliku APK lub AAB, który chcesz przesłać.

releaseNotes lub releaseNotesFile

Informacje o wersji tej kompilacji.

Możesz podać informacje o wersji bezpośrednio lub podać ścieżkę do pliku zwykłego tekstu.

testers lub testersFile

Adresy e-mail testerów, którym chcesz udostępniać kompilacje.

Możesz określić testerów, podając ich adresy e-mail na liście rozdzielonej przecinkami:

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

Możesz też podać ścieżkę do pliku zawierającego listę adresów e-mail rozdzielonych przecinkami:

testersFile="/path/to/testers.txt"
groups lub groupsFile

Grupy testerów, którym chcesz udostępniać kompilacje (patrz Zarządzanie testerami). Grupy są określane za pomocą aliasów grup, które znajdziesz na karcie Testerzy w konsoli Firebase App Distribution.

Grupy możesz określić jako listę aliasów grup rozdzielonych przecinkami:

groups="qa-team, android-testers"

Możesz też podać ścieżkę do pliku zawierającego listę aliasów grup rozdzielonych przecinkami:

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

Urządzenia testowe, na których chcesz uruchomić testy agenta testowania aplikacji.

Urządzenia testowe możesz określić jako listę specyfikacji urządzeń rozdzielonych średnikami:

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

Możesz też podać ścieżkę do pliku zawierającego listę specyfikacji urządzeń rozdzielonych średnikami:

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

Nazwa użytkownika do automatycznego logowania, która będzie używana podczas testów agenta testowania aplikacji.

testPassword lub testPasswordFile

Hasło do automatycznego logowania, które będzie używane podczas testów agenta testowania aplikacji.

Możesz też podać ścieżkę do pliku zwykłego tekstu zawierającego hasło:

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

Nazwa zasobu pola nazwy użytkownika do automatycznego logowania, która będzie używana podczas testów agenta testowania aplikacji.

testPasswordResource

Nazwa zasobu pola hasła do automatycznego logowania, które ma być używane podczas testów agenta testowania aplikacji.

testNonBlocking

Jeśli ta opcja jest ustawiona podczas uruchamiania testów agenta testowania aplikacji, polecenie rozpocznie testy, a następnie natychmiast zwróci wynik, zamiast czekać na ich zakończenie. Aby zobaczyć wyniki testu, otwórz konsolę Firebase. Jeśli ta flaga nie jest ustawiona, polecenie będzie blokowane do momentu zakończenia testów i zakończy się kodem błędu, jeśli którykolwiek z testów się nie powiedzie.

resultsBucket

Niestandardowy zasobnik Google Cloud Storage (GCS), w którym są przechowywane wyniki testów. Jeśli pozostawisz to pole puste, zostanie użyty domyślny zasobnik. Zasobnik musi należeć do projektu z włączonymi płatnościami, a określenie zasobnika powoduje naliczenie opłat za wykorzystane miejsce na dane.

stacktrace

Wypisuje ślad stosu dla wyjątków użytkownika. Jest to przydatne podczas rozwiązywania problemów.

Krok 4. Rozpowszechnianie aplikacji wśród testerów

  1. Na koniec, aby spakować aplikację testową i zaprosić testerów, utwórz cele BUILD-VARIANT i appDistributionUploadBUILD-VARIANT za pomocą kodu Gradle projektu, gdzie BUILD-VARIANT to opcjonalny wariant usługi i typ kompilacji skonfigurowany w poprzednim kroku. Więcej informacji o wariantach usługi znajdziesz w artykule o konfigurowaniu wariantów kompilacji.

    Aby na przykład rozpowszechniać aplikację za pomocą wariantu kompilacji release, uruchom to polecenie:

    ./gradlew assembleRelease appDistributionUploadRelease
    

    Jeśli uwierzytelnianie zostało przeprowadzone za pomocą konta Google i nie podano danych logowania w pliku kompilacji Gradle, dodaj zmienną FIREBASE_TOKEN:

    export FIREBASE_TOKEN=1/a1b2c3d4e5f67890
    ./gradlew --stop // Only needed for environment variable changes
    ./gradlew assembleRelease appDistributionUploadRelease
    
  2. Możesz też zastąpić wartości ustawione w pliku build.gradle, przekazując argumenty wiersza poleceń w postaci --<property-name>=<property-value>. Przykład:

    • Aby przesłać kompilację do debugowania do App Distribution:

      ./gradlew bundleDebug appDistributionUploadDebug
          --artifactType="APK"
    • Aby zaprosić dodatkowych testerów lub usunąć dotychczasowych z projektu 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"

      Po dodaniu testera do projektu w Firebase możesz go dodać do poszczególnych wersji. Usunięci testerzy nie będą już mieli dostępu do wersji w Twoim projekcie, ale przez pewien czas mogą zachować dostęp do Twoich wersji.

    Możesz też określić testerów za pomocą --file="/path/to/testers.txt" zamiast --emails.

    Zadania appDistributionAddTesters i appDistributionRemoveTesters akceptują też te argumenty:

    • projectNumber: numer projektu w Firebase.

    • serviceCredentialsFile: ścieżka do pliku danych logowania do usługi Google. To ten sam argument, który jest używany przez działanie przesyłania.

Po przesłaniu wersji wtyczka Gradle wyświetla te linki. Te linki pomagają zarządzać plikami binarnymi i zapewniają testerom oraz innym deweloperom dostęp do właściwej wersji:

  • firebase_console_uri – link do konsoli Firebase wyświetlającej pojedyncze wydanie. Możesz udostępnić ten link innym deweloperom w swojej organizacji.
  • testing_uri – link do wersji w interfejsie testera (wbudowana aplikacja na Androida), który umożliwia testerom wyświetlanie informacji o wersji i instalowanie aplikacji na urządzeniu. Aby móc użyć linku, tester musi mieć dostęp do wersji.
  • binary_download_uri – podpisany link, który bezpośrednio pobiera i instaluje plik binarny aplikacji (plik APK lub AAB). Link wygasa po godzinie.

Po rozpowszechnieniu kompilacja będzie dostępna w panelu App Distribution w konsoli Firebase przez 150 dni (5 miesięcy). Na 30 dni przed wygaśnięciem kompilacji w konsoli i na liście kompilacji testera na urządzeniu testowym pojawi się powiadomienie o wygaśnięciu.

Testerzy, którzy nie zostali zaproszeni do testowania aplikacji, otrzymają e-maile z zaproszeniem do rozpoczęcia testów, a dotychczasowi testerzy otrzymają e-maile z powiadomieniem, że nowa kompilacja jest gotowa do testowania (instrukcje instalowania aplikacji testowej znajdziesz w przewodniku po konfiguracji dla testerów). W konsoli Firebase możesz sprawdzać stan każdego testera – czy zaakceptował zaproszenie i czy pobrał aplikację.

Testerzy mają 30 dni na przyjęcie zaproszenia do testowania aplikacji, zanim utraci ono ważność. Gdy do wygaśnięcia zaproszenia pozostanie 5 dni, w konsoli Firebase obok testera wersji pojawi się powiadomienie o wygaśnięciu. Zaproszenie można odnowić, wysyłając je ponownie za pomocą menu w wierszu testera.

Dalsze kroki