Greenlight preflight完全指南:一条命令并行扫描iOS+Android,上架前合规检查全覆盖 Greenlight preflight完全指南一条命令并行扫描iOSAndroid上架前合规检查全覆盖【免费下载链接】greenlightPre-submission compliance scanner for the Apple App Store and Google Play. Scans code, privacy manifests, Android manifests, and IPA/APK/AAB binaries against the review guidelines. Offline, no account.项目地址: https://gitcode.com/gh_mirrors/greenlight2/greenlightApp Store 和 Google Play 的审核越来越严一次被拒就可能错过整个发布窗口。Greenlight preflight是一款面向移动开发者的上架前合规扫描器一条命令即可并行扫描 iOS 与 Android 项目——源码、隐私清单、AndroidManifest、IPA/APK/AAB 二进制全部覆盖并逐条对照苹果《审核指南》与 Google Play《开发者项目政策》输出带出处的检查结果。全程离线运行、零上传、无需任何开发者账号中型项目的完整扫描仅需毫秒级时间。什么是 Greenlight preflightGreenlight 的核心理念是提交之前就知道结果Know before you submit。它读取你的应用源码、隐私清单、Gradle 构建文件、IP 二进制、元数据把每一条发现都关联到具体的政策条款而不是给你一堆疑似问题。几个新手最关心的事实特点说明⚡ 速度纯静态扫描中型项目完整 preflight 在单毫秒级完成 离线不上传任何代码不需要 App Store Connect 或 Google Console 账号 有据可查每条发现都引用政策条款如 §5.1.1或 Play 政策页 内置规则库内置苹果《审核指南》数据库可直接检索见 guidelines.json 免费开源MIT 协议README.md 有完整说明快速安装 Greenlight三种方式任选Greenlight 用 Go 编写要求 Go 1.24安装只需一步# 方式一HomebrewmacOS 推荐 brew install revylai/tap/greenlight # 方式二Go 直接安装 go install github.com/RevylAI/greenlight/cmd/greenlightlatest # 方式三从源码构建 git clone https://gitcode.com/gh_mirrors/greenlight2/greenlight cd greenlight make build # 产物在 build/greenlight源码构建的入口在 Makefile 中定义交叉编译各平台二进制只需执行make release。一条命令开始扫描preflight 基本用法preflight 的设计目标就是零心智负担——不需要指定扫什么它会自动识别项目类型并跑完所有适用检查# 扫描当前目录最常用 greenlight preflight . # 指定项目路径附带 IPA 做二进制分析 greenlight preflight ./my-app --ipa build.ipa # 输出 JSON方便接入 CI greenlight preflight . --format json常用参数速查完整定义见 preflight.go参数作用--ipa 路径附带 iOS 构建产物追加二进制检查--apk / --aab 路径附带 Android 构建产物读取合并后的 Manifest--format terminal / json / sarif输出格式SARIF 可接入代码扫描平台--output 文件报告写入文件而非终端--exit-code发现 CRITICAL/HIGH 时返回非零退出码CI 关卡--verify在静态检查后追加真机运行时验证需 Revyl 免费账号并行扫描原理五大扫描器如何覆盖 iOS Android五大扫描器一览preflight会同时启动项目中所有适用的扫描器结果合并成一份报告统一的数据结构定义在 runner.go扫描器检查内容metadataapp.json / Info.plist名称、版本、Bundle ID 格式、图标、隐私政策 URL、用途字符串codescan覆盖 Swift、Objective-C、React Native、Expo 的 24 条规则、约 60 个模式私有 API、硬编码密钥、外部支付、ATT 缺失等规则见 rules.goprivacyPrivacyInfo.xcprivacy 完整性、Required Reason API 比对、追踪 SDK 与 ATT 交叉检查scanner.goplayscanGoogle Play 政策Target API 截止期限、受限权限、前台服务类型、Play Billing 版本仅 Android 项目ipa二进制检查Info.plist 键、启动故事板、图标尺寸、200MB 蜂窝下载限制、内嵌框架隐私清单inspect.go平台自动检测跨平台仓库一次跑完这是新手最容易困惑的地方preflight 如何知道该扫什么答案在 platform.go 的DetectPlatforms中——它会遍历项目目录寻找特征文件iOS 信号.xcodeproj/.xcworkspace、Info.plist、Podfile、Swift 源文件或 Expo/React Native 的app.json等配置文件Android 信号AndroidManifest.xml或任意 Gradle 文件检测逻辑见 scanner.go由此产生的行为非常符合直觉纯 Android 仓库不会收到缺少 PrivacyInfo.xcprivacy这类无意义的 iOS 告警纯 iOS 仓库跳过 playscan跨平台仓库如 Expo/React Native 项目✅ 一次 preflight 同时对照App Store 和 Google Play两套规则检查这正是一条命令并行扫描 iOSAndroid的含义真正的并行而非顺序执行打开 runner.go 可以看到每个扫描器都在独立的 goroutine 中运行通过sync.WaitGroup等待全部完成后合并结果最后还有一步去重dedup避免多个扫描器重复报告同一问题。任何单个扫描器崩溃都不会让整次扫描失败——它会以一条 WARN 记录Scanner did not complete保证不完整的扫描不会被误报为全部通过。读懂扫描报告四级严重度与最终结论所有发现按四级严重度分组输出定义见 runner.go级别含义对 CI 的影响 CRITICAL几乎必然被拒或安装失败提交前必须修复拦截 HIGH涉及公开截止期限、强制声明或运行时必挂的检查拦截 WARN可能引起审核员注意或收到补件询问不拦截⚪ INFO最佳实践建议不拦截每条报告都包含级别徽章、政策条款、标题、文件位置和行号、问题说明以及绿色的Fix修复建议——新手可以直接照着改。扫描结束时的页脚会给出三选一结论GREENLIT无 CRITICAL 问题可以放心提交NEEDS REVIEW存在 HIGH 风险项很可能被拒NOT READY存在 CRITICAL 问题必须先修复接入 CI--exit-code 把合规变成流水线关卡上架合规检查不应该只发生在提交前夜。--exit-code让 Greenlight 成为 CI 中的一道硬关卡——存在 CRITICAL 或 HIGH 发现或某个扫描器中途崩溃时返回非零退出码# 有 CRITICAL/HIGH 时失败直接卡住流水线 greenlight preflight . --exit-code在 GitHub Actions 等 CI 系统中一行即可接入- name: App Store Play compliance run: greenlight preflight . --exit-code也可以把 JSON 报告存为 CI 产物或用--format sarif生成 SARIF 文件上传到代码扫描平台让发现直接内联显示在 Pull Request 中。进阶扫描构建产物与运行时验证源码扫描的盲区用构建产物补全源码扫描读的是仓库里的AndroidManifest.xml合并前的版本而第三方库通过自身 Manifest 贡献的权限只有构建合并后才可见。把构建产物一起交给 preflight 即可补上这个缺口greenlight preflight . --aab app-release.aab此时 playscan 会额外读取合并后的 Manifest和原生库检查 16 KB 页面对齐Android 15 强制要求、32 位 ABI 必须配对 64 位等且用纯 Go 解码 APK/AAB不需要 Android SDK、aapt2 或 bundletool。静态扫描到不了的地方--verify 运行时验证静态扫描只能证明某个功能存在于源码中无法证明它真的能跑——比如一个指向空实现的删除账号按钮codescan 会放行但 App Store 真机点按后无响应就会以 §5.1.1(v) 拒绝。加一个--verify参数preflight 就会在静态检查完成后把账号删除、恢复购买、Sign in with Apple 这三条流程交给云真机实际跑一遍greenlight preflight . --verify --build-name My App \ --var emailqaacme.com --var passwordsecret --exit-code这一层需要免费的 Revyl 账号并运行revylCLI是 preflight 中唯一的非离线部分先用greenlight verify . --dry-run可以免费离线预览它生成的测试。常见问题FAQQpreflight 会上传我的代码吗不会。除--verify运行时验证外所有检查完全在本地离线完成零网络传输。Q我的项目只上了一个商店会不会收到另一个商店的误报不会。平台自动检测platform.go会确保纯 Android 仓库不会被要求补 Apple 隐私清单反之亦然跨平台仓库则双商店全查。Q能否调整规则或忽略某些告警可以。在项目根目录放一个.greenlight.yml即可调整规则严重度、关闭特定规则或忽略目录/文件格式见 README.md 的 Configuration 章节也可以在代码行上用// greenlight:ignore 规则名精确静默单行。Q扫描速度有多快静态检查不执行你的应用只是把文本与规则匹配中型项目完整 preflight 在毫秒级完成完全可以放进每次提交的 CI。Q如何查看内置的政策规则greenlight guidelines list # 列出所有章节 greenlight guidelines show 2.1 # 查看单条指南 greenlight guidelines search privacy # 全文检索小结Greenlight preflight 把上架前合规检查压缩成了一条命令自动识别平台、并行运行五大扫描器、同时覆盖 App Store 与 Google Play报告里每条问题都带政策出处和修复建议再用--exit-code接入 CI 让合规成为长期习惯。对于要在双商店上架的开发者它值得成为提交前的肌肉记忆。【免费下载链接】greenlightPre-submission compliance scanner for the Apple App Store and Google Play. Scans code, privacy manifests, Android manifests, and IPA/APK/AAB binaries against the review guidelines. Offline, no account.项目地址: https://gitcode.com/gh_mirrors/greenlight2/greenlight创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考