课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的app软件被推出到市场中,而在使用过程中app软件的体积也是越来越大的,而今天我们就一起来了解一下app软件瘦身都有哪些方法。
无用文件的删除
无用文件主要包含:无用图片、无用非图片部分。
非图片部分:资源较少,使用方式固定。比如音频、字体。需要手动排查图片部分:主要使用一个开源的MacAppLSUnusedResources进行冗余图片的排查。
删除无用的图片过程,可以概括为下面6步:
通过find命令获取App安装包中的所有资源文件
设置用到的资源类型。比如gif、jpg、jpeg、png、webp
使用正则匹配出在源码中使用到的资源名,比如pattern=@"@"(.+?)""
使用find命令找到篇所有资源文件,再去源码中找到使用到的资源文件,2个集合的差集就是无用资源了。
确认无用资源后可以使用NSFileManager进行文件的删除。
图片资源的压缩
删除了无用的资源,那么对于资源这块还是有操作的空间的,比如图片资源的压缩。目前压缩比较好的方案就是WebP,它是谷歌公司的一个开源项目。
WebP的优势:
压缩率高。支持有损和无损2种方式,比如将Gif图可以转换为AnimatedWebP,有损模式下可以减小64%,无损模式下可以减小19%
WebP支持Alpha透明和24-bit颜色数,不会像PNG8那样因为色彩不够出现毛边。
大文件压缩
图片本身的压缩,建议使用ImageOptim。它整合了Win、Linux上诸多著名图片处理工具的特色,比如PNGOUT、AdvPNG、Pngcrush、OptiPNG、JpegOptim、Gifsicle等。Bundle内的图片资源必须压缩,因为Xcode并不会对其进行压缩。所以做好将图片都用Assets管理。
Xcode提供给我们2个编译选项来帮助压缩图像:
CompressPNGFiles:打包的时候自动对图片进行无损压缩。使用的工具为pngcrush,压缩比蛮高。
RemoveTextMedadataFromPNGFiles:移除PNG资源的文本字符,比如图像名称、作者、版权、创作时间、注释等信息
代码瘦身
代码的优化,即通过删除无用类、无用方法、重复方法等,来达到可执行文件大小的减小。而如何筛选出符合条件的无用类、方法,则需要通过一些工具来完成(fui)
扫描无用代码的基本思路都是查找已经使用的方法/类和所有的类/方法,然后从所有的类/方法当中剔除已经使用的方法/类剩下的基本都是无用的类/方法,但是由于Objective-C是动态语言,可以使用字符串来调用类和方法,所以检查结果一般都不是特别准确,需要二次确认。目前市面上的扫描的思路大致可以分为3种:
基于Clang扫描
基于可执行文件扫描
基于源码扫描
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。