Распространяйте приложения Android среди тестировщиков с помощью fastlane.


В этом руководстве описывается, как распространять AAB-сборки среди тестировщиков с помощью fastlane — платформы с открытым исходным кодом, которая автоматизирует сборку и выпуск приложений для iOS и Android. Руководство содержит простые инструкции, определенные в Fastfile . После настройки fastlane и Fastfile вы можете интегрировать App Distribution с вашей конфигурацией fastlane.

App Distribution интегрируется с внутренней службой обмена приложениями Google Play для обработки загружаемых вами файлов AAB и предоставления APK-файлов, оптимизированных для конфигураций устройств ваших тестировщиков. Распространение файлов AAB позволяет выполнять следующие действия:

  • Запускайте оптимизированные APK-файлы (доступные в Google Play), оптимизированные для устройств ваших тестировщиков.

  • Uncover and debug device-specific issues.

  • Протестируйте функции пакета приложения, такие как Play Feature Delivery и Play Asset Delivery .

  • Reduce the size of downloads for your testers.

Необходимые разрешения

Для загрузки AAB в App Distribution необходимо связать ваше приложение Firebase с приложением в Google Play . Для выполнения этих действий у вас должен быть необходимый уровень доступа.

Если у вас нет необходимого доступа к Firebase, вы можете попросить владельца проекта Firebase назначить вам соответствующую роль через настройки IAM в консоли Firebase . Если у вас есть вопросы о доступе к вашему проекту Firebase, включая поиск или назначение владельца, ознакомьтесь с разделом часто задаваемых вопросов «Разрешения и доступ к проектам Firebase» .

Приведенная ниже таблица относится к связыванию приложения Firebase с приложением в Google Play , а также к загрузке файлов AAB.

Действие в консоли Firebase Required IAM permission Роли IAM, которые по умолчанию включают необходимые разрешения. Additional required role(s)
Link a Firebase app to an app in Google Play firebase.playLinks.update Одна из следующих ролей: Доступ к учетной записи разработчика Google Play в качестве администратора.
Загрузите AAB в App Distribution firebaseappdistro.releases.update Одна из следующих ролей: ––

Прежде чем начать

  1. Если вы еще этого не сделали, добавьте Firebase в свой проект Android . В результате выполнения этого процесса у вас будет приложение Firebase для Android в вашем проекте Firebase.

    Если вы не используете другие продукты Firebase, вам нужно только создать проект и зарегистрировать приложение. Если вы решите использовать дополнительные продукты, обязательно выполните все шаги, описанные в разделе «Добавление Firebase в ваш проект Android» .

  2. Для создания ссылки Firebase на Google Play и загрузки файлов AAB убедитесь, что ваше приложение соответствует следующим требованиям:

    • И приложение в Google Play, и приложение Firebase для Android зарегистрированы с использованием одного и того же имени пакета.

    • Приложение в Google Play устанавливается на панели управления приложениями и распространяется по одному из направлений Google Play (внутреннее тестирование, закрытое тестирование, открытое тестирование или производственная среда).

    • Проверка приложения в Google Play завершена, и приложение опубликовано. Ваше приложение опубликовано, если в столбце «Статус приложения» отображается один из следующих статусов: Внутреннее тестирование (не черновик внутреннего тестирования), Закрытое тестирование, Открытое тестирование или Производственная версия.

  3. Свяжите ваше Android-приложение Firebase с вашей учетной записью разработчика Google Play:

    1. В консоли Firebase перейдите в свой настройках проекта выберите вкладку «Интеграции» .

    2. On the Google Play card, click Link .
      Если у вас уже есть ссылки на Google Play, нажмите «Управление» .

    3. Следуйте инструкциям на экране, чтобы включить интеграцию App Distribution и выбрать, какие приложения Firebase для Android следует связать с Google Play.

    Learn more about linking to Google Play .

Step 1. Set up fastlane

  1. Install and set up fastlane .

  2. Чтобы добавить App Distribution в конфигурацию fastlane, выполните следующую команду из корневой папки вашего Android-проекта:

    fastlane add_plugin firebase_app_distribution

    Если команда запросит у вас вариант, выберите Option 3: RubyGems.org .

