Распространяйте предварительные сборки iOS быстрее с помощью App Distribution и Fastlane.

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

4cddd34bd261cea0.png

В этой лабораторной работе вы узнаете, как использовать Firebase App Distribution и его плагин Fastlane для распространения приложения iOS среди тестировщиков, сбора UDID тестовых устройств и регистрации их в профиле подготовки вашего приложения, чтобы вы могли быстро передавать сборки Ad Hoc в руки тестировщиков.

Чему вы научитесь

  • Как загрузить и распространить предварительную версию приложения iOS (Ad Hoc) среди тестировщиков с помощью Firebase App Distribution и fastlane .
  • Как зарегистрироваться в качестве тестировщика и загрузить распространяемое приложение на тестовое устройство.
  • Как быстро зарегистрировать тестовые устройства, экспортировав UDID тестовых устройств с помощью плагина Fastlane от App Distribution.
  • Как обновить профиль обеспечения вашего приложения и повторно загрузить его для распространения.

Что вам понадобится

  • Аккаунт Google
  • Устройство Apple с установленным XCode 11.7+
  • Предварительная версия приложения iOS, созданная в Xcode
  • Платный аккаунт разработчика Apple
  • Физическое устройство iOS для тестирования.

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

Вы по-прежнему можете убедиться в работоспособности настройки, проверив, что кнопка «Загрузить» отображается в веб-приложении тестировщика App Distribution.

2. Начните

Настройте скоростную полосу

App Distribution интегрируется с Fastlane , позволяя автоматизировать распространение предварительных сборок вашего приложения. App Distribution интегрируется с вашей конфигурацией Fastlane .

  1. Установите и настройте fastlane .
  2. Во время настройки запустите fastlane init в корневом каталоге проекта и выберите «Ручная настройка». Вы увидите подкаталог fastlane , содержащий файлы Fastfile , Appfile и Pluginfile , которые вы будете использовать для настройки fastlane .

Установите Firebase CLI

Вам также потребуется установить Firebase CLI . Если вы используете macOS или Linux, выполните следующую команду cURL:

curl -sL https://firebase.tools | bash

Если вы используете Windows, прочтите инструкции по установке , чтобы получить автономный двоичный файл или установить его через npm .

После установки CLI запуск firebase --version должен выдать версию 12.0.0 или выше:

$ firebase --version
12.0.0

3. Создайте свое приложение с помощью Fastlane

Создайте свое приложение

  1. Настройте глобальные переменные для Fastlane в файле ./fastlane/Appfile. Укажите идентификатор вашего приложения и ваш Apple ID:
app_identifier("<your app's bundle identifier>")
apple_id("<your Apple id>")
  1. Создайте свою первую полосу и используйте действие build_app fastlane (также известное как gym ) для сборки своего приложения, добавив следующее в ваш ./fastlane/Fastfile :
default_platform(:ios)

lane :build do
    build_app(export_method: "ad-hoc")
end
  1. Подпишите свое приложение для распространения.

В этой практической работе вы будете управлять своей сертификацией и профилем с помощью get_certificates (также известной как cert ), которая генерирует сертификаты подписи локально и сохраняет все данные в вашей связке ключей macOS. Однако обычно для безопасного управления сертификатами и профилями подписи кода вашей команды используется действие fastlane sync_code_signing action (также известное как match ).

lane :build do
    get_certificates()
    build_app(export_method: "ad-hoc")
end
  1. Настройте профиль подготовки для своего приложения с помощью действия get_provisioning_profile (также известного как sigh ). Это позволит вам поделиться своим приложением с тестировщиками.
lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true)
    build_app(export_method: "ad-hoc")
end
  1. [Необязательно] Если вы никогда ранее не запускали свое приложение, выполните следующую команду, чтобы создать свое приложение в консоли разработчика Apple:

$ fastlane produce --skip_itc

  1. Наконец, создайте свое приложение, запустив полосу.

Вам будет предложено ввести свой Apple ID, пароль (который хранится в вашей связке ключей) и идентификатор пакета вашего приложения.

$ fastlane build

