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

В этом практическом занятии вы узнаете, как использовать 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 будет работать для большинства заданий в рамках практического курса, но симуляторы не могут загружать релизы.
Вы по-прежнему можете убедиться в успешности установки, проверив, отображается ли кнопка «Загрузить» в веб-приложении для тестирования распространения приложений.
2. Начать
Настройте Fastlane
App Distribution интегрируется с fastlane , что позволяет автоматизировать распространение предварительных сборок вашего приложения. App Distribution интегрируется с вашей конфигурацией fastlane .
- Установите и настройте fastlane .
- Во время установки запустите
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
Создайте своё приложение
- В файле ./fastlane/Appfile задайте несколько глобальных переменных для fastlane
./fastlane/Appfile.Укажите идентификатор вашего приложения и ваш Apple ID:
app_identifier("<your app's bundle identifier>")
apple_id("<your Apple id>")
- Создайте свою первую дорожку и используйте действие
build_app(также известное какgym) в fastlane для сборки вашего приложения, добавив следующее в ваш файл./fastlane/Fastfile:
default_platform(:ios)
lane :build do
build_app(export_method: "ad-hoc")
end
- Подпишите ваше приложение для распространения.
В этом практическом задании вы будете управлять собственной сертификацией и профилем с помощью get_certificates (также известной как cert ), которая генерирует сертификаты подписи локально и сохраняет все данные в связке ключей macOS. Однако, как правило, для безопасного управления сертификатами и профилями подписи кода вашей команды вам потребуется использовать действие fastlane sync_code_signing action (также известное как match ).
lane :build do
get_certificates()
build_app(export_method: "ad-hoc")
end
- Создайте профиль подготовки для вашего приложения, используя действие
get_provisioning_profile(также известное какsigh). Это позволит вам поделиться своим приложением с тестировщиками.
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
- [Необязательно] Если вы никогда раньше не запускали свое приложение, выполните следующую команду, чтобы создать приложение в консоли разработчика Apple:
$ fastlane produce --skip_itc
- Наконец, создайте свое приложение, пройдя по этой дорожке.
Вам будет предложено ввести свой Apple ID, пароль (который хранится в связке ключей) и идентификатор пакета вашего приложения.
$ fastlane build
Если у вас возникнут какие-либо проблемы, пожалуйста, ознакомьтесь с руководством по устранению неполадок fastlane .
4. Загрузите свое приложение в Firebase.
Теперь, когда вы создали свое приложение, вы готовы загрузить его в систему распространения приложений.
Создайте новый проект Firebase.
- Войдите в консоль Firebase, используя свою учетную запись Google.
- Нажмите кнопку, чтобы создать новый проект, а затем введите название проекта (например,
UDID Export Codelab). - Нажмите «Продолжить» .
- Если появится запрос, ознакомьтесь с условиями использования Firebase и примите их, после чего нажмите «Продолжить» .
- (Необязательно) Включите помощь ИИ в консоли Firebase (в Firebase она называется "Gemini").
- Для этого практического занятия вам не понадобится Google Analytics, поэтому отключите эту опцию.
- Нажмите «Создать проект» , дождитесь завершения подготовки проекта, а затем нажмите «Продолжить» .
Добавьте ваше iOS-приложение в проект.
- Нажмите на значок iOS, чтобы создать новое приложение Firebase для iOS, и введите идентификатор пакета вашего приложения.

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

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

