如何在GitHub Actions上加速Flutter iOS的构建流程?
Flutter iOS GitHub Actions构建耗时优化方案
以下是针对三个高耗时环节的可行优化方案:
1. 优化subosito/flutter-action@v1环节
- 升级动作版本到
subosito/flutter-action@v2,v1版本已停止维护,依赖拉取逻辑效率更低,v2对缓存适配性更好。 - 配置
actions/cache对Flutter SDK安装目录、Pub依赖全局缓存目录做持久化缓存,避免每次运行都重新拉取SDK和公共依赖,优化后该环节耗时可压缩至10秒以内。
2. 优化flutter build ipa核心构建环节(占总耗时80%+)
- 配置缓存覆盖Xcode编译缓存和CocoaPods依赖:对Xcode的
DerivedData目录、~/Library/Caches/CocoaPods全局缓存目录、项目ios/Pods目录做持久化缓存,避免每次全量重新编译所有依赖库和Flutter引擎,可减少50%以上的构建耗时。 - 充分利用 runner 性能:提前设置Xcode并发编译数匹配 runner CPU核心数,GitHub macOS runner默认3核心,可在构建前执行命令
defaults write com.apple.dt.Xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks 3,避免CPU资源闲置。 - 升级基础环境:将Flutter升级到3.0+稳定版、使用
macos-13及以上版本的运行器,新版本Flutter对iOS构建链路做了大量优化,高版本macOS运行器搭配新版Xcode的编译效率比旧版本提升30%左右。 - 裁剪非必要构建输出:如果是测试环境分发场景,可在导出配置plist中关闭dSYM符号表生成、在Xcode项目配置中关闭已被苹果废弃的bitcode编译选项,可额外减少2-3分钟的构建耗时。
3. 优化actions/upload-artifact@master上传环节
- 升级动作版本到官方最新的
actions/upload-artifact@v4,该版本对传输逻辑做了重写,压缩率和上传速度对比老旧的master版本提升非常明显。 - 裁剪上传内容:仅上传最终导出的ipa文件,无需上传整个build目录,减少待传输文件体积。
- 提前压缩产物:上传前对ipa文件做zip压缩,进一步降低传输大小。
内容的提问来源于stack exchange,提问作者Hayden Young
相关产品推荐
相关产品推荐