Шаг 2. Аутентификация с помощью Firebase.

Прежде чем использовать плагин fastlane, необходимо пройти аутентификацию в вашем проекте Firebase одним из следующих способов. По умолчанию плагин fastlane запрашивает учетные данные через CLI Firebase , если не используется другой метод аутентификации.

Шаг 3. Настройте Fastfile и распространите свое приложение.

  1. В папку ./fastlane/Fastfile добавьте блок firebase_app_distribution . Используйте следующие параметры для настройки дистрибутива:
    параметры firebase_app_distribution
    app

    Обязательно : идентификатор приложения Firebase. Вы можете найти идентификатор приложения в консоли Firebase на странице «Общие настройки» .

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

    Токен обновления, который выводится при аутентификации вашей среды CI с помощью Firebase CLI (подробнее см. в разделе «Использование CLI с системами CI» ).

    service_credentials_file

    Путь к JSON-файлу вашей учетной записи службы Google. Инструкции по аутентификации с использованием учетных данных учетной записи службы см. выше.

    android_artifact_type

    Указывает тип файла Android (APK или AAB).

    android_artifact_path

    Заменяет apk_path (устаревший параметр). Абсолютный путь к файлу APK или AAB, который вы хотите загрузить. Если не указан, fastlane определяет местоположение файла по тому пути, на котором он был сгенерирован.

    release_notes
    release_notes_file

    Примечания к выпуску этой сборки.

    You can either specify the release notes directly:

    release_notes: "Text of release notes"

    Or, specify the path to a plain text file:

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

    Адреса электронной почты тестировщиков, которых вы хотите пригласить.

    Вы можете указать тестировщиков в виде списка адресов электронной почты, разделенных запятыми:

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

    Или же вы можете указать путь к текстовому файлу, содержащему список адресов электронной почты, разделенных запятыми:

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

    Группы тестировщиков, которые вы хотите пригласить (см. раздел «Управление тестировщиками »). Группы указываются с помощью... псевдонимы групп , which you can look up in the Firebase console.

    You can specify the groups as a comma-separated list:

    groups: "qa-team, trusted-testers"

    Or, you can specify the path to a plain text file containing a comma-separated list of group names:

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

    Тестовые устройства, на которых вы хотите запустить тесты агента тестирования приложений .

    Список тестовых устройств можно указать в виде перечня характеристик, разделенных точкой с запятой:

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

    Или же вы можете указать путь к текстовому файлу, содержащему список тестовых устройств, разделенных точкой с запятой:

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

    Имя пользователя для автоматического входа в систему, используемое во время тестирования агентом приложения .

    test_password
    test_password_file

    Пароль для автоматического входа в систему, используемый во время тестирования агентом приложения .

    Или же вы можете указать путь к текстовому файлу, содержащему пароль:

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

    Имя ресурса для поля имени пользователя, используемого для автоматического входа в систему во время тестирования агентом App Testing.

    test_password_resource

    Имя ресурса для поля пароля, используемого для автоматического входа в систему во время тестирования агентом App Testing.

    test_non_blocking

    Если этот флаг установлен при запуске тестов агента App Testing , команда запустит тесты и немедленно вернет управление, не дожидаясь их завершения. Чтобы просмотреть результаты тестов, перейдите в консоль Firebase. Если этот флаг не установлен, команда будет блокироваться до завершения тестов и завершится с кодом ошибки, если какой-либо из тестов завершится неудачей.

    debug

    Логический флаг. Вы можете установить его значение в true , чтобы выводить подробную отладочную информацию.

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

To make the build available to testers, run your lane:

fastlane <lane>

Возвращаемое значение действия — это хеш, представляющий загруженный релиз. Этот хеш также доступен с помощью lane_context[SharedValues::FIREBASE_APP_DISTRO_RELEASE] . Для получения дополнительной информации о доступных полях в этом хеше см. документацию по REST API .

