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 notatek o wersji w pliku Gradle aplikacji, co pozwala konfigurować dystrybucje dla różnych typów kompilacji i wariantów aplikacji.

Z tego przewodnika dowiesz się, jak rozpowszechniać pakiety Android App Bundle (AAB) wśród testerów za pomocą wtyczki Gradle App Distribution.

App Distribution integruje się z usługą wewnętrznego udostępniania aplikacji Google Play, aby przetwarzać przesyłane przez Ciebie pakiety AAB i udostępniać pliki APK zoptymalizowane pod kątem konfiguracji urządzeń testerów. Dystrybucja pakietów AAB umożliwia:

  • Uruchamiaj zoptymalizowane pliki APK (dostarczane przez Google Play), które są zoptymalizowane pod kątem urządzeń testerów.

  • Wykrywaj i usuwaj problemy występujące na konkretnych urządzeniach.

  • Testuj funkcje pakietu aplikacji, takie jak Play Feature Delivery i Play Asset Delivery.

  • Zmniejsz rozmiar pobieranych plików dla testerów.

Wymagane uprawnienia

Aby przesyłać pakiety AAB do App Distribution, musisz połączyć aplikację w Firebase z aplikacją w Google Play. Aby wykonać te działania, musisz mieć odpowiedni poziom dostępu.

Jeśli nie masz odpowiedniego dostępu do Firebase, możesz poprosić właściciela projektu w Firebase o przypisanie Ci odpowiedniej roli w Firebaseustawieniach Uprawnień konsoli. Jeśli masz pytania dotyczące dostępu do projektu w Firebase, w tym znajdowania lub przypisywania właściciela, zapoznaj się z odpowiedziami na najczęstsze pytania dotyczące uprawnień i dostępu do projektów w Firebase.

Poniższa tabela dotyczy łączenia aplikacji w Firebase z aplikacją w Google Play, a także przesyłania pakietów AAB.

Działanie w konsoli Firebase Wymagane uprawnienia IAM Role uprawnień, które domyślnie obejmują wymagane uprawnienia Dodatkowe wymagane role
Łączenie aplikacji w Firebase z aplikacją w Google Play firebase.playLinks.update jedną z tych ról: Dostęp do Google Playkonta dewelopera jako administrator.
Przesyłanie pakietów AAB do App Distribution firebaseappdistro.releases.update jedną z tych ról: ––

Zanim zaczniesz

  1. Dodaj Firebase do projektu aplikacji na Androida, jeśli nie korzystasz w nim jeszcze z tej usługi. Po zakończeniu tego przepływu pracy w projekcie w Firebase będzie dostępna aplikacja Firebase na Androida.

    Jeśli nie korzystasz z innych usług Firebase, wystarczy, że utworzysz projekt i zarejestrujesz aplikację. Jeśli zdecydujesz się używać dodatkowych usług, wykonaj wszystkie czynności opisane w artykule Dodawanie Firebase do projektu aplikacji na Androida.

    uwzględnia wielkość liter i nie można jej zmienić w Firebase po zarejestrowaniu aplikacji w projekcie w Firebase.
  2. Otwórz App Distribution stronę konsoli Firebase. Gdy pojawi się odpowiedni komunikat, wybierz projekt w Firebase, a następnie wybierz aplikację za pomocą przełącznika aplikacji i kliknij Rozpocznij.

  3. Aby utworzyć połączenie z Firebase z Google Play i przesyłać pakiety aplikacji na Androida, sprawdź, czy Twoja aplikacja spełnia te wymagania:

    • Zarówno aplikacja w Google Play, jak i aplikacja Firebase na Androida zostały zarejestrowane przy użyciu tej samej nazwy pakietu.

    • Aplikacja w Google Play jest skonfigurowana w panelu aplikacji i rozpowszechniana na jednej ze ścieżek Google Play (test wewnętrzny, test zamknięty, test otwarty lub produkcja).

    • Zakończono sprawdzanie aplikacji w Google Play i aplikacja została opublikowana. Aplikacja jest opublikowana, jeśli w kolumnie Stan aplikacji widoczny jest jeden z tych stanów: Test wewnętrzny (nie Test wewnętrzny – wersja robocza), Test zamknięty, Test otwarty lub Produkcja.

  4. Połącz aplikację Firebase na Androida z kontem dewelopera w Google Play:

    1. W konsoli Firebase otwórz Ustawienia projektu, a następnie kliknij kartę Integracje.

    2. Na karcie Google Play kliknij Połącz.
      Jeśli masz już połączenia z Google Play, kliknij Zarządzaj.

    3. Postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby włączyć App Distributionintegrację i wybrać aplikacje Firebase na Androida, które chcesz połączyć z Google Play.

    Dowiedz się więcej o łączeniu z Google Play.

