Пошаговый guide по сборке iOS и Android приложений через Expo EAS Build без использования Mac, с конкретными командами и отловом ошибок. Время выполнения полного прохода: 30–90 минут в зависимости от размера проекта.
К окончанию вы получите готовые .ipa и .aab/.apk, подписанные и готовые к загрузке в TestFlight и Google Play, без локального Mac. Примерное время полного цикла: 30–90 минут (включая первый prebuild и загрузку артефактов).
Что вы изучите
Подготовка React Native проекта для EAS Build (expo prebuild) — конкретные команды.
Конфигурация eas.json для iOS и Android, профили release и development.
Запуск EAS Build в облаке для iOS без Mac, получение подписанных .ipa.
Автоматическая подпись, управление сертификатами и профилями Apple.
Отлов типовых ошибок и их исправление, практические примеры вывода команд.
Требования
Node.js 18.x или 20.x (релизы 2024–2025), npm/yarn актуальные.
expo CLI 6.x (релиз 2025) и eas-cli 3.x (релиз 2025).
Локальная машина: минимум 4 ГБ RAM, 2 CPU для prebuild; EAS Build выполняется в облаке.
Аккаунт Expo (бесплатный) и Apple Developer Program для загрузки в TestFlight (оплата Apple — 99 USD/год на 2026 год).
Почему EAS Build?
0
Статья была полезной?
Комментарии (0)
Войдите или зарегистрируйтесь, чтобы оставить комментарий
Загрузка комментариев…
EAS Build — облачный сервис сборки приложений от Expo (актуальные релизы 2025–2026). Он позволяет собирать нативные бандлы для iOS и Android в облаке, исключая необходимость локального Mac для iOS. Для компаний и фрилансеров это сокращает время на инфраструктуру и упрощает CI/CD.
Ключевые преимущества с конкретикой: уменьшение TCO, автоматизация подписи, масштабируемость. Размеры артефактов: .ipa обычно 25–120 МБ в зависимости от бандлов и ассетов; .aab ~30–150 МБ. EAS предлагает облачные машины с различными конфигурациями, сборка базового Release занимает 3–12 минут для типичных проектов (2025 метрики), первая сборка дольше — 10–30 минут из‑за загрузки зависимостей и установки node_modules.
Скриншот панели EAS Build 2026 с логами сборки
Шаг 1: expo prebuild
Команда expo prebuild генерирует нативные проекты iOS/Android из проекта на managed workflow. Выполните её перед сборкой в облаке, если у вас есть нестандартные нативные зависимости или вы хотите проконтролировать native-код.
Пояснение: флаг --no-install пропускает автоматическую установку зависимостей в нативных каталогах. Команда создаст папки android/ и ios/ и сгенерирует необходимые конфигурации.
Ожидаемый успешный вывод (сокращённо):
✔ Parsed app.json
✔ Generating Android project
✔ Generating iOS project
Your project is ready and you can build from the native directories.
Типовая ошибка:
Error: Could not find Xcode workspace
Причина: у вас нет Xcode локально или генерированные файлы не созданы корректно.
Как исправить: если вы на Linux/Windows — это нормально, prebuild может генерировать файлы без локального Xcode. Запустите expo prebuild --platform ios --no-install --skip-mod для обхода конфликтных модов или удалите проблемный мод из plugin в app.json. Если ошибка связана с правами, проверьте доступы к файлам: chmod -R u+rw ..
Скриншот логов expo prebuild с генерацией ios и android
Шаг 2: конфиг eas.json
Файл eas.json управляет профилями сборки. Ниже минимальный пример для iOS и Android с профилями release и development.
Пояснение: указывайте конкретную image с годом (напр., macos-12-rosetta-2025). Для iOS требуется macOS image; EAS предоставляет их в облаке. Поле cli.version гарантирует совместимость с eas-cli@3.x.
Ожидаемый вывод при валидации конфигурации:
✔ Validated eas.json
Configuration is valid for the project.
Как исправить: уточните доступные образы через eas build:configure --platform ios или документацию 2025—2026, замените имя образа на поддерживаемое. Также проверьте версию eas-cli.
Шаг 3: build на iOS без Mac
Запуск сборки iOS производится в облаке EAS — локальный Mac не обязателен. Вам потребуется аккаунт Apple Developer и доступ к сертификатам. Команда для запуска:
eas build --platform ios --profile release --non-interactive
Пояснение: флаг --non-interactive удобен для CI. При первом запуске EAS предложит загрузить сертификаты и provisioning profile. Можно разрешить EAS управлять сертификатами автоматически (recommended) или загрузить свои.
Типовая ошибка:
Error: Unable to validate credentials: Missing Apple ID session
Причина: не выполнён вход в аккаунт Apple через EAS или двухфакторная аутентификация блокирует автоматизацию.
Как исправить: выполните локально eas login и затем eas credentials для управления сертификатами. Если включена двухфакторная аутентификация, используйте App Specific Password или настройте Session Cookie (инструкции доступны в интерфейсе Expo 2025). В CI сохраните секреты в переменных окружения и используйте EXPO_APPLE_PASSWORD и EXPO_SESSION.
Шаг 4: подпись, export и отладка ошибок сборки
После завершения сборки нужен артефакт и проверка подписи. EAS автоматически подпишет сборку при управлении сертификатами. Чтобы скачать и проверить .ipa используйте:
eas build:list --platform ios
eas build:download --platform ios --id xxxxxxxx
# Проверка подписи локально (macOS требуется для codesign проверок):
codesign -dv --verbose=4 MyApp.ipa
Пояснение: команда eas build:download вернёт путь к файлу. Если у вас нет macOS, можно использовать unzip и проверить содержимое пакета: структура должна включать Payload/YourApp.app/ и метаданные.
Ожидаемый вывод при успешной подписи (на macOS):
Executable=/Payload/YourApp.app/YourApp
Authority=Apple Distribution: Your Company (TEAMID)
Signed Time=2026-02-01 12:00:00 +0000
Типовая ошибка:
Error: The app bundle is not signed with a valid provisioning profile
Причина: неверный provisioning profile или несовпадающий bundleIdentifier.
Как исправить: проверьте bundleIdentifier в app.json и в Apple Developer account; перегенерируйте provisioning profile для того же App ID. В EAS используйте eas credentials для удаления и повторной загрузки профилей. Частая причина — несоответствие Apple Team ID или использование личного Apple ID вместо организационного.
Шаг 5: build на Android и публикация
Android‑сборка в EAS проще: автоматическая подпись через Google Play или загрузка собственного keystore. Запуск:
eas build --platform android --profile release --non-interactive
Пояснение: EAS создаст .aab или .apk в зависимости от конфигурации. По умолчанию Google Play требует .aab. Рекомендуемый размер .aab: 30–150 МБ. Для управления keystore используйте eas credentials -p android.
Типовая ошибка:
Error: Keystore is invalid or missing
Причина: отсутствует keystore или не совпадают alias/пароль.
Как исправить: загрузите keystore через eas credentials и убедитесь, что keystore.password и key.alias прописаны корректно. Для автоматической интеграции с Google Play используйте service account JSON и eas submit -p android --key /path/to/google-service-account.json.
Сколько стоит?
Компоненты затрат на 2025–2026 годы:
Apple Developer Program: $99/год (2026).
Google Play Developer: единовременный платёж $25.
Expo/EAS: базовый аккаунт бесплатен, но для ускоренной сборки и выделенных ресурсов есть платные планы. Примерные цены 2026: Team plan от $29/месяц, Business от $99/месяц — точные тарифы уточняйте в личном кабинете Expo.
CI/CD (опционально): если используете GitHub Actions — бесплатно для публичных репозиториев, для приватных — оплачивается в зависимости от минут; типичная нагрузка на 1 проект — 200–1000 минут в месяц.
Для малого проекта с редкими релизами можно обходиться бесплатным аккаунтом Expo и оплачивать только Apple/Google. Для больших команд выгоднее корпоративный план EAS, чтобы получить приоритетные сборки и управление секретами.
Какие альтернативы?
Основные альтернативы EAS Build на 2025–2026 годы:
GitHub Actions + self-hosted Mac — полный контроль, но требуется физический Mac или macOS в облаке (macstadium, Mac in Cloud). Стоимость: от $30/месяц до нескольких сотен в зависимости от загрузки.
Microsoft App Center (релевантно 2025) — предлагает сборки, но поддержка новых Expo модов ограничена; удобен для .apk/.ipa автоматической публикации.
Fastlane + CI — гибкость для автоматизации подписи и публикации, но требует настройки инфраструктуры и macOS для iOS.
Bitrise — облачная CI/CD для мобильных с поддержкой macOS; цены сравнимы с EAS при высоких нагрузках.
Если вам важна скорость и минимум инфраструктуры — EAS Build оптимален. Если нужна строгая локальная безопасность ключей или корпоративная интеграция с SSO — рассмотрите self-hosted Mac + Fastlane или Bitrise с эксклюзивными контрактами.
Если проект использует приватные npm-пакеты, в EAS Build нужно передать токены доступа. В CI или в настройках проекта в Expo CLI добавьте переменные окружения: NPM_TOKEN или используйте .npmrc в репозитории. EAS при сборке устанавливает зависимости, поэтому токен должен быть доступен во время установки. Для приватных ios/cocoapods репозиториев применяются аналогичные credentials — кеширование и частые установки увеличивают время сборки.
Что делать при проблемах с двухфакторной аутентификацией Apple?
Для автоматизации через EAS лучше создать app‑specific password или использовать session cookie. App‑specific password работает для загрузки артефактов в App Store Connect, но для управления сертификатами иногда требуется Interactive login с ручным вводом кода. В CI используйте сервисные аккаунты и заранее загруженные сертификаты в EAS credentials. В корпоративных сценариях предпочтительнее хранить сертификаты в закрытом хранилище и запретить автоматическое управление со стороны EAS.
Когда стоит использовать expo prebuild vs managed workflow?
Используйте expo prebuild, если проект содержит нативные зависимости, требующие изменений в AndroidManifest, Info.plist или вы используете кастомные плагин‑моды. Если проект остаётся в стандартном managed workflow и все нужные плагины поддерживаются, можно обойтись без prebuild и запускать eas build напрямую, что сэкономит время. Prebuild генерирует нативные каталоги и делает проект более похожим на bare workflow, что удобно для отладки.
Сколько времени занимает первая сборка iOS в EAS?
Первая сборка чаще всего занимает 10–30 минут для типичного проекта (инсталляция зависимостей, pod install, компиляция). Повторные сборки для release занимают 3–12 минут при тех же условиях. Время зависит от размера node_modules, наличия нативных пакетов и конфигурации образа (macOS image может влиять на скорость).
Чем отличается .aab от .apk и что выбрать?
.aab (Android App Bundle) — современный формат Google Play, позволяющий уменьшать размер приложения на устройствах через динамическую доставку; требуется для новых публикаций в Google Play. .apk — старый формат, пригоден для локального тестирования и сторонних магазинов. Для продакшена используйте .aab; для быстрых тестов в CI можно собрать .apk добавив соответствующий флаг в eas.json.
Expo EAS Build: деплой React Native без Mac | KtoHto
Комментарии (0)
Войдите или зарегистрируйтесь, чтобы оставить комментарий
Загрузка комментариев…