最近在编译SocialCall的手机APP代码,发现默认生成的APK大小竟然高达400多兆,这明显是不正常了,赶紧百度找到以下解决方法。
android和iOS通用方案
- 删:移除无用代码和无用资源
- 缩:压缩资源图片(熊猫压缩)或者多使用svg格式的图片
- 挪:服务端下发插件或资源
android方案
- 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 包。
- 混淆:可以增加逆向难度还有减少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:经过测试分架构打包不使用混淆打包命令好像也会自动开启混淆。若不设置相关混淆规则,部分三方插件会不能使用。
本站大部分资源收集于网络以及网友投稿,本不保证资源的完整性以及安全性,请下载后自行测试。
本站资源仅供下载者学习技术,版权归资源原作者所有,请在下载后24小时之内自觉删除。
本站资源仅供下载者学习IT编程开发技术,请遵守国家法律法规,严禁用于非法用途。
若作商业用途,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。
如您是版权方,本站源码有侵犯到您的权益,请邮件联系331752841@qq.com 删除,我们将及时处理!
本站资源仅供下载者学习技术,版权归资源原作者所有,请在下载后24小时之内自觉删除。
本站资源仅供下载者学习IT编程开发技术,请遵守国家法律法规,严禁用于非法用途。
若作商业用途,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。
如您是版权方,本站源码有侵犯到您的权益,请邮件联系331752841@qq.com 删除,我们将及时处理!