For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /ru/docs/mobile/publishing.md (or send Accept: text/markdown).
Публикация в магазинах приложений
Отличайте работающую сборку от версии, которую пользователи смогут установить.
Подготовьте свою первую заявку в магазин шаг за шагом
Сначала создайте и протестируйте собственную сборку для разработки, используя сборки для мобильных устройств. При отправке в магазин скомпилированное приложение и его список отправляются в Google или Apple на проверку; это не то же самое, что открыть предварительный просмотр Expo Go. Вам нужны собственные учетные записи Expo и соответствующие учетные записи разработчиков магазина, протестированный бэкэнд HTTPS, окончательное имя/значок приложения, снимки экрана, контакты службы поддержки и общедоступная политика конфиденциальности URL.
Откройте apps/mobile/app.json в редакторе и задайте имя приложения, ярлык, ios.bundleIdentifier и android.package для своего продукта перед первой загрузкой. Откройте apps/mobile/eas.json и при необходимости замените идентификаторы приложений группы отправки iOS на свои собственные. Отправленные идентификаторы являются примерами. Прочтите сборки для мобильных устройств, чтобы узнать точные поля, и попросите своего агента по кодированию просмотреть два файла перед сборкой.
Если eas не установлен, запустите npm install --global eas-cli. В корне репозитория используйте приведенную ниже команду входа, завершите аутентификацию в браузере, затем выберите команду сборки для одной платформы в разделе «Сборка», а затем отправьте. Прочтите журналы панели мониторинга сборки; перед попыткой отправки дождитесь успешного получения файла .aab или .ipa. EAS запрашивает привязку проекта и учетные данные для подписи; они принадлежат вашим аккаунтам, а не продавцу комплекта.
После загрузки двоичного файла откройте свое приложение в Play Console или App Store Connect, заполните список и необходимые анкеты, добавьте рабочие инструкции по входу в систему рецензента, а затем отправьте его на рассмотрение там. Загрузка внутреннего черновика не является общедоступным выпуском. Если проверка отклоняет его, откройте точную ссылку на политику в отклонении и исправьте эту проблему перед повторной отправкой.
- Подготовьте собственную сборку и идентификаторы
- Текущие инструкции по отправке в магазин Expo
- Текущие рекомендации Apple по проверке приложений
- Инструкции по выпуску Google Play
corepack pnpm --filter @supastack/mobile exec eas loginНастройте учетные записи один раз
Для отправки в магазин необходимы три учетные записи: бесплатная учетная запись Expo для EAS Build and Submit, регистрация разработчика консоли Google Play и членство в программе разработчиков Apple для iOS. Установите EAS CLI и запустите eas login перед сборкой; Проверка обеих регистраций в магазине может занять несколько дней, поэтому начните их заранее.
Переименуйте идентификаторы приложения перед первой загрузкой — android.package и ios.bundleIdentifier поставляются как com.supastack.app в apps/mobile/app.json.. Google Play блокирует имя пакета при первой загрузке, поэтому неправильный идентификатор означает новую запись приложения, а не переименование.
Позвольте EAS управлять подписанием
apps/mobile/eas.json определяет профили разработки, предварительной версии и промышленной сборки. Рабочий профиль позволяет EAS генерировать и хранить хранилище ключей Android и сертификат распространения iOS в своей инфраструктуре — проверять их позже с помощью eas credentials и не допускать попадания локальных хранилищ ключей в репозиторий.
Для автоматической отправки в Play необходим ключ JSON сервисного аккаунта Google Play, связанный в Play Console → Настройка → API, доступ с разрешением на выпуск. Сохраните его по адресу apps/mobile/secrets/play-store-service-account.json — путь, ожидаемый eas.json, и каталог, игнорируемый git. Первая загрузка нового приложения по-прежнему происходит вручную в Play Console; eas submit заменяет второй выпуск.
Создайте, а затем отправьте
Сборки выполняются на инфраструктуре EAS, поэтому для двоичного файла не требуется установка Android Studio или Xcode. Рабочий профиль создает готовый для магазина файл .aab для Play и .ipa для App Store с номерами версий, управляемыми удаленно. Профиль предварительной версии создает APK для внутреннего распространения для контроля качества физического устройства.
Отправленный профиль отправки предназначен для внутренней версии Play как черновой выпуск — тестировщикам ничего не доходит до тех пор, пока вы не продвинете его в Play Console после прохождения проверки.
corepack pnpm --filter @supastack/mobile build:android
corepack pnpm --filter @supastack/mobile submit:android
corepack pnpm --filter @supastack/mobile build:ios
corepack pnpm --filter @supastack/mobile submit:ios
# Internal-testing APK for a physical device:
corepack pnpm --filter @supastack/mobile build:android:previewЗаполните формы Play Console
Играйте в контрольные ворота как для заявленного контента, так и для двоичного файла: общедоступную политику конфиденциальности URL, форму безопасности данных, анкету для оценки контента, целевую аудиторию и категорию. Ответ Безопасность данных на основе реального поведения приложения — комплект собирает электронную почту учетной записи для аутентификации, сохраняет токены сеанса в безопасном хранилище платформы и обращается только к настроенному вами API; добавьте сверху все, что добавляет ваш продукт.
Для приложения iOS, требующего входа в систему, предоставьте App Review рабочую демо-учетную запись и инструкции в примечаниях к обзору. Прежде чем выбирать варианты входа через социальные сети, ознакомьтесь с действующим правилом Apple для служб входа в систему и его исключениями; требования зависят от фактического процесса входа в приложение. Официальные рекомендации приведены в разделе «Первая подача» выше.
Сначала покупайте ворота за RevenueCat
Если ваше приложение предлагает мобильные покупки, настройте поставляемый поток RevenueCat: установите MOBILE_PURCHASES_PROVIDER=revenuecat и EXPO_PUBLIC_MOBILE_PURCHASES_PROVIDER=revenuecat, затем укажите соответствующий общедоступный ключ iOS или Android SDK. Родное приложение поддерживает покупку и восстановление; после этого доступ обновляется из разрешений на рабочую область, проверенных сервером. Stripe Checkout не используется в мобильном потоке. Держите платный доступ недоступным, если покупки отключены или отсутствует необходимая конфигурация. Проверка настроенных продуктов магазина, покупка, восстановление и обновление прав в сборке разработки EAS с тестовыми учетными записями магазина. Ознакомьтесь с действующим руководством магазина, чтобы узнать требования, применимые к вашему приложению и регионам.
Контрольный список перед подачей
Перед отправкой подтвердите каждый пункт ниже, используя собственное тестовое приложение и учетные записи магазина.
- android.package и ios.bundleIdentifier переименованы в принадлежащий вам идентификатор.
- EXPO_PUBLIC_API_URL в среде сборки указывает на производственный API.
- Политика конфиденциальности размещена на общедоступном сайте URL и указана в списке магазинов.
- Форма безопасности данных соответствует реальной коллекции: адрес электронной почты для аутентификации, трафик API и все, что добавляет ваш продукт.
- Учетные данные рабочего демо-аккаунта в примечаниях к обзору App Store
- Платный доступ скрыт или поддерживается подтвержденным правом RevenueCat.
- Возврат по глубокой ссылке, восстановление сеанса и выход из системы подтверждены на физическом устройстве.
- Скриншоты и список активов подготовлены для каждого магазина.
Восстановление после отказа
Отказы поступают со ссылкой на политику — устраните заявленную причину, а не гадайте о симптоме. Несоответствие безопасности данных обычно означает, что неверна форма, а не приложение. Отказ при необходимости входа в систему обычно означает, что в примечаниях к обзору не было демо-счета. Отправьте повторно с примечаниями к выпуску, в которых четко указано исправление.
Полное пошаговое руководство — команды учетных данных, порядок операций консоли и сценарий отклонения — находится в docs/mobile-store-submission.md в репозитории.
Настройка и конфигурация
Для выпуска нативного приложения нужны аккаунты разработчика Apple и/или Google, идентификаторы приложения, данные подписи и проверка магазина. Production-профиль EAS увеличивает номера сборок для магазина; submit.production отправляет черновой релиз на внутренний трек Google Play. Идентификаторы bundle и схема приложения находятся в apps/mobile/app.config.ts.
Веб-развёртывания и выпуски в магазинах идут с разной скоростью. Сохраняйте совместимость API с самой старой поддерживаемой версией приложения или управляйте новыми возможностями через состояние на сервере.
corepack pnpm --filter @supastack/mobile build
eas build --profile production --platform ios
eas build --profile production --platform android
eas submit --profile production --platform ios
eas submit --profile production --platform androidРабочий процесс внедрения
До включения нативных покупок настройте проект RevenueCat, продукты магазинов и право доступа. Секретный серверный ключ и значение Authorization для webhook должны храниться только в настройках сервера; SDK-ключи iOS и Android являются публичными данными сборки. Отключите доступ sandbox в production.
Подготовьте материалы для магазина — снимки экрана, описание, сведения о конфиденциальности и уведомления о покупках — в материалах выпуска продукта. Покупки и восстановления RevenueCat проверяются по актуальному состоянию подписчика на сервере до того, как приложение показывает доступ.
Проверка и устранение неполадок
Проверьте именно тот артефакт, который отправляете: возврат после входа, восстановление сессии, покупку и восстановление, обновление серверных прав, смену рабочей области, диплинки и работу без сети на физическом устройстве. Успешный локальный экспорт не означает, что сборка готова к магазину.
Запишите номер сборки, трек магазина, статус проверки и окружение API для каждого выпуска. Отклонение проверки — событие выпуска: исправьте метаданные или флаги возможностей, а не меняйте код наугад.
Следующая платформа: вкладка Desktop показывает тот же продукт в оболочке Tauri.