Flutter包体积优化
文章目录
应用程序大小
应用程序大小是所以需要上线的APP所需要关注的指标,对应 Android 开发者来说,引入 Flutter
之后需要关注所带来的体积增长,那体积的增长主要来自以下几个方面:
- Flutter 库
- dart 库
- 应用代码,三方库
- 资源文件
我们可以先看看 Android 项目中引入 Flutter 后文件是怎么分布的,如下图所示:
编译打包之后,可以看到新增了 libflutter.so 和 libapp.so,这两个玩意一个是 Flutter 库,一个是你自身代码以及引入的三方库。
包体积优化
那主要优化的思路有一下几点:
- 去除不需要支持的架构;
- 删除没有使用的资源文件,对图片进行压缩
- 删除没有使用的三方库
- 优化代码
- 混淆
去除不需要支持的架构
这个比较简单,只需要在 gradle 配置中进行配置就行,如下:
defaultConfig {
...
ndk {
abiFilters 'armeabi-v7a', "arm64-v8a"
}
}
删除没有使用的资源文件,对图片进行压缩;删除没有使用的三方库;这两点自行check
代码检查是否有偏大文件
这里主要参考: https://flutter.dev/docs/perf/app-size
在 Flutter 1.22 以及 DevTools 0.9.1 版本后,支持release版本代码大小测量,可以很直观看到主要大小消耗在什么地方。
这个只需要在编译时加上 --analyze-size
标识即可
- flutter build apk –analyze-size
- flutter build appbundle –analyze-size
- flutter build ios –analyze-size
- flutter build linux –analyze-size
- flutter build macos –analyze-size
- flutter build windows –analyze-size
对于 apk 和 appbundle 还可以添加平台架构,如:--target-platform android-arm
通过上述编译,可以得到如下图所示的结果:
该命令主要有两个作用:
- 在编译 Dart 代码时会记录 Dart packages 中代码大小的使用情况。
- 输出应用大小相关的具体细节,并将结果最终保存在 -code-size-analysis_.json 文件中供我们使用 DevTools 做进行分析。
可以通过以下命令利用 DevTools 查看(如已经安装可忽略第一条):
flutter pub global activate devtools;
flutter pub global run devtools --appSizeBase=apk-code-size-analysis_02.json
DevTools 查看如图所示:
对于比较大的文件,可以自行分析该如何进一步优化
Dart混淆
混淆暂时没有加,暂时不推荐,无法预料会出什么问题
可以参考:https://flutter.dev/docs/deployment/obfuscate
主要参考
文件大小测量:https://flutter.dev/docs/perf/app-size
混淆:https://flutter.dev/docs/deployment/obfuscate
android flutter:https://flutter.dev/docs/deployment/android
blog appsize:https://itnext.io/reducing-flutter-app-size-570db9810ebb
blog obfucating:https://medium.com/flutterdevs/obfuscating-the-flutter-app-80a190ed7540
文章作者 Brook
上次更新 2021-05-08