返回

云音乐IOS包体积如何减少87MB?生态互通,优势资源统筹整合

IOS

如何有效降低APP安装包体积,这不仅是云音乐当前急需解决的问题,也是整个IOS系统范围内的问题。当前用户可能并不会直接感知到APP体积的增加,但是随着iOS版本持续迭代和新技术的不断融入,APP包体积很可能触及苹果规定大小的上限,从而导致无法上架。不过在去年,云音乐和网易严选采用了团队协作的方法,通过对二进制代码的优化,成功使云音乐IOS包体积缩减了87M。

通过对具体细节的探索和分析,我们发现当前IOS端资源优化主要存在着体积口径难以明确、文件过大、开发成本高昂的问题。通过分析IOS端资源库组成要素,以及应用文件中各要素大小占比图,我们发现IOS端体积优化总体而言,主要集中在资源、库、二进制文件三个部分,进而我们制定了相对应的优化方案。

在具体实施过程中,我们发现可采用资源合并、模拟器删除未引用资源、清理无用库、精简库、重用库、静态库导入、去除符号表、文件去肥等方式,来优化各个资源、库和二进制文件中的文件,最终实现IOS客户端包体积的缩减。下面,我们将逐个探讨各优化环节中的注意事项。

一、资源优化

首先,对于资源,我们发现资源优化主要集中在图片资源和国际化文件上,其中图片资源的优化重点在于资源合并和资源按需加载,国际化文件的优化重点在于文件大小清理。在资源合并中,我们使用了pack工具,通过对图片进行自动合并、切图、格式转换,然后删除原图片,从而减少了资源冗余和重复打包等情况,最后还可通过按需加载,来实现资源按需加载和按需下载,以减少首次下载包大小和首次加载资源使用的时间,例如用户每次启动APP时,只需要加载常用资源即可,而不是一次性加载所有资源,从而节省空间。

其次,在图片处理中,我们使用了图像自动压缩工具,支持PNG、JPG、WebP等格式,对图片进行无损压缩,并结合pack图片资源合并工具,有效降低了图片资源占用空间。同时,对国际化文件进行了清理,找出重复或不必要的翻译文本,并删除它们,以减少国际化文件的大小。

最后,在文件优化中,我们使用PLISTBUDDY工具压缩了PLIST文件,在构建过程中,加入了去除无用符号表的编译脚本,从而减小了APP包的体积。

二、库优化

对于库文件,我们发现库文件优化主要集中在无用库清理和动态库精简上,通过将无用的库从APP中删除或禁用,减少了不必要的代码和资源,进而实现了对库文件体积的精简。

而在动态库精简中,我们着重优化了项目的动态库,在打包过程中,通过LDFLAGS设置,将不必要的符号从动态库中剥离出来,从而减小了动态库的大小,降低了APP的包体积。

三、二进制优化

对于二进制文件,优化方向主要集中在重用库、静态库导入和去肥上。通过对网易严选和云音乐APP的资源和库进行比对,我们发现两个APP之间有大量相同或相似的代码和资源,于是我们将两款APP之间的公共代码和资源提取出来,并将其封装成一个新的静态库,然后将其导入到两款APP中,从而减少了代码和资源的重复,减小了APP的包体积。

通过对一些无用或过大的代码进行重构或删除,可有效降低二进制文件的体积,并提升APP的性能,同时通过对代码进行混淆和压缩,也可降低代码的可读性和减小文件体积。

最后,在去肥操作中,我们对链接过程中的所有目标文件进行了瘦身操作,具体而言,就是将目标文件中未引用的代码和数据剥离出来,同时还对目标文件进行了压缩,从而进一步减小了APP的二进制文件体积。

四、结论

综上所述,通过以上各种优化方式的综合运用,云音乐IOS客户端最终使安装体积下降了87MB,下载体积下降了60MB。我们希望这种团队协作、优势互通的优化方法,能够为其他APP开发者提供一些借鉴和参考,帮助大家更好地解决APP体积过大的问题。