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


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

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

Zanim zaczniesz

Jeśli jeszcze tego nie zrobiono, dodaj Firebase do projektu na Androida.

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

Krok 1. Konfigurowanie projektu na Androida

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

    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.3" apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id("com.google.firebase.appdistribution") version "5.1.1" 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.3' apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id 'com.google.firebase.appdistribution' version '5.1.1' apply false
    }
  2. W pliku Gradle modułu (na poziomie aplikacji) (zazwyczaj <project>/<app-module>/build.gradle.kts lub <project>/<app-module>/build.gradle) dodaj App Distribution wtyczkę 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. Jeśli korzystasz z serwera proxy lub zapory sieciowej firmy, 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 korzystać z wtyczki Gradle, musisz najpierw uwierzytelnić się w projekcie Firebase na jeden z tych sposobów: Domyślnie wtyczka Gradle szuka danych logowania w interfejsie Firebase CLI, 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ć wersję release wśród testerów, postępuj zgodnie z tymi instrukcjami:

Kotlin

App Distribution
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 wersji produktu.

Aby na przykład rozpowszechniać wersje debugrelease w wariantach produktu „demo” i „full”, wykonaj te czynności:

Kotlin

App Distribution
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:

App Distribution Parametry kompilacji
appId

Identyfikator aplikacji 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ą 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 za pomocą 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 ścieżkę do pliku tekstowego.

testers lub testersFile

Adresy e-mail testerów, którym chcesz udostępnić wersje.

Możesz podać testerów jako listę adresów e-mail rozdzielonych 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

Możesz określić grupy 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

Te typy dystrybucji są częścią funkcji beta automatycznego testera.

Urządzenia testowe, na które chcesz rozpowszechniać kompilacje (patrz Testy automatyczne).

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

testDevices="model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,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 zautomatyzowanych testów.

testPassword lub testPasswordFile

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

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

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

Nazwa zasobu pola nazwy użytkownika na potrzeby automatycznego logowania, która będzie używana podczas testów zautomatyzowanych.

testPasswordResource

Nazwa zasobu pola hasła do automatycznego logowania, która będzie używana podczas testów zautomatyzowanych.

testNonBlocking

Uruchamiaj testy automatyczne asynchronicznie. Wyniki testów automatycznych znajdziesz w konsoli Firebase.

stacktrace

Wyświetla ślad stosu w przypadku wyjątków użytkownika. Jest to przydatne podczas debugowania problemów.

Krok 4. Udostępnianie aplikacji testerom

  1. Na koniec, aby spakować aplikację testową i zaprosić testerów, skompiluj elementy docelowe BUILD-VARIANT i appDistributionUploadBUILD-VARIANT za pomocą narzędzia Gradle Wrapper projektu, gdzie BUILD-VARIANT to opcjonalny wariant produktu i typ kompilacji skonfigurowany w poprzednim kroku. Więcej informacji o wersjach produktu znajdziesz w artykule Konfigurowanie wersji kompilacji.

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

    ./gradlew assembleRelease appDistributionUploadRelease
    

    Jeśli uwierzytelnianie odbyło się za pomocą konta Google, a w pliku build.gradle nie podano danych logowania, 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 formie --<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ąć obecnych testerów 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 Firebase możesz dodać go do poszczególnych wersji. Usunięci testerzy nie będą już mieli dostępu do wersji w Twoim projekcie, ale mogą nadal mieć dostęp do Twoich wersji przez pewien czas.

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

    Zadania appDistributionAddTestersappDistributionRemoveTesters przyjmują też te argumenty:

    • projectNumber: numer projektu Firebase.

    • serviceCredentialsFile: Ścieżka do pliku danych logowania do usługi Google. Jest to ten sam argument, który jest używany w działaniu przesyłania.

Po przesłaniu wersji wtyczka Gradle wyświetla te linki: Te linki pomogą Ci zarządzać plikami binarnymi i zapewnić testerom oraz innym deweloperom dostęp do odpowiedniej wersji:

  • firebase_console_uri – link do Firebase konsoli wyświetlającej pojedynczą wersję. Możesz udostępnić ten link innym programistom w swojej organizacji.
  • testing_uri – link do wersji w aplikacji dla testerów (natywna aplikacja na Androida), który umożliwia testerom wyświetlanie informacji o wersji i instalowanie aplikacji na urządzeniu. Aby skorzystać z 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 na App DistributionpaneluFirebase konsoli przez 150 dni (5 miesięcy). Gdy do wygaśnięcia kompilacji pozostanie 30 dni, 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 obecni testerzy otrzymają e-maile z powiadomieniem o tym, że nowa wersja jest gotowa do testowania (instrukcje instalacji testowej wersji aplikacji znajdziesz w przewodniku konfiguracji dla testerów). Stan każdego testera – czy zaakceptował zaproszenie i czy pobrał aplikację – możesz monitorować w konsoli Firebase.

Testerzy mają 30 dni na zaakceptowanie zaproszenia do testowania aplikacji, zanim utraci ono ważność. Gdy zaproszenie wygaśnie za 5 dni, w Firebasekonsoli obok testera w 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