Перейти к содержимому

25. Публикация приложений

Финальный шаг — сборка и публикация в App Store (iOS) и Google Play (Android). EAS Build упрощает это до нескольких команд.

Окно терминала
# Установка
npm install -g eas-cli
# Логин
eas login
# Настройка (создаёт eas.json)
eas build:configure
{
"cli": { "version": ">= 3.0.0" },
"build": {
"development": {
"developmentClient": true,
"distribution": "internal",
"ios": { "simulator": true },
"android": { "buildType": "apk" }
},
"preview": {
"distribution": "internal",
"android": { "buildType": "apk" }
},
"production": {
"autoIncrement": true,
"android": { "buildType": "app-bundle" },
"ios": {}
}
},
"submit": {
"production": {
"ios": { "appleId": "[email protected]", "ascAppId": "1234567890" },
"android": { "serviceAccountKeyPath": "./google-service-account.json" }
}
}
}
Окно терминала
# Development build (с dev tools)
eas build --platform android --profile development
eas build --platform ios --profile development
# Preview (тестовая сборка, APK)
eas build --platform android --profile preview
# Production (App Store / Play Store)
eas build --platform android --profile production
eas build --platform ios --profile production
# Обе платформы
eas build --platform all --profile production
Окно терминала
# EAS автоматически создаёт и хранит keystore
# Или используй свой:
eas credentials # Интерактивное управление
# Eas.json
"android": {
"buildType": "app-bundle", // AAB для Play Store
"credentialsSource": "remote" // EAS хранит keystore
}
Окно терминала
# EAS автоматически управляет сертификатами!
# Нужен Apple Developer Account ($99/год)
eas build --platform ios
# → EAS запросит логин в Apple Developer
# → Автоматически создаст provisioning profile
# → Автоматически создаст distribution certificate
Окно терминала
# Отправить в Play Store
eas submit --platform android --latest
# или конкретную сборку:
eas submit --platform android --id BUILD_ID
# Отправить в App Store (TestFlight → Review)
eas submit --platform ios --latest

Google Play:

  • Google Developer Account ($25 одноразово)
  • Service Account JSON (для автоматической загрузки)
  • Приложение создано в Play Console
  • Privacy Policy URL

App Store:

  • Apple Developer Account ($99/год)
  • App создано в App Store Connect
  • Screenshots для всех размеров
  • Privacy Policy URL
  • App Review (1-7 дней)

Обновление JavaScript кода БЕЗ перепубликации в сторах:

Окно терминала
npx expo install expo-updates
Окно терминала
# Отправить OTA обновление
eas update --branch production --message "Fix: исправлен баг на главной"
# Просмотр обновлений
eas update:list
app.json
{
"expo": {
"updates": {
"url": "https://u.expo.dev/PROJECT_ID",
"enabled": true,
"fallbackToCacheTimeout": 0
},
"runtimeVersion": { "policy": "appVersion" }
}
}

Что можно обновить через OTA:

  • JavaScript код
  • Стили
  • Изображения в JS бандле
  • Конфигурация

Что НЕЛЬЗЯ обновить через OTA:

  • Нативные модули
  • app.json настройки
  • Разрешения
  • Splash screen
{
"expo": {
"name": "МоёПриложение",
"slug": "my-app",
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/icon.png",
"splash": {
"image": "./assets/splash.png",
"resizeMode": "contain",
"backgroundColor": "#1e1e2e"
},
"ios": {
"supportsTablet": true,
"bundleIdentifier": "com.company.myapp",
"buildNumber": "1"
},
"android": {
"adaptiveIcon": {
"foregroundImage": "./assets/adaptive-icon.png",
"backgroundColor": "#1e1e2e"
},
"package": "com.company.myapp",
"versionCode": 1
}
}
}
  • Иконка приложения (1024x1024)
  • Splash screen
  • Bundle Identifier / Package name
  • Версия и build number
  • Privacy Policy
  • Screenshots для сторов
  • Описание приложения
  • Тестирование на реальных устройствах
  • Performance profiling
  • Error tracking (Sentry, Bugsnag)
  • Analytics (Firebase, Amplitude)