Настройте дистрибутив в fastlane.
- Выполните следующую команду из корневой папки вашего iOS-проекта, чтобы добавить дистрибутив приложений в конфигурацию fastlane .
Если команда запросит у вас вариант, выберите Вариант 3: RubyGems.org :
$ fastlane add_plugin firebase_app_distribution
- Убедитесь, что плагин установлен:
$ fastlane
В результате выполнения команды в списке установленных плагинов должен отобразиться fastlane-plugin-firebase_app_distribution .
- После подтверждения установки плагина выберите вариант 0 для отмены.
Аутентифицируйте свой проект Firebase.
Для использования плагина fastlane вам сначала необходимо аутентифицировать свой проект Firebase.
- Выполните следующую команду, чтобы подключить CLI к вашей учетной записи Google:
$ firebase login
- Когда команда выведет ссылку для аутентификации, откройте эту ссылку в браузере.
- При появлении запроса войдите в свою учетную запись Google и предоставьте разрешение на доступ к вашему проекту Firebase.
Распространите своё приложение
Теперь вы готовы к распространению своего приложения.
- В верхней части файла
./fastlane/Fastfileопределите переменную с именемfirebase_app_id. Замените<your_app_id>на идентификатор приложения Firebase, которое вы создали (его можно найти на странице настроек проекта ).
Fastfile написан на Ruby, поэтому используйте синтаксис Ruby для определения переменных.
firebase_app_id = "<your_app_id>"
- Добавьте новый поток с именем
distribute, который вызывает поток build, а затем распространяет ваше приложение с помощью действияfirebase_app_distribution.
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
)
end
- Запустите новый канал для сборки вашего приложения и создания дистрибутива.
$ 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 вы увидите новую версию вашего приложения.

5. Пригласите тестировщиков скачать ваше приложение.
Когда тестировщик принимает приглашение протестировать сборку Ad Hoc, ему предлагается дать разрешение на передачу своего UDID. Если он соглашается, App Distribution собирает информацию о его устройстве и уведомляет вас по электронной почте. В этом разделе вы добавите себя в качестве тестировщика, чтобы загрузить и протестировать распространенное вами приложение.
Добавьте себя в список тестировщиков релиза.
- В верхней части файла Fastfile, в разделе
firebase_app_id, создайте переменную для хранения данных о тестировщиках, указав свой собственный адрес электронной почты, а также другие необязательные адреса электронной почты, которые вы хотели бы протестировать.
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
- Используйте метод ` Array#join` в Ruby, чтобы преобразовать массив
app_testersв строку, разделенную запятыми, как и ожидает параметрtesters. Затем передайте результат параметруtestersfirebase_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
- Проедьте по полосе еще раз.
$ fastlane distribute
После запуска тестовой дорожки добавленные вами тестировщики получат электронное письмо с приглашением от App Distribution, уведомляющее их о новом доступном релизе. В консоли Firebase теперь можно увидеть добавленных вами тестировщиков в разделе релизов вашего приложения.

Поскольку вы указали свой адрес электронной почты, вы получите письмо от Firebase App Distribution с приглашением протестировать приложение. Теперь вы первый тестировщик! Продолжите выполнение инструкций ниже, чтобы зарегистрироваться в качестве тестировщика на вашем тестовом устройстве.
Зарегистрируйте ваше тестовое устройство
В качестве тестировщика вам потребуется войти в Google на своем тестовом устройстве, чтобы получить доступ к протестированным вами версиям приложения. Поскольку ваша тестовая сборка является временной (Ad Hoc release), вам также потребуется зарегистрировать свое тестовое устройство, установив профиль Firebase. После этого вы сможете получить доступ к доступным вам версиям через веб-приложение App Distribution для тестирования, используя веб-клип, добавленный на главный экран вашего устройства.
- На тестовом устройстве iOS откройте электронное письмо, отправленное Firebase App Distribution, и нажмите на ссылку «Начать» . Убедитесь, что ссылка открыта в Safari.
- Вы находитесь в веб-приложении App Distribution Tester. На появившейся странице войдите в систему с помощью своей учетной записи Google и нажмите «Принять приглашение».

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

- При появлении запроса загрузите профиль Firebase, а затем установите профиль в приложении «Настройки».
Установка профиля предоставляет Firebase следующие разрешения:
- Зарегистрируйте тестовое устройство, получив его уникальный идентификатор (UDID).
Firebase отправляет всем владельцам и редакторам проекта Firebase электронное письмо, содержащее UDID тестового устройства.
- Установите веб-клип на главный экран тестового устройства. Веб-клип откроет веб-приложение App Distribution Tester, которое позволит вам установить и получить доступ ко всем вашим тестовым приложениям.
В веб-приложении App Distribution Tester ваше тестовое устройство теперь зарегистрировано для выпуска вашего приложения.

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

