用途:约束 Flutter 应用从绿色 CI 到可上架产物的发布路径,强调已发布构建的部分操作不可逆,仅在开发者明确要求发布时才执行构建、签名、上传与打标签;读取与执行配置规则始终在范围内。
主要能力与规则:pubspec.yaml 的 version: x.y.z+N 是唯一版本来源,x.y.z 对应 versionName/CFBundleShortVersionString,N 对应 versionCode/CFBundleVersion,只可用 --build-name/--build-number 按构建覆盖,不得在 build.gradle 或 Info.plist 硬编码。构建号只增不减,已发布的号不可再用;失败上传也消耗号,应递增而非重试。仓库中不得出现签名材料,keystore/.jks/.p12、.p8、Play 服务账号 JSON、android/key.properties 均须 gitignore 并从密钥存储注入。需启用 Play App Signing 并分离上传密钥。上传构建必须使用 --obfuscate --split-debug-info=<dir>,符号目录按版本构建号区分并存于机器外。必须在真机安装确切产物验证,并断言合并后清单的权限集合、核对 Data Safety/营养标签/PrivacyInfo.xcprivacy、禁止绝对隐私声明、确保 release 中不可达调试入口、记录体积与冷启动指标、分阶段发布并设定停止标准、单一提交打标签。
使用方式:任何发布构建前运行 scripts/check-release-hygiene.sh,上传前对 IPA 运行 scripts/check-ipa-slices.sh;按有序发布仪式执行,构建命令如 flutter build appbundle --release --obfuscate --split-debug-info=build/symbols/1.4.0+42,符号化用 flutter symbolize -i crash.txt -d build/symbols/1.4.0+42/app.android-arm64.symbols。平台细节见 references/android-play.md、references/ios-app-store.md、references/app-store-connect-submission.md、references/privacy-permissions-and-claims.md。
适用场景与限制:适用于 Flutter 移动应用的正式发布与商店上架,涉及多 flavor 时每个 flavor 独立符号目录,非商店 flavor 不得可上传。商店侧账号持有人专属门禁、价格、可用性、内购状态与截图需在提交前回读,首次发布须同时提交应用版本与首个内购。具体价格与效果资料暂未提供。