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. W pluginie możesz określić testerów i notatki o wersji w pliku Gradle aplikacji, co umożliwia konfigurowanie dystrybucji dla różnych typów kompilacji i wariantów aplikacji.

Z tego przewodnika dowiesz się, jak udostępniać pliki APK testerom za pomocą wtyczki do Gradle App Distribution.

Zanim zaczniesz

Jeśli nie zostało to jeszcze zrobione, 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ę na korzystanie z dodatkowych usług, wykonaj wszystkie czynności opisane na stronie, do której link znajduje się powyżej.

Krok 1. Konfigurowanie projektu na Androida

  1. pliku Gradle na poziomie katalogu głównego (na poziomie projektu) (<project>/build.gradle.kts lub <project>/build.gradle) dodaj wtyczkę Gradle App Distribution 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.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. 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. Uwierzytelnienie za pomocą Firebase

Aby móc korzystać z wtyczki Gradle, musisz najpierw uwierzytelnić się w projekcie Firebase w jeden z tych sposobów. Domyślnie wtyczka Gradle szuka danych logowania w CLI 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ć wersję 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 wersji produktu.

Aby na przykład rozpowszechniać kompilacje debug i release w wersji demonstracyjnej i pełnej, postępuj zgodnie z tymi instrukcjami:

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:

App Distribution Parametry kompilacji
appId

Identyfikator aplikacji Firebase Twojej aplikacji. Wymagane tylko wtedy, gdy nie masz zainstalowanej wtyczki Gradle dla 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ść z plugina google-services.

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

Ścieżka do pliku JSON klucza prywatnego konta usługi. Wymagane tylko wtedy, gdy korzystasz z 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 pakietu AAB, który chcesz przesłać.

releaseNotes lub releaseNotesFile

Informacje o wersji tej kompilacji.

Możesz podać bezpośrednio notatki do wersji lub ścieżkę do pliku tekstowego.

testers lub testersFile

Adresy e-mail testerów, do których chcesz rozprowadzać kompilacje.

Testerów możesz wskazać 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 rozpowszechniać kompilacje (zobacz Zarządzanie testerami). Grupy są określane za pomocą aliasów grup, które można znaleźć na karcie Testerzy w konsoli FirebaseApp Distribution.

Możesz podać te grupy w postaci listy oddzielonych przecinkami aliasów grup:

groups="qa-team, android-testers"

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

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

Poniższe typy dystrybucji są częścią funkcji automatycznych testerów w wersji beta.

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

Urządzenia testowe możesz określić jako listę specyfikacji urządzeń rozdzieloną ś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ącą rozdzieloną średnikami listę specyfikacji urządzenia:

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

Nazwa użytkownika do automatycznego logowania, która ma być używana podczas testów zautomatyzowanych.

testPassword lub testPasswordFile

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

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

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

Nazwa zasobu dla pola nazwy użytkownika do automatycznego logowania, które ma być używane podczas testów zautomatyzowanych.

testPasswordResource

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

testNonBlocking

asynchronicznie przeprowadzać testy automatyczne; Wyniki automatycznego testu znajdziesz w konsoli Firebase.

stacktrace

Wypisuje ścieżkę śledzenia wyjątków dotyczących użytkownika. Jest to przydatne podczas rozwiązywania problemów.

Krok 4. Udostępnianie aplikacji testerom

  1. Aby spakować testową wersję aplikacji i zaprosić testerów, skompiluj cele BUILD-VARIANTappDistributionUploadBUILD-VARIANT za pomocą owijarki Gradle projektu, gdzie BUILD-VARIANT to opcjonalny wariant produktu i typ kompilacji skonfigurowane w poprzednim kroku. Więcej informacji o wersjach produktu znajdziesz w artykule Konfigurowanie wersji kompilacji.

    Aby na przykład dystrybuować aplikację przy użyciu wariantu kompilacji release, uruchom to polecenie:

    ./gradlew assembleRelease appDistributionUploadRelease
    

    W przypadku uwierzytelnienia za pomocą konta Google bez podania danych logowania w pliku kompilacji Gradle uwzględnij zmienną FIREBASE_TOKEN:

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

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

      ./gradlew bundleDebug appDistributionUploadDebug
          --artifactType="APK"
    • Aby zaprosić dodatkowych testerów lub usunąć obecnych testerów z Twojego 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 go dodać do poszczególnych wersji. Usunięcie testerów spowoduje, że nie będą już mieć dostępu do wersji w Twoim projekcie, ale mogą zachować dostęp do wersji przez pewien czas.

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

    Zadania appDistributionAddTesters i appDistributionRemoveTesters akceptują też te argumenty:

    • projectNumber: numer projektu Firebase.

    • serviceCredentialsFile: ścieżka do pliku z danymi logowania do usługi Google. Jest to ten sam argument używany w działaniu przesyłania.

Po przesłaniu wersji wtyczka Gradle generuje te linki. Te linki pomogą Ci zarządzać plikami binarnymi i zadbać o to, aby testerzy i inni deweloperzy mieli odpowiednią wersję:

  • firebase_console_uri – link do konsoli Firebase, na której wyświetla się pojedyncza wersja. Możesz udostępnić ten link innym programistom w Twojej organizacji.
  • testing_uri – link do wersji w interfejsie testowania (natywnej aplikacji na Androida), który umożliwia testerom wyświetlanie notatek dotyczących wersji i instalowanie aplikacji na urządzeniu. Tester musi mieć dostęp do wersji, aby użyć linku.
  • binary_download_uri – podpisany link, który bezpośrednio pobiera i instaluje binarne dane aplikacji (plik APK lub AAB). Link wygasa po godzinie.

Po rozpowszechnieniu wersji kompilacji będzie ona dostępna w panelu App Distribution konsoli Firebase przez 150 dni (5 miesięcy). Gdy do wygaśnięcia wersji pozostało 30 dni, w konsoli i na liście wersji na urządzeniu testowym testera pojawi się powiadomienie o wygaśnięciu.

Testerzy, którzy nie zostali zaproszeni do testowania aplikacji, otrzymują e-maile z zaproszeniem do rozpoczęcia testowania, a dotychczasowi testerzy otrzymują e-maile z powiadomieniami o tym, że nowa kompilacja jest gotowa do przetestowania (instrukcje instalowania aplikacji testowej znajdziesz w przewodniku po konfiguracji aplikacji dla testerów). Stan każdego testującego (czy zaakceptował zaproszenie i czy pobrał aplikację) możesz sprawdzać w konsoli Firebase.

Testerzy mają 30 dni na zaakceptowanie zaproszenia do testowania aplikacji, zanim wygaśnie. Gdy do wygaśnięcia zaproszenia pozostaną 5 dni, w konsoli Firebase obok testera w ramach danej wersji pojawi się powiadomienie o wygaśnięciu. Zaproszenie można odnowić, wysyłając je ponownie za pomocą menu w wierszu testującego.

Dalsze kroki