Community编程与开发github.com

ChandraChaan/release-check

在 Flutter 项目构建 Google Play 或 App Store 版本前运行发布预检。当用户询问“我的应用准备好发布了吗”、“发布前检查”、“发布清单”、“为什么我的应用被拒绝了”,或在运行 flutter build appbundle / ipa 之前使用。

release-check 是什么?

这个技能帮助 Flutter 开发者在向 Google Play 或 App Store 提交审核前,自动执行一套全面的发布预检流程,从而大幅降低被拒风险。它通过运行一个确定性脚本,输出版本号、Changelog、静态分析、测试、调试残留、Android 和 iOS 等关键维度的检查结果,并以 OK / WARN / FAIL 进行分类。对于每个失败或警告项,技能会建议打开具体文件进行确认并执行针对性修复(例如修正构建号、替换调试签名、添加隐私清单等)。此外,脚本无法检查的事项(如 target SDK、应用图标、权限列表、商店素材和账户删除功能)也会被列出,并引导用户查阅相关参考资料。最后,技能生成一份简洁报告,包含就绪状态、必须修复项、建议修复项和下一步命令。支持在 Claude Code、Cursor 等 AI 代理环境中使用。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ChandraChaan/flutter-release-kit/tree/HEAD/skills/release-check

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

发布检查

你正在帮助一位 Flutter 开发者交付一个不会被 Google Play 或 App Store 审核拒绝的发布版本。请具体说明:对于每个问题,给出文件名和确切的更改。

步骤 1:运行确定性预检

从 Flutter 项目根目录运行:

bash "${CLAUDE_PLUGIN_ROOT}/scripts/preflight.sh" $ARGUMENTS

脚本输出按部分(版本号、Changelog、静态分析、测试、调试残留、Android、iOS)分组的 OK / WARN / FAIL 行,并在出现任何 FAIL 时以退出码 1 退出。如果运行测试可能需要一分钟。如果用户明显处于开发中,只想快速查看,请传递 --skip-tests。

步骤 2:调查每个 FAIL 和 WARN

对于每一项,打开脚本命名的文件,确认发现的问题后再报告。常见修复:

发现修复
版本缺少构建号在 pubspec.yaml 中将 version: 1.2.0 改为 version: 1.2.0+1。
此版本的标签已存在运行 bump-version 技能。
com.example applicationId 或 bundle id使用 flutter pub run change_app_package_name:main com.yourco.app 或编辑 android/app/build.gradle(.kts) 以及 ios/Runner.xcodeproj/project.pbxproj 中的三个 PRODUCT_BUNDLE_IDENTIFIER 条目。
使用调试密钥签名发布版本添加 key.properties 加载和 release signingConfig;参见 references/android-signing.md。
key.properties 或 *.jks 被 git 跟踪添加到 .gitignore,然后执行 git rm --cached <file>;如果仓库是公开的,请轮换密钥库密码。
没有 PrivacyInfo.xcprivacy创建 ios/Runner/PrivacyInfo.xcprivacy;模板在 references/privacy-manifest.md。
debuggable=true、明文流量、localhost URL在发布前移除。
分析器错误 / 测试失败修复它们;不要建议跳过。

步骤 3:检查脚本无法检测的事项

查看项目并考虑:

  • Target SDK:Google Play 要求新应用和更新针对较新的 Android API 级别(Play 的滚动要求大致是前一年的发布版本)。检查 android/app/build.gradle(.kts) 或 Flutter 默认值中的 targetSdk。
  • 应用图标和启动画面:默认的 Flutter 图标会导致审核被拒,也会被用户立即卸载。检查 flutter_launcher_icons / flutter_native_splash 配置或 mipmap 文件夹。
  • 权限:如果 Manifest 中除了 INTERNET 之外还有其他权限,建议运行 permission-audit 技能。
  • 商店素材:功能图 1024x500(Play)、每个所需设备类别的截图、隐私政策 URL(如果应用收集任何数据或请求敏感权限则必需)。
  • 账户删除:如果应用支持创建账户,两个商店都要求提供应用内账户删除路径。
  • 审核员登录:如果有登录界面,提醒用户在审核备注中提供演示账户。

阅读 references/store-rejections.md 获取完整的常见拒绝原因及其修复列表,当用户询问为何被拒或需要更深入审查时使用。

步骤 4:报告

返回一份简短报告:

  1. 判定:READY / NOT READY。
  2. 必须修复(FAIL 项,每项包含文件和确切更改)。
  3. 建议修复(对此应用重要的 WARN 项)。
  4. 下一步命令:通常是 flutter build appbundle --release 和 flutter build ipa --release,如果版本已发布,则在其前加上 bump-version 和 changelog。

保持精简。除非用户要求完整输出,否则不要重复 OK 行。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相关技能