Если у вас возникли какие-либо проблемы, ознакомьтесь с руководством по устранению неполадок Fastlane .

4. Загрузите свое приложение в Firebase.

Теперь, когда вы создали свое приложение, вы готовы загрузить его в App Distribution.

Создайте новый проект Firebase

  1. Войдите в консоль Firebase, используя свою учетную запись Google.
  2. Нажмите кнопку, чтобы создать новый проект, а затем введите имя проекта (например, UDID Export Codelab ).
  3. Нажмите «Продолжить» .
  4. При появлении соответствующего запроса ознакомьтесь с условиями Firebase и примите их, а затем нажмите кнопку «Продолжить» .
  5. (Необязательно) Включите помощь ИИ в консоли Firebase (так называемая «Gemini в Firebase»).
  6. Для этой лабораторной работы вам не понадобится Google Analytics, поэтому отключите опцию Google Analytics.
  7. Нажмите «Создать проект» , дождитесь завершения подготовки проекта, а затем нажмите «Продолжить» .

Добавьте свое iOS-приложение в проект

  1. Щелкните значок iOS, чтобы создать новое приложение Firebase для iOS, и введите идентификатор пакета вашего приложения.

9c26c130a6c42212.png

  1. Пропустите следующие несколько шагов, затем нажмите «Продолжить в консоли» . Вы добавите SDK в своё приложение позже.

Ваш проект и приложение теперь доступны на странице обзора проекта .

66f79cc8a97fa8e9.png

Включить распространение приложений

  1. В разделе «Выпуск и мониторинг» нажмите «Распространение приложений» .
  2. После принятия условий нажмите «Начать», чтобы включить App Distribution для вашего приложения.

460213326c2784ae.png

Настройте дистрибуцию в Fastlane

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

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

$ fastlane add_plugin firebase_app_distribution

  1. Подтвердите, что плагин установлен:

$ fastlane

В результате в списке установленных плагинов должен появиться fastlane-plugin-firebase_app_distribution .

  1. После подтверждения установки плагина выберите вариант 0 для отмены.

Аутентифицируйте свой проект Firebase

Чтобы использовать плагин Fastlane , вам сначала необходимо аутентифицировать свой проект Firebase.

  1. Выполните следующую команду, чтобы подключить CLI к вашей учетной записи Google:

$ firebase login

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

Распространяйте свое приложение

Теперь вы готовы распространять свое приложение.

  1. В верхней части файла ./fastlane/Fastfile определите переменную firebase_app_id . Замените <your_app_id> на идентификатор созданного вами приложения Firebase (его можно найти на странице настроек проекта ).

Fastfile написан на Ruby, поэтому для определения переменных используйте синтаксис Ruby.

firebase_app_id = "<your_app_id>"
  1. Добавьте новую полосу с названием distribute , которая вызывает полосу сборки, а затем распространяет ваше приложение с помощью действия firebase_app_distribution .
lane :distribute do
    build
    firebase_app_distribution(
        app: firebase_app_id,
        release_notes: "Try out this app!",
    )
end
  1. Запустите новую полосу для сборки вашего приложения и создания дистрибутива.

$ fastlane distribute

На этом этапе ваш Fastfile должен выглядеть следующим образом:

firebase_app_id = "<your Firebase app ID>"

default_platform(:ios)

lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true)
    build_app(export_method: "ad-hoc")
end

lane :distribute do
    build
    firebase_app_distribution(
        app: firebase_app_id,
        release_notes: "Try out this app!",
    )
end

После обновления консоли Firebase вы увидите новую версию своего приложения.

c59dc1a94de3bf3c.png

5. Пригласите тестировщиков загрузить ваше приложение.

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

Добавьте себя в качестве тестировщика релиза

  1. В разделе firebase_app_id в верхней части файла Fastfile создайте переменную для хранения тестировщиков и укажите свой адрес электронной почты, а также другие дополнительные адреса электронной почты, которые вы хотели бы попробовать.
