Irbisa · Cheatsheet
Release & Store Review
App Store Connect, Play Console, review rejections, phased release, forced update, policy
What is the difference between
versionCodeandversionName, and what rules does Google Play enforce on each?// app/build.gradle.ktsandroid { defaultConfig { versionCode = 42 // must grow with every upload, never reused versionName = "8.4.0" // display only, may repeat }…Which testing tracks does Google Play offer, and how do they compare to TestFlight?
Your new personal Play developer account cannot publish to production yet. What does Google require first?
What happens between uploading a build and users being able to download it on Google Play and the App Store?
What is the difference between an APK and an Android App Bundle, and what does Play do with the AAB you upload?
./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 \…Marketing wants a new description and screenshots today, but there is no new build. What can you change on each store without one?
What are Google Play's target API level requirements, and how do you prepare for a new Android version?
How do Play's staged rollout and Apple's phased release work, and what does halting do to users who already updated?
How do you ask for a rating with the Play In-App Review API, and why can you not control whether the dialog appears?
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() {…What are the most common reasons a build is rejected by Google Play or App Store review, and how do you catch them before submitting?
The store rejects your update under a rule you are sure does not apply. How do you handle it?
Your release build shows an empty product list from
queryProductDetailsAsyncalthough the products exist in Play Console. What is missing?How do you force users onto a minimum app version on Android, and what changes on iOS?
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(…A release at 100% crashes on launch for a third of users. What can you do in the first hour, and what should have existed before?
Play removed your app for a policy violation and installs dropped to zero. What is the recovery path, and what should have existed before?
How do you make sure store policy deadlines reach your roadmap months ahead instead of blocking a release?