大规模应用开发过程中,性能管理是重中之重,其中就包括启动速度,交互等多个方面的优化,应用包大小和渲染性能也是很重要的衡量指标。当我们提到性能时,也无外乎运行时间和占用空间这两个话题。
本篇文章,我们主要探讨的就是如何解决应用程序包大小的问题。
应用程序大小
应用的大小是开发者和用户都能够直接感知的指标。作为开发者,我们清楚地知道 APK 文件、App Bundle 或者 IPA 之类的安装包中包含了应用代码、资源文件以及运行时的所有内容,如果体积过大,则对性能影响会造成非常大的影响,不仅会占用更多空间,也可能会无法使用一些特色功能,如 Android instant apps。
默认情况下,为了支持热重载和代码级调试等功能,debug 版本的安装包会天然具有较大体积,性能优化时,可以忽略这种情况。
在 Android Studio 中,打开任意 Flutter 项目,使用 flutter build apk --release
构建安装包之后,点击 Build >> Analyze Apk
,会发现 lib 目录的大小占整个包大小的 95% 以上,并且其中默认编译出来的 APK 包含有 android-arm,android-arm64,android-x64 三种二进制文件。
![305869ee85839e32e47ce12a76f5ce56.png](https://img-blog.csdnimg.cn/img_convert/305869ee85839e32e47ce12a76f5ce56.png)
因此,各大 Android 应用商店的或者 App Store 接收到包之后还会做进一步处理,如根据用户的机型过滤掉一些 native 库、DPI 等。官方也推荐我们使用 flutter build appbundle
构建 Android App Bundle(.aab) 文件,具体请看 https://developer.android.com/platform/technology/app-bundle。
对于不支持自动拆解 App Bundles 的厂商,我们可以直接使用 flutter build apk --split-per-abi
直接编译出各平台下的拆分 APK 包:
/build/ap