Rozpowszechnianie aplikacji na Androida testerom przy użyciu fastlane


Ten przewodnik opisuje, jak rozpowszechniać kompilacje AAB wśród testerów za pomocą fastlane, platformy open source, która automatyzuje tworzenie i publikowanie aplikacji na iOS i Androida. Wykonuje proste instrukcje zdefiniowane w Fastfile. Po skonfigurowaniu fastlane i Fastfile możesz zintegrować App Distribution z konfiguracją fastlane.

App Distribution jest zintegrowana 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.

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

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

  • Zmniejsz rozmiar pobierania dla testerów.

Wymagane uprawnienia

Aby przesyłać pakiety AAB do App Distribution, musisz połączyć aplikację 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 Firebase o przypisanie Ci odpowiedniej roli w Firebaseustawieniach uprawnień konsoli. Jeśli masz pytania dotyczące dostępu do projektu 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 Firebase.

Poniższa tabela dotyczy łączenia aplikacji 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. Jeśli jeszcze tego nie zrobiono, dodaj Firebase do projektu na Androida. Po zakończeniu tego procesu w projekcie Firebase będzie dostępna aplikacja Firebase na Androida.

    Jeśli nie używasz żadnych innych usług Firebase, wystarczy utworzyć projekt i zarejestrować aplikację. Jeśli zdecydujesz się używać 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:

    • 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 – wersja robocza), Test zamknięty, Test otwarty lub Produkcja.

  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ę 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 fastlane

  1. Zainstaluj i skonfiguruj fastlane.

  2. Aby dodać App Distribution do konfiguracji fastlane, uruchom to polecenie w katalogu głównym projektu na Androida:

    fastlane add_plugin firebase_app_distribution

    Jeśli polecenie wyświetli opcję, wybierz Option 3: RubyGems.org.

Krok 2. Uwierzytelnianie za pomocą Firebase

Zanim zaczniesz korzystać z wtyczki fastlane, musisz najpierw uwierzytelnić się w projekcie Firebase w jeden z tych sposobów. Domyślnie wtyczka fastlane szuka danych logowania w interfejsie Firebase CLI, jeśli nie jest używana żadna inna metoda uwierzytelniania.

Krok 3. Konfigurowanie pliku Fastfile i dystrybucja aplikacji

  1. W ścieżce ./fastlane/Fastfile dodaj blok firebase_app_distribution. Aby skonfigurować dystrybucję, użyj tych parametrów:
    Parametry firebase_app_distribution
    app

    Wymagany: identyfikator Firebase Twojej aplikacji. Identyfikator aplikacji znajdziesz w Firebasekonsoli na stronie Ustawienia ogólne.

    app: "1:1234567890:android:0a1b2c3d4e5f67890"
    firebase_cli_token

    Token odświeżania, który jest wyświetlany podczas uwierzytelniania środowiska CI za pomocą interfejsu wiersza poleceń Firebase (więcej informacji znajdziesz w artykule Używanie interfejsu wiersza poleceń w systemach CI).

    service_credentials_file

    Ścieżka do pliku JSON konta usługi Google. Więcej informacji o uwierzytelnianiu za pomocą danych logowania konta usługi znajdziesz powyżej.

    android_artifact_type

    Określa typ pliku Androida (APK lub AAB).

    android_artifact_path

    Zastępuje parametr apk_path (wycofany). Ścieżka bezwzględna do pliku APK lub AAB, który chcesz przesłać. Jeśli nie zostanie podana, fastlane określi lokalizację pliku na podstawie pasa, w którym został wygenerowany.

    release_notes
    release_notes_file

    Informacje o wersji tej kompilacji.

    Możesz podać informacje o wersji bezpośrednio:

    release_notes: "Text of release notes"

    Możesz też podać ścieżkę do zwykłego pliku tekstowego:

    release_notes_file: "/path/to/release-notes.txt"
    testers
    testers_file

    Adresy e-mail testerów, których chcesz zaprosić.

    Możesz podać testerów jako listę adresów e-mail rozdzielonych przecinkami:

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

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

    testers_file: "/path/to/testers.txt"
    groups
    groups_file

    grupy testerów, które chcesz zaprosić (patrz Zarządzanie testerami); Grupy są określane za pomocą aliasów grup, które możesz znaleźć w konsoli Firebase.

    Możesz określić grupy jako listę rozdzieloną przecinkami:

    groups: "qa-team, trusted-testers"

    Możesz też podać ścieżkę do pliku tekstowego zawierającego rozdzieloną przecinkami listę nazw grup:

    groups_file: "/path/to/groups.txt"
    test_devices
    test_devices_file

    Te typy dystrybucji są częścią funkcji beta automatycznego testera.

    Urządzenia testowe, na które chcesz rozpowszechniać kompilacje (patrz Testy automatyczne).

    Urządzenia testowe możesz podać jako listę urządzeń testowych rozdzielonych średnikami:

    test_devices: "model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait"

    Możesz też podać ścieżkę do pliku tekstowego zawierającego listę urządzeń testowych rozdzielonych średnikami:

    test_devices_file: "/path/to/test-devices.txt"
    test_username

    Nazwa użytkownika do automatycznego logowania, która będzie używana podczas zautomatyzowanych testów.

    test_password
    test_password_file

    Hasło do automatycznego logowania, które będzie używane podczas testów zautomatyzowanych.

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

    test_password_file: "/path/to/test-password.txt"
    test_username_resource

    Nazwa zasobu pola nazwy użytkownika na potrzeby automatycznego logowania, która będzie używana podczas testów zautomatyzowanych.

    test_password_resource

    Nazwa zasobu pola hasła do automatycznego logowania, która będzie używana podczas testów zautomatyzowanych.

    test_non_blocking

    Uruchamiaj testy automatyczne asynchronicznie. Wyniki testów automatycznych znajdziesz w konsoli Firebase.

    debug

    Flaga wartości logicznej. Możesz ustawić tę wartość na true, aby drukować szczegółowe dane wyjściowe debugowania.

