如何减小Flutter APK安装包体积?附体积分析结果
如何减小你的Flutter APK体积
从你提供的flutter build apk --target-platform android-arm64 --analyze-size结果来看,APK总大小49MB,其中lib/目录下的双ABI架构包(arm64-v8a 26MB + armeabi-v7a 18MB)是最大的体积来源,其次是assets资源和依赖包。以下是针对性的优化方案:
1. 只打包目标ABI架构,移除冗余架构包
你指定了--target-platform android-arm64但APK中仍包含armeabi-v7a架构,这直接占用了18MB冗余体积。解决方法:
- 方法一:使用拆分ABI打包命令,生成单独的架构专属APK:
此命令会生成仅包含arm64-v8a的APK,直接减少18MB体积。flutter build apk --target-platform android-arm64 --split-per-abi - 方法二:在
android/app/build.gradle中配置固定ABI:android { splits { abi { enable true reset() include 'arm64-v8a' // 只保留目标架构 universalApk false // 不生成通用APK } } }
2. 优化Dart依赖与代码压缩
从Dart AOT符号分析来看,package:dbus、flutter_spinkit等依赖占用了不少体积,可通过以下方式优化:
- 移除未使用的依赖:检查
pubspec.yaml,删掉项目中实际未用到的包(比如如果dbus没用到就直接移除)。 - 启用代码混淆与调试信息拆分:在release编译时添加混淆参数,减小Dart代码体积:
flutter build apk --target-platform android-arm64 --obfuscate --split-debug-info=build/debug_symbols - 确保R8代码压缩启用:release模式默认开启,但可在
android/app/build.gradle中确认配置:
R8会自动移除未使用的Java/Kotlin代码和资源。buildTypes { release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } }
3. 压缩与优化资源文件
你的assets/和res/目录占用了约3MB+的体积,可从以下方面优化:
- 图片压缩与格式转换:将
res/中的PNG图片(如CG.png、D2.png)用工具压缩,或转成WebP格式(Flutter完全支持WebP,体积比PNG小30%-50%)。 - 移除未使用的资源:检查
assets/中的hrtfs、lua文件夹,如果项目中没用到就直接删除;启用shrinkResources true会自动移除res/中未被引用的资源。 - 按需加载资源:对于非启动必需的assets,使用延迟加载(比如通过
rootBundle.load在需要时再加载),减少初始APK体积。
4. 减少Flutter框架冗余
package:flutter占用了3MB体积,可通过以下方式精简:
- 确保开启Tree Shaking:Flutter release模式默认会Tree Shake未使用的框架代码,不要手动关闭相关配置。
- 替换重依赖组件:如果项目中仅用了
flutter_spinkit的少数动画,可考虑用自定义动画替代,减少依赖体积;同理,若flick_video_player功能可用更轻量的播放器替代,也能进一步压缩。
内容的提问来源于stack exchange,提问作者Borada Sahil
相关产品推荐
相关产品推荐

