Irbisa · Шпаргалка

Релиз и ревью в сторах

App Store Connect, Play Console, реджекты ревью, phased release, форс-апдейт, политики

Middle-разработчик · 16 вопросов

  1. 01

    Чем отличаются versionCode и versionName и какие правила Google Play применяет к каждому?

    versionCode хранит целое число, по которому Play упорядочивает сборки и решает, что считать обновлением: оно должно расти с каждой загрузкой и никогда не используется повторно.

    // app/build.gradle.ktsandroid {    defaultConfig {        versionCode = 42        // must grow with every upload, never reused        versionName = "8.4.0"   // display only, may repeat    }…
  2. 02

    Какие тестовые треки есть в Google Play и как они соотносятся с TestFlight?

    В Play есть треки internal, closed и open testing плюс production: internal testing доходит до 100 тестировщиков за минуты, а релизы в closed и open проходят ревью как продакшен.

  3. 03

    Новый личный аккаунт разработчика в Play пока не может публиковать в продакшен. Что Google требует сначала?

    Личные аккаунты разработчика, созданные после 13 ноября 2023 года, сначала должны провести закрытое тестирование минимум с 12 тестировщиками, которые остаются подписанными 14 дней подряд, а затем подать заявку на доступ к продакшену в Play Console.

  4. 04

    Что происходит между загрузкой сборки и моментом, когда её можно скачать из Google Play и App Store?

    Загрузка лишь передаёт бинарник в стор: дальше его обрабатывают, проверяют на ревью и выпускают, и на каждом шаге сборка может застрять или получить отказ.

  5. 05

    Чем APK отличается от Android App Bundle и что Play делает с загруженным AAB?

    APK представляет собой устанавливаемый пакет, а AAB служит форматом публикации, который установить нельзя.

    ./gradlew bundleRelease   # app/build/outputs/bundle/release/app-release.aab # What Play does, done locally: split APKs from the bundlebundletool build-apks \  --bundle=app/build/outputs/bundle/release/app-release.aab \  --output=app.apks \…
  6. 06

    Маркетинг хочет сегодня новое описание и скриншоты, а новой сборки нет. Что можно поменять в каждом сторе без неё?

    В Play страница приложения публикуется отдельно от релизов, поэтому новый текст и скриншоты выходят после короткого ревью листинга.

  7. 07

    Какие требования к target API level предъявляет Google Play и как готовиться к новой версии Android?

    Каждый год Play требует, чтобы новые приложения и обновления таргетили свежий API level: с 31 августа 2026 года это API 36 (Android 16).

  8. 08

    Как работают staged rollout в Play и phased release в Apple и что остановка раскатки делает с уже обновившимися пользователями?

    Staged rollout в Play отдаёт релиз проценту пользователей, который вы поднимаете вручную; phased release у Apple растягивает обновление на семь дней по фиксированному графику.

  9. 09

    Как запросить оценку через Play In-App Review API и почему нельзя управлять тем, появится ли диалог?

    Вы заранее запрашиваете ReviewInfo у ReviewManager и вызываете launchReviewFlow в естественной паузе; Play сам решает, показывать ли диалог, по скрытой квоте и никогда не сообщает, поставил ли пользователь оценку.

    class ReviewPrompt(private val activity: Activity) {    private val manager = ReviewManagerFactory.create(activity)    private var reviewInfo: ReviewInfo? = null     // Call early, e.g. when the order screen opens: the request is a round trip to Play.    fun prepare() {…
  10. 10

    Каковы самые частые причины отклонения сборки на ревью в Google Play и App Store и как поймать их до отправки?

    Большинство отказов не про код: ревьюер не может войти, метаданные не совпадают с приложением, разрешение или сбор данных не задекларированы, или цифровые товары продаются в обход биллинга стора.

  11. 11

    Стор отклоняет обновление по правилу, которое, как вы уверены, к вам не относится. Что делать?

    Сначала воспроизведите то, что видел ревьюер, на той самой отправленной сборке и с новым аккаунтом: большинство «неправильных» отказов объясняется тем, что ревьюер не смог добраться до функции.

  12. 12

    Release-сборка показывает пустой список продуктов из queryProductDetailsAsync, хотя продукты есть в Play Console. Чего не хватает?

    Play возвращает данные только по активным продуктам того же applicationId, под которым запущена сборка, и только если сборка с Billing Library загружена в трек; нужен также платёжный профиль.

  13. 13

    Как заставить пользователей обновиться до минимальной версии на Android и что меняется на iOS?

    Храните минимальную поддерживаемую версию на сервере и проверяйте её при запуске; на Android Play In-App Updates API затем может установить обновление через immediate-сценарий.

    class UpdateGate(    private val activity: ComponentActivity,   // create in onCreate, before STARTED    private val minVersionCode: Int,           // from your server, not hardcoded) {    private val manager = AppUpdateManagerFactory.create(activity)    private val launcher = activity.registerForActivityResult(…
  14. 14

    Релиз на 100% падает при запуске у трети пользователей. Что можно сделать в первый час и что должно было существовать заранее?

    Ни один стор не может удалить или откатить сборку, уже установленную на телефоны, поэтому первый час уходит на то, чтобы остановить новый ущерб (серверный переключатель, остановка раскатки), пока хотфикс с большим номером версии проходит ревью.

  15. 15

    Play удалил приложение за нарушение политики, и установки упали до нуля. Как восстанавливаться и что должно было существовать заранее?

    Отклонение, удаление, блокировка и закрытие аккаунта означают разные состояния с разными выходами: удалённое приложение возвращается после исправленного обновления, блокировка требует апелляции и считается страйком, а закрытие аккаунта убирает все его приложения.

  16. 16

    Как сделать так, чтобы дедлайны политик сторов попадали в роадмап за месяцы, а не блокировали релиз?

    Относитесь к каждой политике как к зависимости с фиксированной датой: направьте анонсы в общий ящик, в день публикации превращайте каждый в задачу с владельцем и выпускайте изменение минимум за два релиза до дедлайна.