firebase_app_id = "<your Firebase app ID>"
app_testers = [
  "your@email.com",
  "another@email.com",
]
  1. Примените метод Ruby Array#join , чтобы преобразовать массив app_testers в строку, разделённую запятыми, как того ожидает параметр testers . Затем передайте результат параметру testers объекта firebase_app_distribution.
lane :distribute do
    build
    firebase_app_distribution(
        app: firebase_app_id,
        release_notes: "Try out this app!"
        testers: app_testers.join(","),
    )
end

На этом этапе ваш Fastfile должен выглядеть так:

firebase_app_id = "<your Firebase app ID>"
app_testers = [
  "your@email.com",
  "another@email.com",
]

default_platform(:ios)

lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true)
    build_app(export_method: "ad-hoc")
end

lane :distribute do
    build
    firebase_app_distribution(
        app: firebase_app_id,
        release_notes: "Try out this app!",
        testers: app_testers.join(","),
    )
end
  1. Снова проедьте по полосе.

$ fastlane distribute

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

2e0fc9603b868af8.png

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

Зарегистрируйте свое тестовое устройство

Как тестировщику, вам необходимо войти в Google на тестовом устройстве, чтобы получить доступ к выпускам приложений, которые вас пригласили тестировать. Поскольку ваша тестовая сборка — это выпуск Ad Hoc, вам также необходимо зарегистрировать своё тестовое устройство, установив профиль Firebase. После этого доступ к выпускам, которые станут вам доступны, можно будет получить из веб-приложения App Distribution для тестировщиков, используя веб-клип, добавленный на главный экран вашего устройства.

  1. На тестовом устройстве iOS откройте письмо от Firebase App Distribution и нажмите на ссылку «Начать» . Убедитесь, что вы открываете ссылку в Safari.
  2. Теперь вы находитесь в веб-приложении App Distribution Tester. На открывшейся странице войдите в свою учётную запись Google и нажмите «Принять приглашение».

d833407de251b89f.png

  1. Теперь вы можете видеть релизы, на которые вас пригласили. Нажмите «Зарегистрировать устройство» под одним из релизов.

fd141215e54a938d.png

  1. При появлении запроса загрузите профиль Firebase, затем установите его в приложении «Настройки».

Установка профиля дает Firebase разрешение на:

  • Зарегистрируйте тестовое устройство, получив его уникальный идентификатор (UDID).

Firebase отправляет всем владельцам и редакторам проекта Firebase электронное письмо, включающее UDID тестового устройства.

  • Установите веб-клип на главный экран тестового устройства. Веб-клип открывает веб-приложение App Distribution Tester, которое позволяет установить все тестовые приложения и получить к ним доступ.

В веб-приложении App Distribution для тестирования ваше тестовое устройство теперь зарегистрировано для выпуска вашего приложения.

fe93d649dfa25877.png

Теперь, когда вы передали UDID своего тестового устройства в Firebase, вы можете продолжить работу в качестве разработчика. На вкладке «Тестировщики» панели управления App Distribution информация о вашем тестировщике теперь отображается под релизом вашего приложения со статусом «Принято»:

7b9f665a63a384cf.png

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

Экспортируйте UDID вашего тестового устройства

Как разработчик, вы получите электронное письмо от Firebase с UDID тестового устройства. App Distribution также позволяет легко собрать сразу несколько UDID новых устройств, экспортируя их непосредственно из консоли Firebase в виде текстового файла.

  1. Чтобы экспортировать все UDID, откройте вкладку «Тестировщики и группы» .

241a9936898a2fc0.png

  1. Нажмите Экспортировать Apple UDID .

bcf0c26c522d9b4e.png

Файл должен содержать UDID вашего тестового устройства.

Device ID            Device Name                            Device Platform
1234567890     udid.codelab.tester@gmail.com - iPhone SE 2nd Gen        ios

UDID также можно экспортировать из командной строки с помощью fastlane , что вы сделаете в следующем разделе.

6. Обновите профиль подготовки вашего приложения и перестройте его.

Теперь вам нужно добавить UDID вашего тестового устройства в профиль подготовки вашего приложения, перестроить версию вашего приложения, которая будет работать на вашем устройстве, и распространить новую версию.

