Урок 06

Сборка и EAS

EAS (Expo Application Services) — облачная сборка приложений. Не нужен Xcode или Android Studio.

Установка

npm install -g eas-cli
eas login
eas init

eas init создаёт проект в Expo и связывает с локальным.

eas.json

{
    "cli": {
        "version": ">= 5.0.0"
    },
    "build": {
        "development": {
            "developmentClient": true,
            "distribution": "internal"
        },
        "preview": {
            "distribution": "internal"
        },
        "production": {
            "autoIncrement": true
        }
    },
    "submit": {
        "production": {}
    }
}

Профили

  • development — для разработки, dev client, hot reload
  • preview — для тестирования внутри команды
  • production — для публикации в сторах

Сборка

# Android APK для тестирования
eas build --platform android --profile preview

# iOS для TestFlight
eas build --platform ios --profile production

# Обе платформы
eas build --platform all --profile production

Сборка идёт в облаке. Ссылка на APK/IPA приходит в терминал.

Локальная сборка

eas build --local

Требует Xcode/Android Studio локально.

Подпись Android

eas credentials

EAS создаст keystore автоматически. Или загрузи свой.

Храни keystore и пароль — потеряешь доступ к обновлениям в Google Play.

Подпись iOS

EAS управляет сертификатами и provisioning profiles. Нужен Apple Developer аккаунт ($99/год).

Версии

В app.json:

{
    "expo": {
        "version": "1.0.0",
        "ios": {
            "buildNumber": "1"
        },
        "android": {
            "versionCode": 1
        }
    }
}

autoIncrement в eas.json увеличивает номер автоматически.

Переменные окружения

В eas.json:

{
    "build": {
        "production": {
            "env": {
                "EXPO_PUBLIC_API_URL": "https://api.example.com"
            }
        }
    }
}

Или через EAS Secrets для приватных:

eas secret:create --name API_KEY --value xxx

OTA-обновления

eas update --branch production --message "Fix bug"

Обновляет JS-бандл без публикации в сторах. Пользователи получают при следующем запуске.

Ограничения: только JS и ассеты. Нативные изменения требуют новой сборки.

Каналы

eas channel:create production
eas channel:edit production --branch production

Разные каналы для разных сборок.

App Store и Google Play

eas submit --platform ios
eas submit --platform android

Загружает сборку в стор. Дальше — ревью.

Итоги

  • eas-cli для сборки в облаке
  • eas.json с профилями
  • eas build для сборки
  • eas submit для загрузки в стор
  • eas update для OTA
  • Секреты через EAS Secrets