前言
项目中引入了“大量的”lottile动画文件以优化动画表现结果,轻微统计了下,共20多个,小的几十k,大的1.33M,总巨细高出8M,apk包体积急速膨胀。
办理方案
由于项目中表现动画的须要,引入了大量的Lottie动图,以优化表现结果导致包体积急速膨胀,现在可以想到的办理方案重要有如下2种:
方案1)远端方案
将lottie json文件放置在远程服务端,在须要时加载文件大概提前预加载到当地。
这个方案可以说是针对“包体积”最优的办理方案,但缺点也同样致命。优化方案会切入业务逻辑,对于已经开发好的项目须要重新举行测试评估,增加了业务逻辑Bug的风险,只得当在项目开启之初同步参与。对于此方案还须要增加对json文件“下载-管理-失败重试”等文件管理干系的业务逻辑,增加了维护调试成本。但假如干系方案一旦建立和稳固运行,还是很“香”的。同时另有文件在什么时间加载也是门学问,假如简朴化的一股脑在启动时加载,极易造成运行卡顿大概内存占用过高OOM等风险。
方案2)“当地”方案
压缩lottie json文件的巨细,缓解apk包体积急速膨胀的标题。
这个方案只能轻微缓解下apk包体积膨胀的标题,只能是个临时方案,后续发起接纳方案1)更换。
怎样压缩Lottie动画文件的巨细?
回到本文的正题,Lottie导出的动画文件简朴归类重要有两种,一种是以.zip或.lottie文件末端的文件,也大概是个文件夹(里面包罗一堆图片和一个.json文件),另一种则是单独只有一个json文件(开头截图中的那种)。
针对以.zip或.lottie文件末端的Lottie文件(素材图片独立于.json文件),压缩方案直接对这些图片素材举行压缩。可以参考我从前写的一篇文章《Android图片资源压缩记》和使用图片批量压缩工具举行处置惩罚。
PS: 猛烈发起是不改文件及厥后缀名,假如确实须要修改,则要注意要把.json文件里相应的name也同步更改,否则使用时将导致找不到文件直接报错。
针对单独只有一个.json文件的Lottie文件,我这边开发了一个脚本,用于压缩json文件,可以有效的对文件举行压缩,结果如下:
PS:差别的文件压缩率差别,取决于使用素材图片的巨细和多寡。
批处置惩罚步伐:tiny-lottie.exe
开源地址: 码云(gitee) /chockqiu/tiny-lottie
在须要批处置惩罚的文件夹下运行如下下令,将批量处置惩罚文件夹下全部*.json文件。
Windows环境
tiny-lottie.exe -q 75 -pMac/Linux环境
python tiny-lottie.py -q 75下令行参数
usage: TinyLottie [-h] [-d directory] [-q quality] [-o] [-p]Lottie文件批处置惩罚工具, 支持使用webp图片压缩Lottie文件optional arguments: -h, --help show this help message and exit -d directory, --dir directory 运行文件夹,默认当前文件夹 -q quality, --quality quality 质量百分比[0-100],Webp图片压缩率,数字越大质量越高 -o, --overwrite 是否覆盖源文件 -p, --pause 实行完是否停息窗口以便检察输出
假如本文对你有资助就点个赞支持下吧~~~ |