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

Możesz zintegrować Rozpowszechnianie aplikacji z procesem kompilacji na Androida, korzystając z wtyczki do Gradle dystrybucji aplikacji. Wtyczka umożliwia wskazanie testerów i informacji o wersji w pliku Gradle aplikacji, co pozwala skonfigurować dystrybucję różnych typów kompilacji i wariantów aplikacji.

Z tego przewodnika dowiesz się, jak rozpowszechniać pliki APK testerom za pomocą wtyczki do Gradle dystrybucji aplikacji.

Zanim zaczniesz

Dodaj Firebase do swojego projektu na Androida, chyba że masz to już za sobą.

Jeśli nie korzystasz z ż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, musisz wykonać wszystkie czynności na stronie, do której link znajdziesz powyżej.

Krok 1. Skonfiguruj projekt na Androida

  1. W pliku Gradle na poziomie głównym (na poziomie projektu) (<project>/build.gradle.kts lub <project>/build.gradle) dodaj wtyczkę do Gradle do dystrybucji aplikacji 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. Do pliku Gradle modułu (na poziomie aplikacji) (zwykle <project>/<app-module>/build.gradle.kts lub <project>/<app-module>/build.gradle) dodaj wtyczkę do Gradle dystrybucji aplikacji:

    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ść systemową Java, która umożliwia Rozpowszechnianiu aplikacji do przesyłania dystrybucji do Firebase:

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

Krok 2. Uwierzytelnij za pomocą Firebase

Zanim użyjesz wtyczki do Gradle, musisz uwierzytelnić się w projekcie Firebase na jeden z poniższych sposobów. Domyślnie wtyczka do Gradle szuka danych logowania w interfejsie wiersza poleceń Firebase, jeśli nie jest używana żadna inna metoda uwierzytelniania.

Krok 3. Skonfiguruj 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 Rozpowszechnianie aplikacji, dodając co najmniej 1 sekcję firebaseAppDistribution.

Aby na przykład udostępnić testerom kompilację release, 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"
          }
      }
  }

  // ...
}

Rozpowszechnianie aplikacji możesz skonfigurować pod kątem typów kompilacji i różnych rodzajów usług.

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:

Parametry kompilacji w App Distribution
appId

Identyfikator aplikacji Firebase Twojej aplikacji. Wymagane tylko wtedy, gdy nie masz zainstalowanej wtyczki do obsługi Gradle usług Google. Identyfikator aplikacji znajdziesz w pliku google-services.json lub w konsoli Firebase na stronie ustawień ogólnych. 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 korzystasz z uwierzytelniania za pomocą konta usługi.

artifactType

Określa typ pliku aplikacji. Można ustawić "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ć informacje o wersji bezpośrednio lub ścieżkę do zwykłego pliku tekstowego.

testers lub testersFile

Adresy e-mail testerów, którym chcesz dystrybuować kompilacje.

Testerów możesz podać w postaci listy oddzielonych przecinkami adresów e-mail:

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

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

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

Grupy testerów, którym chcesz rozpowszechniać kompilacje (zobacz Zarządzanie testerami). Grupy określa się za pomocą aliasów grup, które znajdziesz na karcie Testerzy w konsoli Rozpowszechniania aplikacji przez Firebase.

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 rozdzieloną przecinkami listę aliasów grup:

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 rozpowszechniać kompilacje (patrz Testy automatyczne).

Urządzenia testowe możesz podać w postaci listy rozdzielanej średnikami specyfikacji urządzenia:

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 się podczas testów automatycznych.

testPassword lub testPasswordFile

Hasło do automatycznego logowania używane podczas testów automatycznych.

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

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

Nazwa zasobu w polu nazwy użytkownika na potrzeby automatycznego logowania, które jest używane podczas testów automatycznych.

testPasswordResource

Nazwa zasobu w polu hasła na potrzeby automatycznego logowania się podczas testów automatycznych.

testNonBlocking

asynchronicznie uruchamiać testy automatyczne, Otwórz konsolę Firebase, aby wyświetlić wyniki automatycznych testów.

stacktrace

Drukuje zrzut stosu dla wyjątków dotyczących użytkowników. Jest to przydatne podczas debugowania problemów.

Krok 4. Udostępnianie aplikacji testerom

  1. Na koniec, aby spakować aplikację testową i zaprosić testerów, utwórz cele BUILD-VARIANT i appDistributionUploadBUILD-VARIANT za pomocą otoki Gradle projektu, gdzie BUILD-VARIANT to opcjonalny rodzaj usługi i typ kompilacji skonfigurowane w poprzednim kroku. Więcej informacji o odmianach produktów 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. Możesz też zastąpić wartości ustawione w pliku build.gradle, przekazując argumenty wiersza poleceń w formacie --<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 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 utracą dostęp do wersji w projekcie, ale mogą zachować do nich dostęp przez pewien czas.

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

    Zadania appDistributionAddTesters i appDistributionRemoveTesters akceptują też te argumenty:

    • projectNumber: numer projektu Firebase.

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

Po przesłaniu wersji wtyczka do Gradle generuje poniższe linki. Te linki ułatwiają zarządzanie plikami binarnymi oraz sprawdzanie, czy testerzy i inni deweloperzy mają odpowiednią wersję:

  • firebase_console_uri – link do konsoli Firebase wyświetlającego pojedynczą wersję. Możesz udostępnić ten link innym deweloperom w Twojej organizacji.
  • testing_uri – link do wersji w interfejsie testera (aplikacja natywna na Androida), który umożliwia testerom wyświetlenie informacji o wersji i zainstalowanie aplikacji na urządzeniach. Tester musi mieć dostęp do wersji, aby użyć linku.
  • 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 kompilacji będzie ona dostępna w panelu Rozpowszechniania aplikacji w konsoli Firebase przez 150 dni (5 miesięcy). Gdy upłynie 30 dni od wygaśnięcia kompilacji, zarówno w konsoli, jak i na liście kompilacji testera na urządzeniu testowym pojawi się odpowiednie powiadomienie.

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). Możesz monitorować stan każdego testera – czy zaakceptował zaproszenie i czy pobrał aplikację za pomocą konsoli Firebase.

Testerzy mają 30 dni na zaakceptowanie zaproszenia do testowania aplikacji, zanim wygaśnie. Jeśli zaproszenie wygasa po 5 dniach, w konsoli Firebase obok wersji pojawia się powiadomienie o wygaśnięciu. Zaproszenie można odnowić, wysyłając je ponownie, korzystając z menu w wierszu testera.

Dalsze kroki