了解 2023 年 Google I/O 大会上介绍的 Firebase 亮点。了解详情

Dystrybuuj aplikacje na Androida do testerów za pomocą Gradle

Możesz zintegrować dystrybucję aplikacji z procesem kompilacji Androida za pomocą wtyczki App Distribution Gradle. Wtyczka umożliwia określenie testerów i informacji o wydaniu w pliku build.gradle Twojej aplikacji, co pozwala skonfigurować dystrybucje dla różnych typów kompilacji i wariantów Twojej aplikacji.

W tym przewodniku opisano sposób dystrybucji pakietów Android App Bundle (AAB) wśród testerów za pomocą wtyczki App Distribution Gradle.

Dystrybucja aplikacji integruje się z wewnętrzną usługą udostępniania aplikacji Google Play, aby przetwarzać przesłane przez Ciebie AAB i udostępniać pliki APK zoptymalizowane pod kątem konfiguracji urządzeń Twoich testerów. Dystrybucja AAB umożliwia wykonanie następujących czynności:

  • Uruchom zoptymalizowane pliki APK (obsługiwane przez Google Play), które są zoptymalizowane pod kątem urządzeń Twoich testerów.

  • Wykrywaj i debuguj problemy specyficzne dla urządzenia.

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

  • Zmniejsz rozmiar plików do pobrania dla testerów.

Wymagane uprawnienia

Aby przesłać AAB do App Distribution, musisz połączyć swoją aplikację Firebase z aplikacją w 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 Firebase o przypisanie Ci odpowiedniej roli w ustawieniach IAM konsoli Firebase . Jeśli masz pytania dotyczące uzyskiwania dostępu do projektu Firebase, w tym znajdowania lub przypisywania właściciela, przejrzyj najczęściej zadawane pytania „Uprawnienia i dostęp do projektów Firebase” .

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

Akcja w konsoli Firebase Wymagane uprawnienie IAM Role IAM, które domyślnie obejmują wymagane uprawnienia Dodatkowe wymagane role
Połącz aplikację Firebase z aplikacją w Google Play firebase.playLinks.update Jedna z następujących ról: Dostęp do konta programisty Google Play jako administrator
Prześlij AAB do dystrybucji aplikacji firebaseappdistro.releases.update Jedna z następujących ról: ––

Zanim zaczniesz

  1. Jeśli jeszcze tego nie zrobiłeś, dodaj Firebase do swojego projektu na Androida . Pod koniec tego przepływu pracy będziesz mieć aplikację Firebase na Androida w swoim projekcie Firebase.

    Jeśli nie używasz żadnych innych produktów Firebase, wystarczy utworzyć projekt i zarejestrować swoją aplikację. Jeśli zdecydujesz się skorzystać z dodatkowych produktów, wykonaj wszystkie czynności opisane w sekcji Dodaj Firebase do swojego projektu na Androida .

  2. Aby utworzyć połączenie Firebase z Google Play i przesłać AAB, upewnij się, że Twoja aplikacja spełnia następujące wymagania:

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

    • Aplikacja w Google Play jest konfigurowana na pulpicie nawigacyjnym aplikacji i jest dystrybuowana do jednej ze ścieżek Google Play (testy wewnętrzne, testy zamknięte, testy otwarte lub produkcja).

    • Recenzja aplikacji w Google Play została zakończona i aplikacja została opublikowana. Twoja aplikacja jest opublikowana, jeśli w kolumnie Stan aplikacji wyświetlany jest jeden z następujących stanów: Testy wewnętrzne (nie Wersja robocza testów wewnętrznych), Testy zamknięte, Testy otwarte lub Produkcja.

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

    1. W konsoli Firebase przejdź do swoich projektu , a następnie wybierz kartę Integracje .

    2. Na karcie Google Play kliknij Link .
      Jeśli masz już linki do Google Play, zamiast tego kliknij Zarządzaj .

    3. Postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby włączyć integrację dystrybucji aplikacji i wybrać, które aplikacje Firebase na Androida mają być łączone z Google Play.

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

