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

Flutter vector_graphics_compiler转换器在GitLab CI执行flutter test时静默OOM/超时

针对Flutter CI中vector_graphics资源编译OOM问题的解决方案

1. 让flutter test完全跳过资源转换器步骤

由于你的测试无需实际渲染SVG,可在CI环境中临时修改pubspec.yaml,移除vector_graphics的转换器配置,彻底跳过预编译流程:

CI脚本实现方式

在GitLab CI的作业脚本中添加以下命令:

# 注释掉pubspec里的vector_graphics转换器配置
sed -i '/transformers:/,/package: vector_graphics_compiler/s/^/#/' pubspec.yaml
# 执行测试
flutter test

该sed命令会精准注释掉指定的transformers代码块,Flutter资源打包器将不再触发SVG转vec的编译流程,从根源避免内存占用问题。若你的pubspec配置格式有差异,可调整sed的匹配规则确保只处理目标配置块。

2. 限制资源编译的并发数(保留转换器场景)

若必须保留资源转换器,可通过环境变量限制编译的并发线程数,降低内存峰值:

CI环境变量配置

在CI作业中先设置环境变量,再执行测试:

# 设置单线程编译SVG
export VECTOR_GRAPHICS_COMPILER_CONCURRENCY=1
# 执行测试
flutter test

VECTOR_GRAPHICS_COMPILER_CONCURRENCY是vector_graphics官方支持的环境变量,设置为1即可让转换器顺序处理每个SVG文件,大幅降低内存占用,避免OOM崩溃。

额外CI优化建议

  • 启用GitLab CI缓存,缓存.dart_tool/、build/目录,后续作业可复用已编译的vec资源,减少重复编译的耗时与内存消耗;
  • 若runner内存仍紧张,可尝试添加--dart-define=FLUTTER_BUILD_MODE=debug参数执行测试,进一步降低内存占用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.02 07:03:11