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

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

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

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

  • Выявляйте и устраняйте проблемы, связанные с конкретным устройством.

  • Протестируйте функции пакета приложений, такие как доставка функций Play и доставка ресурсов Play .

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

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

Чтобы загрузить 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 в систему распространения приложений firebaseappdistro.releases.update Одна из следующих ролей: ––

Прежде чем вы начнете

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

    Если вы не используете другие продукты 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. На карточке Google Play нажмите «Ссылка» .
      Если у вас уже есть ссылки на Google Play, вместо этого нажмите «Управление» .

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

    Узнайте больше о привязке к Google Play .

Шаг 1. Настройте полосу ускорения

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

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

    fastlane add_plugin firebase_app_distribution

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

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

Прежде чем вы сможете использовать плагин fastlane, вы должны сначала пройти аутентификацию в своем проекте Firebase одним из следующих способов. По умолчанию плагин fastlane ищет учетные данные из интерфейса командной строки 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

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

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

    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). Срок действия ссылки истекает через час.

После распространения сборки она будет доступна на панели распространения приложений консоли 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 вашего приложения. Идентификатор приложения можно найти в консоли Firebase на странице «Общие настройки» .

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

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

service_credentials_file

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

debug

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

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