如何减小Flutter构建的APK体积?已用--split-per-abi仍达60MB
Flutter 安装包体积过大问题排查与优化方案
一、APK 60MB 体积优化
- 确认构建模式为 Release
必须执行完整的 Release 构建命令:flutter build apk --split-per-abi --release。Debug 包默认包含调试符号、热重载冗余代码,体积会比 Release 包大几倍。 - 启用 R8 代码压缩与资源收缩
在android/app/build.gradle的buildTypes.release块中添加/确认以下配置:
R8 会自动移除未使用的代码和资源,是 Android 端体积优化的核心手段。minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - 压缩资源文件
- 替换图片格式:将 PNG/JPG 转为 WebP,同等画质下体积可减少 25%-50%;
- 删除冗余资源:用 Android Studio 的
Analyze > Inspect Code检查Unused resources,批量删除未使用的图片、布局文件; - 优化 SVG 资源:避免导入大尺寸 SVG,使用
flutter_svg时开启缓存与压缩参数。
- 验证拆分后的 ABI 包体积
执行命令后,build/app/outputs/apk/release目录会生成 armeabi-v7a、arm64-v8a、x86_64 三个独立 APK,单个正常体积应在 20MB 以内。若仍为 60MB,需排查项目中是否包含大体积本地资源(如视频、离线数据库)。
二、iOS 900MB 安装包优化
- 切换到 Release 模式打包
必须通过 Xcode 的Product > Archive进行 Release 打包,Debug 包因包含调试符号、模拟器架构,体积会异常庞大。苹果 App Store 分发时会自动做 App Thinning,用户实际下载体积远小于本地 Archive 体积,但本地体积过大仍需优化。 - 清理缓存与大文件
- 清理 Xcode 缓存:执行
rm -rf ~/Library/Developer/Xcode/DerivedData后重新构建; - 定位大文件:在 Xcode Organizer 中选中 Archive,右键「显示包内容」,查看
Products/Applications/YourApp.app中的大文件(如未压缩视频、高清素材)并删除。
- 清理 Xcode 缓存:执行
- 启用 Bitcode
在 Xcode 项目 Build Settings 中设置Enable Bitcode为 Yes,苹果会基于 Bitcode 对二进制文件做二次优化,进一步减少用户下载体积。 - 排查依赖与 SDK 版本
- 使用
flutter pub deps --unused检测并移除未使用的依赖; - 切换到 Flutter 稳定版 SDK,避免 Dev 版潜在的体积冗余问题;
- 替换体积过大的第三方库,比如用轻量状态管理库替代包含大量冗余代码的框架。
- 使用
三、通用排查手段
- 执行
flutter build apk --analyze和flutter build ios --analyze生成体积分析报告,定位资源、原生库、Dart 代码中占比最大的部分; - 新建空白 Flutter 项目,执行相同打包命令对比体积:若空白项目体积正常,说明原项目存在特殊资源/依赖;若空白项目也异常,尝试重新安装 Flutter SDK 或重置本地开发环境。
内容的提问来源于stack exchange,提问作者Hanan Saleem
相关产品推荐
相关产品推荐

