flutter 安装包体积过大,包体积优化策略

参考文章
简单知识回顾
  • release包体积较debug包小很多
  • android 打包命令: flutter build apk
  • ios 打包命令: flutter build ios --release

android和iOS通用方案

  1. 删:移除无用代码和无用资源
  2. 缩:压缩资源图片(熊猫压缩)或者多使用svg格式的图片
  3. 挪:服务端下发插件或资源

android方案

  1. so优化:Flutter打包Apk会包含三种CPU架构信息以适配不同架构的设备(x86_64,arm64-v8a,armeabi-v7a),目前大部分手机都是armeabi-v7a这个架构,所以我们可以分架构分别打包,包体减小较明显,但是需要舍弃小部分机型

打包命令: flutter build apk --target-platform android-arm,android-arm64,android-x64 --split-per-abi

  • 首先 flutter build apk 表示当前构建 release 包;
  • 后面 android-arm,android-arm64,android-x64则是指定生成对应架构的release包;
  • 最后的 --split-per-abi则表示告知需要按照我们指定的类型分别打包,如果移除则直接构建包含所有 CPU 架构的 Apk 包。
  1. 混淆:可以增加逆向难度还有减少Apk大小

混淆打包命令(): flutter build apk --obfuscate --split-debug-info=xx

  • --obfuscate:开启混淆操作;
  • --split-debug-info=:将因混淆生成的 map 符号表缓存到此位置

so优化和混淆同时使用打包命令: flutter build apk --obfuscate --split-debug-info=debugInfo --target-platform android-arm,android-arm64,android-x64 --split-per-abi

PS:经过测试android原debug包 104.9MB ,release包 73.5MB ,如果仅仅使用v7a架构包大小为 29.1MB
PS2:经过测试分架构打包不使用混淆打包命令好像也会自动开启混淆。若不设置相关混淆规则,部分三方插件会不能使用。

iOS方案:

参考文章
PS:经过测试ios包优化前 400MB+ ,优化后 200MB+
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容