После загрузки релиза плагин fastlane выводит следующие ссылки. Эти ссылки помогают управлять бинарными файлами и гарантируют, что тестировщики и другие разработчики получат правильный релиз:

  • Ссылка на консоль Firebase , отображающую отдельный релиз. Вы можете поделиться этой ссылкой с другими разработчиками в вашей организации.
  • Ссылка на релиз в среде тестирования (нативное приложение Android), позволяющая тестировщикам просматривать примечания к релизу и устанавливать приложение на свое устройство. Для использования ссылки тестировщику необходим доступ к релизу.
  • A signed link that directly downloads and installs the app binary (APK or AAB file). The link expires after one hour.

После распространения вашей сборки она будет доступна на панели App Distribution в консоли Firebase в течение 150 дней. Когда до истечения срока действия сборки останется 30 дней, в консоли и в списке сборок тестировщика на его тестовом устройстве появится уведомление об истечении срока действия.

Тестировщики, которые ранее не были приглашены к тестированию приложения, получают приглашения по электронной почте для начала работы. Существующие тестировщики получают уведомления по электронной почте о готовности новой сборки к тестированию. Чтобы узнать, как установить тестовое приложение, см. руководство по настройке тестировщика . Вы можете отслеживать статус каждого тестировщика, чтобы определить, принял ли он приглашение и загрузил ли приложение в консоли Firebase .

(Необязательно) Чтобы автоматически увеличивать номер сборки при каждом создании нового релиза в App Distribution, вы можете использовать действие firebase_app_distribution_get_latest_release и, например, плагин increment_version_code fastlane . Следующий код демонстрирует пример автоматического увеличения номера сборки:

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

Чтобы узнать больше о действии firebase_app_distribution_get_latest_release , см. раздел «Получение информации о последнем релизе вашего приложения» .

Step 4 (Optional). Managing testers for the distribution

Вы можете добавлять и удалять тестировщиков из своего проекта или группы, используя файл Fastfile или напрямую запуская действия fastlane. Запуск действий напрямую переопределяет значения, заданные в Fastfile .

После добавления тестировщика в ваш проект Firebase вы можете добавлять его в отдельные релизы. Тестировщики, удаленные из вашего проекта Firebase, больше не имеют доступа к релизам в вашем проекте, но они могут сохранить доступ к вашим релизам на определенный период времени.

Если у вас большое количество тестировщиков, вам следует рассмотреть возможность использования групп.

Use 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

Выполните действия на скоростной полосе

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"

Также можно указать тестировщиков, используя --file="/path/to/testers.txt вместо --emails .

The firebase_app_distribution_add_testers and firebase_app_distribution_remove_testers tasks also accept the following arguments:

  • project_name : Your Firebase project number.
  • group_alias (optional): If specified, the testers are added to (or removed from) specified group.
  • service_credentials_file : The path to your Google service credentials file.
  • firebase_cli_token : Auth token for Firebase CLI.

The service_credentials_file and the firebase_cli_token are the same arguments used by the upload action.

Step 5 (Optional). Get information about your app's latest release

С помощью действия firebase_app_distribution_get_latest_release вы можете получить информацию о последней версии вашего приложения в App Distribution, включая информацию о версии приложения, примечания к выпуску и время создания. Примеры использования включают автоматическое повышение версии и перенос примечаний к выпуску из предыдущей версии.

Возвращаемое значение действия — это хеш, представляющий последнюю версию. Этот хеш также доступен с помощью lane_context[SharedValues::FIREBASE_APP_DISTRO_LATEST_RELEASE] . Для получения дополнительной информации о доступных полях в этом хеше см. документацию по REST API .

Параметры

firebase_app_distribution_get_latest_release parameters
app

Required : Your app's Firebase App ID. You can find the App ID in the Firebase console, on the General Settings page .

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

A refresh token that's printed when you authenticate your CI environment with the Firebase CLI (read Use the CLI with CI systems for more information).

service_credentials_file

The path to your Google service account json file. See above for how to authenticate using service account credentials .

debug

A boolean flag. You can set this to true to print verbose debug output.

Следующие шаги