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


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

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

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

  • Выявляйте и устраняйте неполадки, характерные для конкретного устройства.

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

  • Уменьшите размер загрузок для ваших тестировщиков.

Требуемые разрешения

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

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

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

Действие в консоли Firebase Требуется разрешение IAM Роли IAM, включающие требуемые разрешения по умолчанию Дополнительные требуемые роли
Свяжите приложение Firebase с приложением в 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. Свяжите свое приложение Firebase Android с учетной записью разработчика Google Play:

    1. В консоли Firebase перейдите в свой Настройки проекта , затем выберите вкладку Интеграции .

    2. На карточке Google Play нажмите ссылку .
      Если у вас уже есть ссылки на Google Play, нажмите «Управление» .

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

    Подробнее о привязке к Google Play .

Шаг 1. Настройте Fastlane

  1. Установите и настройте fastlane .

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

    fastlane add_plugin firebase_app_distribution

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

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

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

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

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

    Требуется : Firebase App ID вашего приложения. Вы можете найти App ID в консоли Firebase на странице General Settings .

    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

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

    Вы можете либо напрямую указать примечания к выпуску:

    release_notes: "Text of release notes"

    Или укажите путь к текстовому файлу:

    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

    Группы тестировщиков, которых вы хотите пригласить (см. Управление тестерами ). Группы указываются с помощью групповые псевдонимы , который вы можете посмотреть в консоли Firebase .

    Вы можете указать группы в виде списка, разделенного запятыми:

    groups: "qa-team, trusted-testers"

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

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

    Следующие типы дистрибутивов являются частью функции автоматического тестирования бета-версии .

    Тестовые устройства, на которые вы хотите распространять сборки (см. Автоматизированные тесты ).

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

    test_devices: "model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,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

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

    test_password_resource

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

    test_non_blocking

    Запускайте автоматизированные тесты асинхронно. Посетите консоль 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

Чтобы сделать сборку доступной для тестировщиков, запустите свою линию:

fastlane <lane>

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

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

  • Ссылка на консоль Firebase , отображающую один релиз. Вы можете поделиться этой ссылкой с другими разработчиками в вашей организации.
  • Ссылка на релиз в опыте тестировщика (собственное приложение Android), которая позволяет тестировщикам просматривать заметки о релизе и устанавливать приложение на свое устройство. Тестировщику необходим доступ к релизу, чтобы использовать ссылку.
  • Подписанная ссылка, которая напрямую загружает и устанавливает двоичный файл приложения (файл APK или AAB). Ссылка истекает через час.

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

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

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

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 см. в разделе Получение информации о последней версии вашего приложения .

Шаг 4 (необязательно). Управление тестерами для дистрибуции

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

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

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

Использовать 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 .

Задачи firebase_app_distribution_add_testers и firebase_app_distribution_remove_testers также принимают следующие аргументы:

  • project_name : номер вашего проекта Firebase.
  • group_alias (необязательно): Если указано, тестировщики добавляются в указанную группу (или удаляются из нее).
  • service_credentials_file : путь к файлу учетных данных службы Google.
  • firebase_cli_token : токен аутентификации для Firebase CLI.

service_credentials_file и firebase_cli_token — это те же аргументы, которые используются действием загрузки.

Шаг 5 (необязательно). Получите информацию о последней версии вашего приложения

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

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

Параметры

параметры firebase_app_distribution_get_latest_release
app

Требуется : Firebase App ID вашего приложения. Вы можете найти App ID в консоли Firebase на странице General Settings .

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

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

service_credentials_file

Путь к файлу json вашего аккаунта Google. Смотрите выше, как выполнить аутентификацию с использованием учетных данных аккаунта службы .

debug

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

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