You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何降低Flutter Release版构建内存占用并限制CI/CD机器资源使用?

限制Flutter与CI/CD构建资源的方案

一、Flutter构建阶段的资源限制

Flutter构建依赖Gradle(Android)和Xcode(iOS),需分别针对这两个工具配置资源上限:

1. Android App Bundle构建

修改项目根目录下的 android/gradle.properties 文件,添加Gradle的内存与并行任务限制:

# 限制Gradle守护进程最大内存为4GB(预留2GB给系统及其他进程)
org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=512m
# 限制并行构建任务数量为2(匹配2个CPU核心)
org.gradle.parallel=true
org.gradle.workers.max=2
# 关闭非必要构建缓存,减少内存占用
org.gradle.caching=false

也可通过环境变量临时设置,执行构建时用以下命令:

export ORG_GRADLE_JVMARGS="-Xmx4g" && flutter build appbundle

2. iOS Release构建

通过环境变量限制Xcode的CPU核心使用量,结合系统命令限制内存:

# 限制Xcode仅使用2个CPU核心
export MAXIMUM_NUMBER_OF_CONCURRENT_COMPILATION_TASKS=2
# 限制进程虚拟内存为6GB(单位KB)
ulimit -v 6291456 && flutter build ios --release --no-codesign

二、Fastlane阶段的资源限制

Fastlane本身资源占用较低,重点是确保其调用的Xcode/Gradle已配置资源限制,可在Fastfile中提前设置环境变量:

1. Android上传Play Store配置

lane :upload_play_store do
  # 提前设置Gradle内存限制
  ENV['ORG_GRADLE_JVMARGS'] = '-Xmx4g'
  upload_to_play_store(
    aab: "../build/app/outputs/bundle/Release/release.aab",
    skip_upload_metadata: "true",
    skip_upload_images: "true",
    skip_upload_screenshots: "true",
    track: "internal",
    json_key: "./fastlane/play-store-credentials.json",
  )
end

2. iOS构建并上传TestFlight配置

lane :build_and_upload_testflight do
  # 限制Xcode并发编译任务为2个
  ENV['MAXIMUM_NUMBER_OF_CONCURRENT_COMPILATION_TASKS'] = '2'
  # 限制进程内存为6GB
  sh 'ulimit -v 6291456'
  build_app(
    workspace: "Runner.xcworkspace",
    scheme: "Runner",
    export_method: "app-store",
    include_symbols: "true"
  )
  upload_to_testflight(
    skip_submission:'true',
    api_key_path: "fastlane/app-store-credentials.json",
    skip_waiting_for_build_processing:'true'
  )
end

三、系统级资源限制补充

如果工具级限制仍不足以解决问题,可通过系统命令进一步约束:

  • Linux/macOS:用cpulimit限制进程CPU使用率(2核心对应200%使用率):
cpulimit -l 200 -p $(pgrep -f "flutter build") &
  • macOS:用launchctl设置全局资源上限:
launchctl limit memoryuse 6291456 6291456

额外优化建议

  • 构建前执行flutter clean、rm -rf ~/Library/Developer/Xcode/DerivedData清理缓存,释放内存与磁盘空间
  • 关闭CI机器上无关的后台进程,减少系统资源占用

内容的提问来源于stack exchange,提问作者stk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 19:15:31