Krok 1. Konfigurowanie projektu aplikacji na Androida

  1. W pliku Gradle na poziomie głównym (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.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 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 w Firebase na jeden z tych sposobów. Domyślnie wtyczka Gradle szuka danych logowania w interfejsie 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ć wersję release wśród testerów, postępuj zgodnie z tymi instrukcjami:

Kotlin

import com.google.firebase.appdistribution.gradle.firebaseAppDistribution

android {

  // ...

  buildTypes {
      getByName("release") {
          firebaseAppDistribution {
              artifactType = "AAB"
              releaseNotesFile = "/path/to/releasenotes.txt"
              testers = "ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

Groovy

android {

  // ...

  buildTypes {
      release {
          firebaseAppDistribution {
              artifactType="AAB"
              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 debug i release w wariantach „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:

App Distribution Parametry kompilacji
appId

Identyfikator aplikacji Firebase. Wymagane tylko wtedy, gdy nie masz zainstalowanej wtyczki Gradle do 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żna ustawić wartość "AAB" lub "APK".

artifactPath

Ścieżka bezwzględna do pliku APK lub pakietu aplikacji na Androida, 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 w formacie zwykłego tekstu.

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 oddzielonych 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ępnić kompilacje (patrz Zarządzanie testerami). Grupy są określane za pomocą aliasów grup, które znajdziesz na karcie Testerzy w konsoli FirebaseApp Distribution.

Możesz podać grupy jako rozdzieloną przecinkami listę 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

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

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

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

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

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 tekstowego 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 to ustawienie jest włączone podczas przeprowadzania testów za pomocą agenta testowania aplikacji, polecenie rozpocznie testy, a następnie natychmiast zwróci wynik, zamiast czekać na ich zakończenie. Aby wyświetlić wyniki testu, otwórz konsolę Firebase. Jeśli ten flag nie jest ustawiony, polecenie będzie blokowane do czasu 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 to pole pozostanie puste, użyty zostanie zasobnik domyślny. Zasobnik musi należeć do projektu, w którym włączono płatności, a określenie zasobnika powoduje naliczanie opłat za wykorzystane miejsce na dane.

stacktrace

Wyświetla ślad stosu 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 o konfigurowaniu wariantów kompilacji.

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

    ./gradlew bundleRelease 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 bundleRelease 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="AAB"
    • 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 w Firebase możesz dodać go do poszczególnych wersji. Usunięci testerzy nie będą już mieć dostępu do wersji w Twoim projekcie, ale przez pewien czas mogą nadal mieć dostęp do Twoich wersji.

    Możesz też określić testerów za pomocą właściwości --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 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 (wbudowanej aplikacji na Androida), który umożliwia testerom wyświetlanie informacji o wersji i instalowanie aplikacji na urządzeniu. Aby 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 App DistributionpaneluFirebase konsoli przez 150 dni (5 miesięcy). Gdy do wygaśnięcia wersji pozostanie 30 dni, w konsoli i na liście wersji 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 dla testerów). Stan każdego testera – czy zaakceptował zaproszenie i czy pobrał aplikację – możesz monitorować w Firebase.

Testerzy mają 30 dni na przyjęcie zaproszenia do testowania aplikacji, zanim utraci ono ważność. Gdy zaproszenie będzie wygasać 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