apple iap-submit: DEVELOPER_REJECTED IAP / subscription / group versions (left by a canceled submission) are submitted as they are, plan says 'add (developer rejected, re-submitted as is)', --new-version only for APPROVED / REJECTED, empty draft reused; fake ASC models cancel and re-add. play build / check: warn before Gradle when defaultConfig does not read -PversionCode / -PversionName, with the exact Groovy / Kotlin line (built with AGP 8.13); android.injected.version.code does not override bundleRelease; post-build versionCode mismatch is a hard stop. play-production-release plan: 'Do you want to restart your review?' dialog, Restart review is never-press. Pitfalls 31-33

This commit is contained in:
CRTkafa 2026-10-12 11:32:05 +08:00
parent 19f22f6335
commit 9e922f5dd5
18 changed files with 399 additions and 26 deletions

View file

@ -81,8 +81,16 @@ when the owner said so for this run). The MCP server offers only `apple_signing_
Flutter, the root for native, a Unity export with `launcher/` + `unityLibrary/`; or `play.build.dir` / `module` /
`flavor`), the task (`:app:bundleRelease`; Flutter: `flutter build appbundle`), the next free versionCode from Play
(or `--version-code N`) and where the key comes from. Then without `--dry`. The AAB lands in
`build/android/<package>-<versionCode>.aab`; storebound reads the versionCode back from the bundle and warns when
the build file ignored the one it passed (read `-PversionCode` there, or `android.injected.version.code`).
`build/android/<package>-<versionCode>.aab`. The app module's `defaultConfig` must read the project properties
storebound passes; `play build` (and `check`) warn before Gradle runs when `versionCode` / `versionName` is a
literal or comes from an env var, with the line to use:
Groovy `versionCode((project.findProperty('versionCode') ?: 1) as Integer)` and
`versionName project.findProperty('versionName') ?: '1.0'`; Kotlin
`versionCode = (project.findProperty("versionCode") as String?)?.toInt() ?: 1` and
`versionName = project.findProperty("versionName") as String? ?: "1.0"` (keep your current values as the
defaults). `android.injected.version.code` is passed too but does NOT override `defaultConfig` for
`bundleRelease` (checked with AGP 8.13); don't count on it. After the build storebound reads the versionCode back
from the bundle; another number than planned is a hard stop (the AAB is not copied).
The Android SDK is found the way Android Studio finds it: `ANDROID_HOME`, `ANDROID_SDK_ROOT`, `sdk.dir` in the
Gradle project's `local.properties`, then `~/Library/Android/sdk` (macOS) / `~/Android/Sdk` (Linux) /
`%LOCALAPPDATA%\Android\Sdk` (Windows), and handed to Gradle through `ANDROID_HOME` / `ANDROID_SDK_ROOT`;