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ć pakiety Android App Bundle (AAB) wśród testerów za pomocą wtyczki Gradle App Distribution.
Usługa 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:
uruchamiać zoptymalizowane pliki APK (udostępniane przez Google Play), które są dostosowane do urządzeń testerów;
wykrywać i rozwiązywać problemy związane z urządzeniami;
testować funkcje pakietu aplikacji, takie jak Play Feature Delivery i Play Asset Delivery;
Zmniejsz rozmiar plików do pobrania dla testerów.
Wymagane uprawnienia
Aby przesyłać pakiety aplikacji na Androida do usługi App Distribution, musisz połączyć aplikację w Firebase z aplikacją w usłudze Google Play. Aby wykonać te czynności, musisz mieć wymagany poziom dostępu.
Jeśli nie masz wymaganego dostępu do Firebase, możesz poprosić właściciela projektu w Firebase o przypisanie Ci odpowiedniej roli w ustawieniach uprawnień konsoli Firebase. Jeśli masz pytania dotyczące dostępu do projektu w Firebase, w tym znajdowania lub przypisywania właściciela, zapoznaj się z najczęstszymi pytaniami dotyczącymi uprawnień i dostępu do projektów w Firebase.
Poniższa tabela dotyczy łączenia aplikacji w Firebase z aplikacją w Google Play oraz przesyłania pakietów aplikacji na Androida.
| Działanie w konsoli Firebase | Wymagane uprawnienia | Role uprawnień, które domyślnie obejmują wymagane uprawnienia | Dodatkowe wymagane role |
|---|---|---|---|
| Połącz aplikację w Firebase z aplikacją w usłudze Google Play | firebase.playLinks.update
|
Jedna z tych ról: | Dostęp do konta dewelopera Google Play jako administrator |
| Przesyłanie pakietów aplikacji na Androida do: App Distribution | firebaseappdistro.releases.update
|
Jedna z tych ról: | –– |
Zanim zaczniesz
Dodaj Firebase do projektu aplikacji na Androida, jeśli nie korzystasz w nim jeszcze z tej usługi. Po zakończeniu tego procesu w projekcie Firebase będziesz mieć aplikację Firebase na Androida.
Jeśli nie korzystasz z żadnych innych usług Firebase, musisz tylko utworzyć projekt i zarejestrować aplikację. Jeśli zdecydujesz się na korzystanie z dodatkowych usług, wykonaj wszystkie czynności opisane w artykule Dodawanie Firebase do projektu aplikacji na Androida.
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.
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 i 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 wersji roboczej), test zamknięty, test otwarty lub produkcja.
Połącz aplikację Firebase na Androida z kontem dewelopera w Google Play:
W konsoli Firebase otwórz
Ustawienia projektu , a następnie wybierz kartę Integracje.Na karcie Google Play kliknij Połącz.
Jeśli masz już połączenia z Google Play, kliknij Zarządzaj.Postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby włączyć integrację z App Distribution 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
W pliku Gradle na poziomie głównym (poziomie projektu) (
<project>/build.gradle.ktslub<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.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.5.0' apply false // Add the dependency for the App Distribution Gradle plugin id 'com.google.firebase.appdistribution' version '5.3.1' apply false }
W pliku Gradle modułu (na poziomie aplikacji) (zwykle
<project>/<app-module>/build.gradle.ktslub<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' }
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 = "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 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 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ść |
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ą 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
Na koniec, aby spakować aplikację testową i zaprosić testerów, utwórz cele
BUILD-VARIANTiappDistributionUploadBUILD-VARIANTza 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 bundleRelease 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 bundleRelease appDistributionUploadRelease
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="AAB"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
appDistributionAddTestersiappDistributionRemoveTestersakceptują 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
Wdróż opinie w aplikacji, aby zbierać od testerów opinie o aplikacji (w tym zrzuty ekranu).
Dowiedz się, jak wyświetlać testerom alerty w aplikacji, gdy dostępne są nowe kompilacje aplikacji do zainstalowania.
Odwiedź ćwiczenie z pakietu Android App Bundle, aby dowiedzieć się, jak krok po kroku rozpowszechniać wersje pakietu aplikacji.
Poznaj sprawdzone metody rozpowszechniania aplikacji na Androida wśród testerów kontroli jakości za pomocą CI/CD.