Krok 1. Skonfiguruj swój projekt na Androida

  1. W pliku Gradle na poziomie głównym (na poziomie projektu) ( <project>/build.gradle lub <project>/build.gradle.kts ) dodaj wtyczkę App Distribution Gradle jako zależność buildscript:

    Groovy

    buildscript {
      repositories {
        // Make sure that you have the following two repositories
        google()  // Google's Maven repository
        mavenCentral()  // Maven Central repository
      }
    
      dependencies {
          ...
          classpath 'com.android.tools.build:gradle:7.2.0'
    
          // Make sure that you have the Google services Gradle plugin dependency
          classpath 'com.google.gms:google-services:4.3.15'
    
          // Add the dependency for the App Distribution Gradle plugin
          classpath 'com.google.firebase:firebase-appdistribution-gradle:4.0.0'
      }
    }
    

    Kotlin

    buildscript {
      repositories {
        // Make sure that you have the following two repositories
        google()  // Google's Maven repository
        mavenCentral()  // Maven Central repository
      }
    
      dependencies {
          ...
          classpath("com.android.tools.build:gradle:7.2.0")
    
          // Make sure that you have the Google services Gradle plugin dependency
          classpath("com.google.gms:google-services:4.3.15")
    
          // Add the dependency for the App Distribution Gradle plugin
          classpath("com.google.firebase:firebase-appdistribution-gradle:4.0.0")
      }
    }
    
  2. W pliku Gradle modułu (na poziomie aplikacji) (zazwyczaj <project>/<app-module>/build.gradle lub <project>/<app-module>/build.gradle.kts ) dodaj wtyczkę App Distribution Gradle:

    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'
    }
    

    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")
    }
    
  3. Jeśli korzystasz z firmowego serwera proxy lub zapory sieciowej, dodaj następującą właściwość systemu Java , która umożliwia usłudze App Distribution przesyłanie dystrybucji do Firebase:

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

Krok 2. Uwierzytelnij w Firebase

Zanim będziesz mógł użyć wtyczki Gradle, musisz najpierw uwierzytelnić się w swoim projekcie Firebase na jeden z poniższych sposobów. Domyślnie wtyczka Gradle szuka poświadczeń z Firebase CLI, 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 lub <project>/<app-module>/build.gradle.kts ) skonfiguruj dystrybucję aplikacji, dodając co najmniej jedna sekcja firebaseAppDistribution .

Na przykład, aby rozesłać release wersji do testerów, postępuj zgodnie z tymi instrukcjami:

Groovy

android {

  // ...

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

  // ...
}

Kotlin

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

android {

  // ...

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

  // ...
}

Możesz skonfigurować Dystrybucję aplikacji dla typów kompilacji i smaków produktów .

Na przykład, aby dystrybuować kompilacje debug i release w „demo” i „pełnej” wersji produktu, postępuj zgodnie z tymi instrukcjami:

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"
          }
      }
  }

  // ...
}

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"
          }
      }
  }

  // ...
}

Użyj następujących parametrów, aby skonfigurować dystrybucję:

Parametry kompilacji dystrybucji aplikacji
appId

Identyfikator aplikacji Firebase Twojej aplikacji. Wymagane tylko wtedy, gdy nie masz zainstalowanej wtyczki Google Services Gradle. Identyfikator aplikacji można znaleźć 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 w przypadku korzystania z uwierzytelniania konta usługi.

artifactType

Określa typ pliku Twojej aplikacji. Można ustawić na "AAB" lub "APK" .

artifactPath

Ścieżka bezwzględna do pliku APK lub AAB, który chcesz przesłać.

releaseNotes lub releaseNotesFile

Informacje o wersji dla tej kompilacji.

Możesz bezpośrednio określić informacje o wersji lub ścieżkę do zwykłego pliku tekstowego.

testers lub testersFile

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

Możesz określić testerów jako listę adresów e-mail oddzielonych przecinkami:

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

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

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

Grupy testerów, do których chcesz dystrybuować kompilacje (zobacz Zarządzanie testerami ). Grupy są określane za pomocą pseudonimy grupowe , które znajdziesz na karcie Testerzy w konsoli Firebase App Distribution.

Możesz określić grupy jako listę oddzielonych przecinkami aliasów grup:

groups="qa-team, android-testers"

