Как происходит публикация приложения в App Store и Google Play?

Публикация приложения в App Store (iOS) и Google Play (Android) — это процесс, который требует подготовки, регистрации, сборки, тестирования и загрузки приложения в соответствующие магазины. В React Native проекте можно использовать как bare workflow, так и Expo для упрощения процесса. Ниже подробно описаны этапы публикации для обеих платформ.

Подготовка перед публикацией

  1. **Завершение разработки
    **

    • Протестируй всё в release-режиме

    • Удали ненужные логи, дебаг-инструменты

    • Убедись в отсутствии console.log, alert, debugger

  2. **Создание иконки и splash screen
    **

    • Используй react-native-splash-screen или expo-splash-screen

    • Иконка: 1024×1024 без прозрачности

    • Splash: 1242×2436 (или генерация через App Icon Generator)

  3. **Обнови app.json или AndroidManifest.xml и Info.plist
    **

    • Название приложения

    • Версия: versionCode, versionName (Android) и CFBundleShortVersionString (iOS)

    • Разрешения (permissions)

    • Bundle ID (например, com.example.myapp)

Регистрация разработчика

Google Play

  • Создать аккаунт Google Play Console: https://play.google.com/console
  • Единоразовая плата: **$25
    **
  • Подтвердить информацию об организации или физическом лице

App Store (Apple Developer)

  • Создать Apple ID: https://developer.apple.com
  • Зарегистрироваться как разработчик: $99/год

  • Выбрать тип аккаунта: индивидуальный или компания

  • Настроить сертификаты и профили в **Apple Developer Center
    **

Подготовка сборок

Android (Google Play)

  1. **Создание подписи (keystore)
    **
keytool -genkeypair -v -keystore my-key.keystore -alias my-key-alias \\
\-keyalg RSA -keysize 2048 -validity 10000

Сохрани keystore, пароль и alias.

  1. **Настройка android/gradle.properties
    **
MYAPP_UPLOAD_STORE_FILE=my-key.keystore
MYAPP_UPLOAD_KEY_ALIAS=my-key-alias
MYAPP_UPLOAD_STORE_PASSWORD=\*\*\*\*\*
MYAPP_UPLOAD_KEY_PASSWORD=\*\*\*\*\*
  1. **Сборка APK/AAB
    **
cd android
./gradlew bundleRelease # для AAB (предпочтительно)
./gradlew assembleRelease # для APK

AAB рекомендуется, потому что Google Play оптимизирует пакет под устройство.

iOS (App Store)

  1. **Настройка Xcode (для bare React Native)
    **

  2. Открой ios/MyApp.xcworkspace в Xcode

  3. Установи Bundle Identifier, Version, Build

  4. Убедись, что подключены:

    • Apple Developer Team

    • Provisioning Profile (автоматический)

    • Подпись (Signing Certificate)

  5. **Сборка
    **

npx react-native run-ios --configuration Release

Или из Xcode: Product → Archive

  1. **Отправка в App Store
    **

  2. Через Xcode: Organizer → Distribute App

  3. Или через Transporter (macOS app)

Использование Expo

Expo значительно упрощает процесс публикации.

  1. **Сборка приложения
    **
npx expo export
npx eas build -p android # Android AAB
npx eas build -p ios # iOS Archive
  1. **Подключение аккаунтов
    **
npx eas login
npx eas build:configure
  1. **После сборки
    **

  2. Файлы доступны в Expo Dashboard

  3. Их можно загрузить вручную или автоматически через eas submit

npx eas submit -p android --latest
npx eas submit -p ios --latest

Загрузка в магазин

Google Play

  1. **В Google Play Console:
    **

    • Создай новое приложение

    • Заполни: название, описание, скриншоты (7” и 10”), иконку, политику конфиденциальности, категории

    • Загрузи AAB-файл

    • Заполни контент-рейтинг и декларации (например, для сбора данных)

    • Создай релиз: выбери "production", укажи версию, описание изменений

    • Отправь на проверку (занимает от 1 до 7 дней)

  2. **Обязательные ресурсы:
    **

    • Минимум 2 скриншота для каждого типа устройства (телефон, планшет)

    • Иконка 512×512

    • Feature graphic 1024×500

App Store

  1. **В App Store Connect:
    **

    • Создай новое приложение: укажи Bundle ID, платформу, язык

    • Заполни метаданные: описание, что нового, ключевые слова, URL политики конфиденциальности

    • Добавь скриншоты (разные для iPhone 6.7", 6.1", iPad и т.д.)

    • Подгрузи сборку через Xcode/Transporter

    • Назначь сборку для релиза

    • Ответь на вопросы (использует ли приложение криптографию, собирает ли данные и т.д.)

    • Отправь на ревью

  2. **Проверка может занять от 1 до 5 рабочих дней
    **

    • В случае отказа Apple присылает объяснение

    • После одобрения приложение появится в App Store

Дополнительные требования и рекомендации

  • Privacy Policy: Обязательно для обоих магазинов (хостинг на сайте, GitHub или Notion)

  • Push-уведомления: Необходимо указать в разрешениях и запросить у пользователя

  • App Tracking Transparency (ATT): Для iOS, если используется аналитика/реклама

  • Google Play Data Safety Section: Подробное описание, какие данные собираются и как используются

  • Crashlytics, Sentry, Analytics: Интеграция возможна до публикации

CI/CD автоматизация (опционально)

Можно использовать CI/CD-сервисы:

  • Fastlane — сборка, подпись, публикация, скриншоты

  • GitHub Actions, Bitrise, App Center — автоматизация всего процесса

  • Expo EAS — удобная альтернатива Fastlane, особенно при использовании Managed Workflow

Обновления приложения

Каждое обновление требует:

  • Увеличения версии: versionCode (Android), buildNumber (iOS)

  • Повторной загрузки файла AAB / Archive

  • Обновления описания изменений

  • Повторной модерации в магазине

Процесс публикации в App Store и Google Play требует внимательности и соблюдения всех технических и юридических требований. React Native и Expo предоставляют гибкие пути для реализации, а с практикой он становится предсказуемым и автоматизируемым.