用途
该技能用于把已签名的 Android App Bundle(.aab)上传到 Google Play,并在内部测试、封闭测试、开放测试和生产轨道之间移动与推广发布。它同时覆盖服务账号认证、上传路径选择、轨道与分阶段发布、映射文件与原生调试符号上传,以及失败排查。
主要能力
- 确认产物是已签名的 .aab 且发布可构建,拒绝上传未签名或调试签名的 bundle。
- 设置并验证服务账号认证,使用 Google Play Android Developer API 的 OAuth 范围
https://www.googleapis.com/auth/androidpublisher。 - 提供三种上传路径:fastlane supply、Publishing API v3 直连、r0adkll/upload-google-play GitHub Action。三者都基于同一事务模型:插入 edit、修改、提交 edit。
- 支持轨道选择与推广:内部测试(internal)、封闭测试(alpha,也支持命名封闭轨道)、开放测试(beta)、生产(production)。推广是把已有 versionCode 移到另一轨道,不重新上传二进制。
- 支持分阶段发布:
status: "inProgress"配合userFraction(0 到 1 之间的 double,0.1 表示 10%);用status: "halted"暂停,再次设为 inProgress 并给 fraction 恢复,用status: "completed"完成。 - 上传 R8/ProGuard 映射与原生调试符号,使用 deobfuscationFiles 接口,类型分别为 proguard 和 nativeCode,传输上限 1 677 721 600 字节。
- 提供故障排查表,覆盖签名错误、versionCode 冲突、草稿应用限制、轨道不存在、401/403 认证失败、自动送审限制、edit 过期等。
使用方式
按顺序执行:先确认产物为已签名 .aab;再用 fastlane run validate_play_store_json_key json_key:fastlane/play-store-key.json 验证服务账号密钥;然后选择一种上传路径并保持一致;接着选择轨道、发布状态和 rollout 比例;上传映射与原生符号;提交 edit(提交成功前不会上线);最后验证发布落在目标轨道。任何失败应先按 troubleshooting 诊断,不要盲目重试。发布到公开轨道前,应先运行 play-store-listing 技能。
适用场景
适用于需要自动化 Android 应用在 Google Play 上发布、推广、分阶段 rollout 的团队,尤其是已有 fastlane、使用 GitHub Actions CI,或需要直接调用 Publishing API v3 的场景。
限制与注意事项
- 新应用(2021 年 8 月起)和 TV 应用(2023 年 6 月起)必须使用 AAB,且必须启用 Play App Signing;不要为新应用建议 APK 上传路径。
- 用 jarsigner 签名 .aab,apksigner 仅用于 .apk。
- 单个安装的总压缩下载上限为 4 GB,可用
bundletool get-size total --apks=app.apks检查。 - 不要每天多次发布 alpha/beta 更新,生产更少。
- 永远不要把服务账号 JSON 密钥内容打印到记录或 CI 日志中,应存为 CI secret 并加入 .gitignore。
versionCodes必须包含要保留的旧版本号,否则会下架旧版本。inAppUpdatePriority是 0–5 的整数(5 最高,默认 0),发布开始后无法更新,必须在首次写入时设置。countryTargeting仅允许在生产轨道的 inProgress 发布中设置。- 服务账号授权需要几分钟传播,新账号可能先返回 401 或 403。
- 每次上传后应报告 editId、versionCode、轨道和状态。
暂未提供
该技能未提供收费、价格、平台支持范围或效果保证等信息。