Добавить экспортную полосу UDID

  1. Добавьте еще одну переменную в начало файла Fastfile и укажите в ней путь к файлу, куда будут загружены UDID устройств ваших тестировщиков.
firebase_app_id = "<your Firebase app ID>"
app_testers = [
  "your@email.com",
  "another@email.com",
]
tester_udids_file = "tester_udids.txt"
  1. Настройте новую полосу, которая использует действие экспорта UDID плагина App Distribution для загрузки UDID тестировщиков, так же, как вы это делали из консоли.
lane :download_udids do
    firebase_app_distribution_get_udids(
        app: firebase_app_id,
        output_file: tester_udids_file,
    )
end
  1. Выполните следующую команду, чтобы загрузить UDID.

$ fastlane download_udids

  1. Распечатайте загруженный файл, который должен содержать UDID тестового устройства.

$ cat tester_udids.txt

Добавьте устройства в консоль разработчика Apple

  1. Создайте следующую полосу для добавления UDID в список устройств в консоли разработчика Apple, чтобы вы могли добавить их в свой профиль подготовки с помощью действия register_devices Fastlane :
lane :add_new_devices do
    register_devices(devices_file: tester_udids_file)
end
  1. Затем пройдите по полосе:

$ fastlane add_new_devices

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

Добавьте устройства в свой профиль подготовки

  1. Добавьте аргумент force к шагу профиля подготовки на линии build , чтобы заставить его выбирать новые устройства каждый раз при сборке.
lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true, force: true)
    build_app(export_method: "ad-hoc")
end

Перезапустите полосу для сборки и загрузки

Теперь вам нужно обновить свою полосу distribute , добавив новые полосы, чтобы добавить устройства в профиль обеспечения, заново собрать приложение, а затем распространить его.

  1. Назовите новые полосы движения из distribute :
lane :distribute do
    download_udids
    add_new_devices
    build
    firebase_app_distribution(
        app: "1:123456789:ios:abcd1234",
        release_notes: "Try out this app!"
        testers: app_testers.join(","),
    )
end
  1. Запустите distribute полосу:

$ fastlane distribute

На этом этапе ваш Fastfile должен выглядеть так:

firebase_app_id = "<your Firebase app ID>"
app_testers = [
  "your@email.com",
  "another@email.com",
]
tester_udids_file = "tester_udids.txt"

default_platform(:ios)

lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true, force: true)
    build_app(export_method: "ad-hoc")
end

lane :distribute do
    download_udids
    add_new_devices
    build
    firebase_app_distribution(
        app: firebase_app_id,
        release_notes: "Try out this app!",
        testers: app_testers.join(","),
    )
end

lane :download_udids do
    firebase_app_distribution_get_udids(
        app: firebase_app_id,
        output_file: tester_udids_file,
    )
end

lane :add_new_devices do
    register_devices(devices_file: tester_udids_file)
end

Загрузите релиз с тестового устройства

Теперь, когда ваше приложение включает UDID тестовых устройств, их можно установить на тестовые устройства.

e275f73d57cc8fb1.png

  1. На тестовом устройстве вернитесь в веб-приложение App Distribution для тестирования, используя ссылку в электронном письме или значок на главном экране устройства.

При переходе в приложение UDID codelab вы увидите, что релиз готов к загрузке.

dad6d03b6ad78746.png

  1. Если вы используете физическое устройство, нажмите «Загрузить», затем установите и запустите приложение!

7. Поздравления

Вы настроили App Distribution и Fastlane для автоматизации процесса предварительного тестирования. Теперь, когда вы захотите пригласить дополнительных тестировщиков или добавить их UDID в приложение, вам нужно будет выполнить всего одну команду: fastlane distribute .

Больше не нужно собирать UDID-идентификаторы у тестировщиков по отдельности или обращаться к консоли разработчика Apple для обновления списков устройств или профилей подготовки. Вам даже не нужно открывать XCode!

Этот рабочий процесс легко настроить для запуска ежечасно или ежедневно в среде непрерывной интеграции.

Дальнейшее чтение