Flutter项目包大小分析及优化

Flutter项目包大小分析及优化,第1张

一、分析包大小

1、全平台包(胖包)大小。-包含所有平台、语言、分辨率资源
使用 flutter build apk 或 flutter build ios ,构建出发布包,该包可以大概评估出用户要下载的包大小。通常如果使用该包发布的话,下载大小和包大小基本相同。ios差别会大点,app bundle也会有较大差异。
安卓可以使用Android Size Analyzer分析包大小,及各个部分大小和比例,如lib、assets、res、dex等

2、估算包大小— android

Google Play可以使用构建App Bundle发布应用,会将aab包处理成不同abi、语言、分辨率等包,这样根据用户设备信息下载不同的资源包。

(a)在play store直接查看包大小
可以将aab上传到Google Play Console后,在应用大小部分可以看到用户最终下载包的大小。

(b)bundletool分析aab大小
bundletool介绍

©Flutter 项目大小拆分

命令行:flutter build apk --analyze-size --target-platform=[android-arm64|android-arm|android-x64]
需要指定一个ABI,
分析app bundle:flutter build appbundle --analyze-size --target-platform=[android-arm64|android-arm|android-x64]

flutter build [appbundle|apk|ios] --analyze-size --target-platform=[android-arm64|android-arm|android-x64]`

这种构建模式和标准的发行构建相比,有以下两方面的区别:
(1)该工具编译 Dart 时,记录了 Dart 包的代码大小使用情况。
(2)该工具在终端上展示了大小拆分的摘要信息,并在 DevTools 中生成了一个 -code-size-analysis_.json 文件,用于进行更详细的分析。

执行命令后,分析结果如下:

运行命令后,也会生成一个*-code-size-analysis_*.json文件,运行以下命令,就可以DevTool中比对分析文件:

flutter pub global run devtools --appSizeBase=apk-code-size-analysis_04.json

根据分析,可以将分析资源的使用情况(lib、assets、res、dex)等

3、估算包大小---- IOS

(a)app store直接查看包下载时的大小

(b)Xcode打包分析

(1)选择 Product > Archive 生成一个构建归档。
(2)在 Xcode Organizer 窗口的侧栏,选择你的 iOS 应用,然后选择你刚刚生成的构建归档。
(3)点击 Distribute App。
(4)选择一种发布方式。如果你不打算发布该应用,Development 模式是最简单的。
(5)在 App Thinning 中,选择「all compatible device variants」。
(6)选择 Rebuild from Bitcode(如果你的项目启用了 bitcode)。
(7)选择 Strip Swift symbols。

签名并导出 IPA 包。导出目录中有一个「App Thinning Size Report.txt」文件,其中记录了在不同设备和 iOS 版本上预估的应用程序大小的详细信息

二 包大小优化 1、删除无用资源

(a)删除无用的图片资源。
Flutter项目目前没找到合适的工具,可采用改文档中的方法处理。
Flutter中无用图片的检测和清理

(b)无用代码及语言资源的清除
可以使用dart_code_metrics plugin进行分析检查,然后手动删除。

(c)检查删除字体、三方sdk等

(d)对于安卓胖包,可以减少abi,或者动态下载abi的方式见效包体积

2、尽量减少从库中引入的资源 3、对图片资源进行压缩

tinypng.com工具

4、开发时,尽量选择大小合适的三方资源(package\plugin\sdk…) 5、部分功能采用动态下发的方式加载使用。

Google Play Core

6、开启压缩混淆

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/990809.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存