SuperAPI AI 工具集

flutter-reducing-app-size

部署与运维

查看项目

更新于 10-16 05:50

技能介绍

用途:测量并优化 Flutter 应用包体积,适用于减小下载体积或满足应用商店包体约束。

核心概念:不要用 debug 构建测量体积,debug 含 VM 开销且缺少 AOT 编译与 tree-shaking;上传包(APK、AAB、IPA)大小不等于用户下载大小,商店会按设备过滤原生库架构与资源密度;Dart AOT 编译器在 profile 和 release 模式自动移除未使用代码;--analyze-size 会生成 -code-size-analysis_.json,记录包、库、类、函数的字节大小。

生成分析文件:确定目标平台后运行带 --analyze-size 的构建命令。Android 用 flutter build apk --analyze-size 或 flutter build appbundle --analyze-size;iOS 用 flutter build ios --analyze-size(生成 .app,仅用于相对内容大小,不用于估算商店下载体积);桌面用 flutter build [windows|macos|linux] --analyze-size。文件位于 build/ 目录。

DevTools 分析:运行 dart devtools,在首页选择 Open app size tool,上传 JSON,用树图或树视图定位大包、库或资源。反馈循环为:找出最大贡献项,判断依赖或资源是否必要,删除、替换或优化,再重新生成 JSON 并用 Diff 标签对比新旧构建。

iOS 下载体积估算:在 pubspec.yaml 配置版本与构建号,运行 flutter build ipa --export-method development 生成 Xcode 归档,在 Xcode 中打开 build/ios/archive/*.xcarchive,点击 Distribute App 选 Development,在 App Thinning 选 All compatible device variants,勾选 Strip Swift symbols,签名导出 IPA,查看 App Thinning Size Report.txt 评估各设备体积。

缩减策略:拆分调试信息,将符号存入单独文件;清理 pubspec.yaml 与 assets/ 中未引用的图片、字体和文件;审查第三方包,若仅用少量资源则考虑替代或自实现;用 pngquant、imageoptim 或转 WebP 压缩 PNG 与 JPEG。

示例命令:flutter build appbundle --analyze-size --target-platform=android-arm64;flutter build apk --obfuscate --split-debug-info=build/app/outputs/symbols。

限制:iOS 的 flutter build ios --analyze-size 不能估算商店下载体积,需用 App Thinning 流程;具体平台支持与工具行为以官方资料为准,资料未提供更多细节。