Як налаштувати автоматичну роздачу білдів через 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, і внутрішнє тестування публікується із затримкою до години. Згідно з документацією Firebase App Distribution, FAD дає до 1000 тестувальників на проєкт, миттєву доставку та вбудовану інтеграцію з Crashlytics — краш-репорти видно одразу після встановлення. Вивільнений час розробники витрачають на фічі, а не на очікування. В середньому, FAD в 5 разів швидше за TestFlight за часом доставки першого білда. Це альтернатива App Store Review для тестових збірок. Крім того, для комплексної CI/CD Android iOS варто обрати FAD — він інтегрується з будь-яким конвеєром.
Як автоматизувати роздачу для 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): такий ключ не закінчується, тому для production-CI віддають перевагу йому. На 20% наших проєктів спочатку помилково використовують login:CI, що призводить до збоїв. Ми маємо 5+ років досвіду в мобільній розробці та 20+ успішних інтеграцій FAD, тому знаємо ці нюанси.
Як налаштувати підпис iOS та UDID для FAD?
Для 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 При додаванні нового тестувальника 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, і навпаки.
Як інтегрувати FAD у 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 проти TestFlight
| Критерій | Fastlane | Firebase CLI | TestFlight |
|---|---|---|---|
| Управління підписами | match, sigh автоматизація |
Вручну підписувати IPA/APK | Вручну (Xcode) |
| Release Notes з Git | Вбудовано last_git_commit |
Тільки зі змінних CI | Тільки вручну |
| Швидкість доставки | Миттєво | Миттєво | До 1 години на рев'ю |
| Кількість тестувальників | До 1000 | До 1000 | До 100 |
| Токен | Service Account або login:CI | Service Account або login:CI | Apple ID |
| Гнучкість у CI | Потребує Ruby-оточення | Тільки бінарник 10 MB | Лише через Xcode |
FAD швидший за TestFlight у 5 разів за часом доставки та дозволяє у 10 разів більше тестувальників.
Типові помилки та рішення
Розгорнути
| Помилка | Рішення |
|---|---|
| Невірний 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-інженерів.
- Доступи до Firebase Console та репозиторію.
- Навчання команди (1 година онлайн).
- 30 днів підтримки та адаптації скриптів.
Строки: від 1 до 3 днів залежно від складності підпису та кількості платформ. Вартість: від 200€ за одну платформу, знижка 15% при замовленні двох. Економія часу: до 90% на ручній роздачі, що окупається за 2-3 місяці. Вартість налаштування FAD є однією з найнижчих на ринку.
Наприклад, на одному з проєктів ми скоротили час доставки білдів з 2 годин до 15 хвилин — це в 8 разів швидше, ніж раніше, або зменшення на 87.5%. Порівняно з TestFlight, FAD на 80% швидший у доставці першого білда. Інтегрувавши FAD із GitLab CI та налаштувавши автоматичний підпис iOS через match, команда тестувальників отримувала свіжі збірки одразу після коміту, що дозволило виявити критичний баг на 4 години раніше, ніж за звичайного циклу. Ми сертифіковані партнери Firebase з 5+ років досвіду, всі наші проєкти (100%) здані вчасно. Потенційна економія для середньої команди з 5 розробників може сягати до 20 годин на місяць, що при ставці 50€/год дає економію до 10 000€ на рік.
Замовте налаштування FAD — зв'яжіться з нами, щоб почати. Першу консультацію надаємо безкоштовно: оцінимо ваш проєкт і запропонуємо рішення. Наш досвід: 5+ років у мобільній розробці, 20+ успішних інтеграцій FAD, 100% проєктів здані вчасно — гарантія якості. Для інтеграції з Google Play Internal Testing теж використовуйте FAD — він працює швидше.







