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ć pakiety Android App Bundle wśród testerów przy użyciu wtyczki App Distribution do Gradle.

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

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

  • Wykrywanie i debugowanie problemów związanych z urządzeniami.

  • Testuj funkcje pakietów aplikacji, takie jak Play Feature Delivery i Play Asset Delivery.

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

Wymagane uprawnienia

Aby przesłać pakiety aplikacji na Androida do usługi Rozpowszechnianie aplikacji, musisz połączyć swoją aplikację Firebase z aplikacją w Google Play. Aby wykonać te działania, musisz mieć wymagany poziom dostępu.

Jeśli nie masz niezbędnego dostępu do Firebase, poproś właściciela projektu Firebase o przypisanie Ci odpowiedniej roli w ustawieniach uprawnień konsoli Firebase. Jeśli masz pytania dotyczące dostępu do projektu Firebase, w tym znajdowania lub przypisywania właściciela, przeczytaj najczęstsze pytania dotyczące uprawnień i dostępu do projektów Firebase.

Tabela poniżej dotyczy łączenia aplikacji Firebase z aplikacją w Google Play oraz przesyłania pakietów aplikacji na Androida.

Działanie w konsoli Firebase Wymagane uprawnienia Role, które domyślnie zawierają wymagane uprawnienia Dodatkowe wymagane role
Łączenie aplikacji Firebase z aplikacją w Google Play firebase.playLinks.update jedną z tych ról: dostępu do konta dewelopera w Google Play jako administratora,
Przesyłanie pakietów aplikacji na Androida do Rozpowszechniania aplikacji firebaseappdistro.releases.update jedną z tych ról: ––

Zanim zaczniesz

  1. Dodaj Firebase do swojego projektu na Androida, chyba że masz to już za sobą. Po zakończeniu tego procesu w projekcie Firebase masz już 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 używanie dodatkowych usług, wykonaj wszystkie czynności opisane w artykule Dodawanie Firebase do projektu na Androida.

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

    • Aplikacja w Google Play i aplikacja Firebase na Androida są zarejestrowane przy użyciu tej samej nazwy pakietu.

    • Aplikację w Google Play konfiguruje się w panelu aplikacji i jest ona rozpowszechniana na jednej ze ścieżek Google Play (test wewnętrzny, test zamknięty, test otwarty lub wersja produkcyjna).

    • 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 wersja robocza testu wewnętrznego), Test zamknięty, Test otwarty lub Produkcyjna.

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

    1. W konsoli Firebase otwórz Ustawienia projektu, a następnie wybierz 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ć integrację usługi Rozpowszechniania aplikacji 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. 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 = "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"
          }
      }
  }

  // ...
}

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 bundleRelease 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 bundleRelease 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="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 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