В следующем разделе вы добавите UDID устройства в профиль подготовки вашего приложения, а затем создадите версию приложения, которая будет работать с вашим тестовым устройством.
Экспортируйте UDID вашего тестового устройства.
Разработчик получит электронное письмо от Firebase, содержащее UDID тестового устройства. В качестве опции App Distribution позволяет легко собрать сразу несколько UDID новых устройств, экспортируя их непосредственно из консоли Firebase в виде текстового файла.
- Чтобы экспортировать все UDID, откройте вкладку « Тестировщики и группы» .

- Нажмите «Экспорт UDID-идентификаторов Apple» .

Файл должен содержать UDID вашего тестового устройства.
Device ID Device Name Device Platform
1234567890 udid.codelab.tester@gmail.com - iPhone SE 2nd Gen ios
UDID также можно экспортировать из командной строки с помощью fastlane , что вы сделаете в следующем разделе.
6. Обновите профиль подготовки вашего приложения и перестройте его.
Теперь добавьте UDID вашего тестового устройства в профиль подготовки вашего приложения, пересоберите версию приложения, которая будет работать на вашем устройстве, и распространите новую версию.
Добавить полосу экспорта UDID
- Добавьте в начало файла Fastfile еще одну переменную и укажите путь к файлу, куда будут загружены UDID устройств ваших тестировщиков.
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
tester_udids_file = "tester_udids.txt"
- Создайте новую дорожку, которая будет использовать действие экспорта UDID плагина App Distribution для загрузки UDID тестировщиков, точно так же, как вы это делали из консоли.
lane :download_udids do
firebase_app_distribution_get_udids(
app: firebase_app_id,
output_file: tester_udids_file,
)
end
- Для загрузки UDID-идентификаторов перейдите по следующей ссылке.
$ fastlane download_udids
- Распечатайте загруженный файл, который должен содержать UDID тестовых устройств.
$ cat tester_udids.txt
Добавить устройства в консоль разработчика Apple
- Создайте следующий поток, чтобы добавить UDID в список ваших устройств в консоли разработчика Apple, чтобы вы могли добавить их в свой профиль подготовки с помощью действия
register_devicesв fastlane :
lane :add_new_devices do
register_devices(devices_file: tester_udids_file)
end
- Затем пройдите по полосе:
$ fastlane add_new_devices
После этого вы должны увидеть новые устройства в списке устройств в консоли разработчика.
Добавьте устройства в свой профиль подготовки.
- Добавьте аргумент
forceк шагу профиля подготовки в вашейbuildлинии, чтобы принудительно включать новые устройства при каждой сборке.
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true, force: true)
build_app(export_method: "ad-hoc")
end
Повторно запустите линию для сборки и загрузки.
Теперь вам нужно обновить канал distribute , добавив новые каналы, чтобы добавить устройства в профиль подготовки, пересобрать приложение, а затем распространить его.
- Вызов новых полос из
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
- Пройдите по полосе
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 тестовых устройств, его можно установить на тестовые устройства.

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

- Если вы используете физическое устройство, нажмите «Загрузить», затем установите и запустите приложение!
7. Поздравляем!
Теперь вы настроили App Distribution и fastlane для автоматизации процесса предварительного тестирования. Теперь, когда вы захотите пригласить дополнительных тестировщиков или добавить их UDID в ваше приложение, вам потребуется выполнить всего одну команду: fastlane distribute .
Больше не нужно собирать UDID от тестировщиков по отдельности или заходить в консоль разработчика Apple для обновления списков устройств или профилей подготовки. Вам даже не нужно открывать Xcode!
Этот рабочий процесс легко настроить для запуска ежечасно или ежедневно в вашей среде непрерывной интеграции.
Дополнительная информация
- Изучите возможности Firebase App Distribution , включая наш SDK для iOS, встроенный в приложение.
- Узнайте больше о Fastlane
- Управляйте процессом подписания кода вашей команды с помощью
match - Интегрируйте fastlane в вашу систему непрерывной интеграции (CI).