Настройка автоматической раздачи билдов через Firebase App Distribution
Отметим: когда билды тестовой версии нужно доставить команде до того, как App Store или Google Play одобрят сборку, каждый час ожидания — это простой. Firebase App Distribution (FAD) решает эту проблему: выгружает .apk или .ipa напрямую тестировщикам, минуя модерацию. Но ручная загрузка на веб-интерфейс — тоже потеря времени, особенно при нескольких коммитах в день. Мы автоматизируем этот процесс полностью: от подписи iOS через match до интеграции в GitHub Actions или GitLab CI. Под ключ с поддержкой в течение месяца.
Почему FAD выигрывает у TestFlight и Play Console? TestFlight требует включения в ревью Apple и лимит в 100 тестировщиков. Play Console — только Android, и внутреннее тестирование публикуется с задержкой до часа. FAD даёт до 1000 тестировщиков на проект, мгновенную доставку и встроенную интеграцию с Crashlytics — краш-репорты видны сразу после установки. Высвобожденное время разработчики тратят на фичи, а не на ожидание.
Отметим: как настроить автоматическую раздачу для Android через Fastlane. Fastlane — стандарт CI/CD для мобильной разработки. Плагин firebase_app_distribution делает раздачу одной командой:
lane :distribute_android do gradle( task: "assemble", build_type: "Debug", flavor: "staging" ) firebase_app_distribution( app: ENV["FIREBASE_APP_ID_ANDROID"], firebase_cli_token: ENV["FIREBASE_CLI_TOKEN"], groups: "qa-team, internal-testers", release_notes: "Branch: #{git_branch}\nCommit: #{last_git_commit[:message]}" ) end Токен получают одним firebase login:CI, его хранят в секретах CI. Альтернатива — Service Account JSON (Google Cloud IAM): такой ключ не истекает, поэтому для продакшн-CI предпочитают его. Мы всегда используем Service Account.
Настройка для iOS: подпись ad-hoc и UDID Для iOS процесс сложнее из-за provisioning profile. Нужен .ipa, подписанный ad-hoc или development. Устройства тестировщиков регистрируют в Apple Developer Portal. Firebase автоматически собирает UDID через onboarding-ссылку, но профиль придётся пересобрать. Fastlane + match автоматизируют и это:
lane :distribute_ios do match(type: "adhoc", readonly: true) build_app( scheme: "MyApp-Staging", export_method: "ad-hoc" ) firebase_app_distribution( app: ENV["FIREBASE_APP_ID_IOS"], firebase_cli_token: ENV["FIREBASE_CLI_TOKEN"], groups: "ios-testers", release_notes: "Build #{build_number}" ) end Fastlane documentation: firebase_app_distribution plugin При добавлении нового тестировщика UDID можно импортировать через сгенерированную FAD ссылку — firebase appdistribution:testers:invite или через интерфейс. После этого нужно обновить профиль. Match с опцией register_devices сделает это автоматически при следующей сборке.
Firebase App ID: не перепутайте FIREBASE_APP_ID — это не bundle identifier, а строка вида 1:123456789:android:abcdef. Его берут в Firebase Console → Project Settings → Your apps. Частая ошибка — указать идентификатор iOS вместо Android, и наоборот.
Интеграция в CI без Fastlane Если проект не использует Fastlane, Firebase CLI работает напрямую:
firebase appdistribution:distribute app-release.apk \ --app "$FIREBASE_APP_ID" \ --groups "qa-team" \ --release-notes "Automated build $CI_BUILD_NUMBER" \ --token "$FIREBASE_CLI_TOKEN" Команда подходит для любого CI: GitHub Actions, GitLab CI, Bitrise, CircleCI. Разница только в том, как передать токен — через переменные окружения.
Сравнение способов: Fastlane vs Firebase CLI
| Критерий | Fastlane | Firebase CLI |
|---|---|---|
| Управление подписями | match, sigh автоматизация |
Вручную подписывать IPA/APK |
| Release Notes из Git | Встроен last_git_commit |
Только из переменных CI |
| Поддержка групп | Да | Да |
| Токен | Service Account или login:CI | Service Account или login:CI |
| Гибкость в CI | Требует Ruby-окружения | Только бинарник 10 MB |
Типичные ошибки и как их избежать
| Ошибка | Решение |
|---|---|
| Неверный App ID | Проверьте в консоли Firebase: начинается с 1: |
| iOS: тестировщик не видит билд | UDID не добавлен в профиль — обновите через match |
| Токен login:CI истёк | Используйте Service Account JSON |
| ProGuard/R8 ломает сборку | Настройте правила keep для Firebase SDK |
Отметим: что входит в настройку под ключ
- Анализ текущего CI и стека сборки.
- Создание Firebase проекта или настройка существующего.
- Создание сервисного аккаунта в Google Cloud IAM.
- Написание Fastlane lanes или shell-скриптов для обоих платформ с учётом подписи (iOS).
- Интеграция с GitLab CI, GitHub Actions или Bitrise.
- Настройка групп тестировщиков (QA, Internal, Alpha).
- Тестовый запуск, проверка доставки уведомлений.
- Документация для разработчиков и QA-инженеров.
Сроки: от 1 до 3 дней в зависимости от сложности подписи и числа платформ. Гарантируем поддержку в течение 30 дней после сдачи: адаптируем скрипты под ваши правки.
Закажите настройку Firebase App Distribution — свяжитесь с нами, чтобы начать. Первую консультацию предоставляем бесплатно: оценим ваш проект и предложим решение. Вложение в автоматизацию окупается за счёт ускорения циклов — каждый билд доставляется в 5 раз быстрее, снижая затраты на ручные операции.