Lub możesz określić ścieżkę do pliku zawierającego oddzieloną przecinkami listę aliasów grup:

groupsFile="/path/to/tester-groups.txt"
stacktrace

Drukuje ślad stosu dla wyjątków użytkownika. Jest to pomocne podczas debugowania problemów.

Krok 4. Rozpowszechnij swoją aplikację wśród testerów

  1. Na koniec, aby spakować aplikację testową i zaprosić testerów, zbuduj cele BUILD-VARIANT i appDistributionUpload BUILD-VARIANT z opakowaniem Gradle projektu, gdzie BUILD-VARIANT to opcjonalny smak produktu i typ kompilacji skonfigurowany w poprzednim kroku. Aby uzyskać więcej informacji o wersjach produktów, zobacz Konfigurowanie wariantów kompilacji .

    Na przykład, aby dystrybuować aplikację przy użyciu wariantu kompilacji release , uruchom następujące polecenie:

    ./gradlew bundleRelease appDistributionUploadRelease
    

    Lub, jeśli uwierzytelniłeś się za pomocą swojego konta Google i nie podałeś poświadczeń w pliku kompilacji Gradle, dołącz zmienną FIREBASE_TOKEN :

    export FIREBASE_TOKEN=1/a1b2c3d4e5f67890
    ./gradlew --stop // Only needed for environment variable changes
    ./gradlew bundleRelease appDistributionUploadRelease
    
  2. Możesz także zastąpić wartości ustawione w pliku build.gradle , przekazując argumenty wiersza poleceń w postaci --<property-name>=<property-value> . Na przykład:

    • Aby przesłać kompilację debugowania do dystrybucji aplikacji:

      ./gradlew bundleDebug appDistributionUploadDebug
          --artifactType="AAB"
      
    • Aby zaprosić dodatkowych testerów lub usunąć istniejących 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 nie będą już mieli dostępu do wersji w Twoim projekcie, ale nadal mogą zachować dostęp do Twoich wersji przez pewien czas.

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

    Zadania appDistributionAddTesters i appDistributionRemoveTesters akceptują również następujące argumenty:

    • projectNumber : Twój numer projektu Firebase.

    • serviceCredentialsFile : ścieżka do pliku danych logowania do usługi Google. Jest to ten sam argument, którego używa akcja przesyłania.

Wtyczka Gradle wyświetla następujące linki po przesłaniu wersji. Te łącza pomagają zarządzać plikami binarnymi i zapewniają, że testerzy i inni programiści mają odpowiednią wersję:

  • firebase_console_uri — łącze do konsoli Firebase wyświetlającej jedną wersję. Możesz udostępnić ten link innym programistom w swojej organizacji.
  • testing_uri — link do wersji w środowisku testera (aplikacja natywna dla systemu Android), który umożliwia testerom wyświetlanie informacji o wersji i instalowanie aplikacji na swoim urządzeniu. Tester musi mieć dostęp do wersji, aby użyć łącza.
  • 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 staje się ona dostępna na pulpicie nawigacyjnym Dystrybucja aplikacji w konsoli Firebase przez 150 dni (pięć miesięcy). Gdy kompilacja wygaśnie za 30 dni, powiadomienie o wygaśnięciu pojawi się zarówno w konsoli, jak i na liście kompilacji testera na jego urządzeniu testowym.

Testerzy, którzy nie zostali zaproszeni do testowania aplikacji, otrzymują e-maile z zaproszeniami do rozpoczęcia, a obecni testerzy otrzymują powiadomienia e-mail, że nowa kompilacja jest gotowa do przetestowania (przeczytaj przewodnik konfiguracji testera , aby dowiedzieć się, jak zainstalować aplikację testową). Możesz monitorować status każdego testera – czy zaakceptował zaproszenie i czy pobrał aplikację – w konsoli Firebase.

Testerzy mają 30 dni na zaakceptowanie zaproszenia do przetestowania aplikacji przed jego wygaśnięciem. Gdy zaproszenie wygaśnie za 5 dni, w konsoli Firebase obok testera pojawi się powiadomienie o wygaśnięciu. Zaproszenie można odnowić, wysyłając je ponownie, korzystając z menu rozwijanego w wierszu testera.

Następne kroki