platform :android do
    desc "My awesome app"
    lane :distribute do
        build_android_app(task: "bundle", ...)
        # build_android_app is a built-in fastlane action.
        release = firebase_app_distribution(
            app: "1:123456789:android:abcd1234",
            testers: "tester1@company.com, tester2@company.com",
            release_notes: "Lots of amazing new features to test out!",
            android_artifact_type: "AAB"
        )
    end
end

Aby udostępnić kompilację testerom, uruchom ścieżkę:

fastlane <lane>

Wartością zwracaną działania jest hash reprezentujący przesłaną wersję. Ten skrót jest też dostępny w lane_context[SharedValues::FIREBASE_APP_DISTRO_RELEASE]. Więcej informacji o polach dostępnych w tym skrócie znajdziesz w dokumentacji interfejsu REST API.

Po przesłaniu wersji wtyczka fastlane wyświetla te linki: Te linki pomogą Ci zarządzać plikami binarnymi i zapewnić testerom oraz innym deweloperom dostęp do odpowiedniej wersji:

  • Link do Firebase konsoli wyświetlającej pojedynczą wersję. Możesz udostępnić ten link innym programistom w swojej organizacji.
  • Link do wersji w wersji dla testerów (natywna aplikacja 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.
  • 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 na pulpicie App Distribution konsoli Firebase przez 150 dni. 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 wcześniej zaproszeni do testowania aplikacji, otrzymają e-maile z zaproszeniami do rozpoczęcia testów. Dotychczasowi testerzy otrzymują e-maile z powiadomieniem, że nowa wersja jest gotowa do testowania. Aby dowiedzieć się, jak zainstalować aplikację testową, zapoznaj się z przewodnikiem konfiguracji dla testerów. Stan każdego testera możesz śledzić w konsoli Firebase, aby sprawdzić, czy zaakceptował zaproszenie i czy pobrał aplikację.

(Opcjonalnie) Aby automatycznie zwiększać numer kompilacji za każdym razem, gdy tworzysz nową wersję w App Distribution, możesz użyć firebase_app_distribution_get_latest_release działania i np. increment_version_code wtyczki fastlane. Poniższy kod pokazuje, jak automatycznie zwiększać numer kompilacji:

lane :increment_version do
  latest_release = firebase_app_distribution_get_latest_release(
    app: "<your Firebase app ID>"
  )
  increment_version_code({ version_code: latest_release[:buildVersion].to_i + 1 })
end

Więcej informacji o działaniu firebase_app_distribution_get_latest_release znajdziesz w artykule Uzyskiwanie informacji o najnowszej wersji aplikacji.

Krok 4 (opcjonalny). Zarządzanie testerami dystrybucji

Testerów możesz dodawać do projektu lub grupy i usuwać z nich za pomocą Fastfilepliku lub bezpośrednio, uruchamiając działania fastlane. Uruchamianie działań bezpośrednio zastępuje wartości ustawione w Fastfile.

Gdy dodasz testera do projektu Firebase, możesz dodać go do poszczególnych wersji. Testerzy usunięci z projektu Firebase nie mają już dostępu do wersji w Twoim projekcie, ale mogą zachować dostęp do Twoich wersji przez pewien czas.

Jeśli masz wielu testerów, rozważ użycie grup.

Użyj konta Fastfile

# Use lanes to add or remove testers from a project.
lane(:add_testers) do
  firebase_app_distribution_add_testers(
    emails: "foo@google.com,bar@google.com"
    # or file: "/path/to/testers.txt"
    group_alias: "qa-team" # (Optional) add testers to this group
  )
end

lane(:remove_testers) do
  firebase_app_distribution_remove_testers(
    emails: "foo@google.com,bar@google.com"
    # or file: "/path/to/testers.txt"
    group_alias: "qa-team" # (Optional) remove testers from this group only
  )
end
# Add or remove testers with the terminal
$ fastlane add_testers
$ fastlane remove_testers

Uruchamianie działań fastlane

fastlane run firebase_app_distribution_create_group display_name:"QA Team" alias:"qa-team"
fastlane run firebase_app_distribution_add_testers group_alias:"qa-team" emails:"foo@google.com,bar@google.com"
fastlane run firebase_app_distribution_remove_testers group_alias:"qa-team" emails:"foo@google.com,bar@google.com"
fastlane run firebase_app_distribution_delete_group alias:"qa-team"

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

Zadania firebase_app_distribution_add_testersfirebase_app_distribution_remove_testers akceptują też te argumenty:

  • project_name: numer projektu Firebase.
  • group_alias (opcjonalnie): jeśli jest określona, testerzy są dodawani do określonej grupy (lub z niej usuwani).
  • service_credentials_file: Ścieżka do pliku danych logowania do usługi Google.
  • firebase_cli_token: token uwierzytelniania interfejsu Firebase CLI.

Parametry service_credentials_filefirebase_cli_token są takie same jak argumenty używane przez działanie przesyłania.

Krok 5 (opcjonalny). Informacje o najnowszej wersji aplikacji

Możesz użyć działania firebase_app_distribution_get_latest_release, aby pobrać informacje o najnowszej wersji aplikacji w App Distribution, w tym informacje o wersji aplikacji, informacje o wersji i czas utworzenia. Przykłady zastosowań obejmują automatyczne zwiększanie numeru wersji i przenoszenie informacji o wersji z poprzedniej wersji.

Wartością zwracaną działania jest hash reprezentujący najnowszą wersję. Ten skrót jest też dostępny w lane_context[SharedValues::FIREBASE_APP_DISTRO_LATEST_RELEASE]. Więcej informacji o polach dostępnych w tym skrócie znajdziesz w dokumentacji interfejsu REST API.

Parametry

Parametry firebase_app_distribution_get_latest_release
app

Wymagany: identyfikator Firebase Twojej aplikacji. Identyfikator aplikacji znajdziesz w Firebasekonsoli na stronie Ustawienia ogólne.

app: "1:1234567890:android:0a1b2c3d4e5f67890"
firebase_cli_token

Token odświeżania, który jest wyświetlany podczas uwierzytelniania środowiska CI za pomocą interfejsu wiersza poleceń Firebase (więcej informacji znajdziesz w artykule Używanie interfejsu wiersza poleceń w systemach CI).

service_credentials_file

Ścieżka do pliku JSON konta usługi Google. Więcej informacji o uwierzytelnianiu za pomocą danych logowania konta usługi znajdziesz powyżej.

debug

Flaga wartości logicznej. Możesz ustawić tę wartość na true, aby drukować szczegółowe dane wyjściowe debugowania.

Dalsze kroki