最近在编译SocialCall的手机APP代码,发现默认生成的APK大小竟然高达400多兆,这明显是不正常了,赶紧百度找到以下解决方法。

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 包。
  • 所以这个命令的含义就是告诉编译器,我需要你为我针对我指定的三种不同架构分别生成对应的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:经过测试分架构打包不使用混淆打包命令好像也会自动开启混淆。若不设置相关混淆规则,部分三方插件会不能使用。

本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。

最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或联络我们。

对于会员专享、整站源码、程序插件、网站模板、网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。

如果您已经成功付款但是网站没有弹出成功提示,请联系站长提供付款信息为您处理

源码素材属于虚拟商品,具有可复制性,可传播性,一旦授予,不接受任何形式的退款、换货要求。请您在购买获取之前确认好 是您所需要的资源