如何实现Flutter应用一键部署到Play Store 解决Fastlane部署报错
问题背景
我正在开发一款支持用户一键构建Flutter移动应用并部署到Play Store的Web应用。测试Fastlane部署功能时执行指定命令后出现Package not found报错,多次调整配置仍然无法解决。排查后发现该报错来源于规则限制:Fastlane自动部署要求应用首次必须手动上传,包ID在Play Store完成备案后才能进行后续自动更新,无法实现完全的首次自动部署。现需寻找可以实现移动应用从首次上传开始全流程完全自动部署的工具或方案。
报错详情
执行以下命令后触发报错:
:~/data/60e294c76bb64b00207a83bc/android$ fastlane supply --aab ../build/app/outputs/bundle/release/app-release.aab --track beta --rollout 0.5 [✔] 🚀 [17:13:56]: fastlane detected a Gemfile in the current directory [17:13:56]: However, it seems like you didn't use `bundle exec` [17:13:56]: To launch fastlane faster, please use [17:13:56]: [17:13:56]: $ bundle exec fastlane supply --aab ../build/app/outputs/bundle/release/app-release.aab --track beta --rollout 0.5 [17:13:56]: [17:13:56]: Get started using a Gemfile for fastlane https://docs.fastlane.tools/getting-started/ios/setup/#use-a-gemfile +---------------------------------+--------------------------------------------------------+ | Summary for supply 2.187.0 | +---------------------------------+--------------------------------------------------------+ | aab | ../build/app/outputs/bundle/release/app-release.aab | | track | beta | | rollout | 0.5 | | package_name | com.draft.mobile.fosso_mael_elvis.p60e294c76bb64b0020 | | | 7a83bc | | release_status | completed | | json_key | ~/Draft/pc-api-xxxxxxxxxxxx-xxxwwwwyyy.json | | skip_upload_apk | false | | skip_upload_aab | false | | skip_upload_metadata | false | | skip_upload_changelogs | false | | skip_upload_images | false | | skip_upload_screenshots | false | | validate_only | false | | check_superseded_tracks | false | | timeout | 300 | | deactivate_on_promote | true | | ack_bundle_installation_warning | false | +---------------------------------+--------------------------------------------------------+ [!] Google Api Error: Invalid request - Package not found: com.draft.mobile.fosso_mael_elvis.p60e294c76bb64b00207a83bc.
可行解决方案
首先明确:要求首次手动上传并不是Fastlane的限制,而是Google Play Store的平台规则,首次提交应用必须完成包ID备案、必填元信息提交的流程,所有自动化方案都需要覆盖这部分流程的自动化实现,即可完成全链路无手动操作的部署。
- 方案1:改造Fastlane自定义流程
新增自定义Fastlane lane,补充首包提交的前置步骤:- 调用Google Play Developer API的
edits.insert接口创建新应用草稿,完成包ID的初始注册 - 自动填充所有Play Store要求的首次提交必填信息:包括应用名称、描述、分级、隐私政策地址、图标、截图等,提前将这些字段作为配置项传入
- 执行原有的supply命令上传AAB并发布到对应轨道
参考自定义lane示例:
lane :full_deploy do |options| # 先调用API创建应用草稿、提交必填元数据 create_play_store_draft( package_name: options[:package_name], app_name: options[:app_name], description: options[:description], privacy_policy: options[:privacy_policy] ) # 执行原有supply上传逻辑 supply( aab: options[:aab_path], track: options[:track], rollout: options[:rollout] ) end - 调用Google Play Developer API的
- 方案2:使用封装好的CI/CD服务
选用已经预置了Play Store首次提交全流程逻辑的CI/CD工具,这类工具已经将首包备案、元数据提交的逻辑做了封装,只需要提前在配置中传入所有必填的应用信息、开发者账号服务密钥,即可实现从首包到后续迭代的全流程自动部署,不需要额外手动操作后台。 - 方案3:自研平台级自动化脚本
如果是做面向多用户的一键构建部署平台,可以自行基于Google Play Developer API封装全流程脚本:- 提前在用户创建应用阶段收集所有Play Store首次提交要求的必填信息
- 首包构建完成后,自动依次执行应用草稿创建、元数据提交、首包上传、备案申请的流程
- 应用备案通过后自动触发发布到指定轨道、设置灰度比例等操作
该方案完全可控,可适配平台自定义的各类功能需求。
内容的提问来源于stack exchange,提问作者Mael Fosso
相关产品推荐
相关产品推荐

