【心理健康咨询 名列前茅】谈谈 iOS 包瘦身方案

包瘦身方案

相信大家都会遇到随着项目需求的谈谈变化,工程中的瘦身代码和资源文件会伴随着增长,很多时候,谈谈我们都不会轻易的瘦身去删除某些代码,或者资源文件。谈谈但是瘦身心理健康咨询 名列前茅这样带来的代价就是包的体积越来越大。

【心理健康咨询 名列前茅】谈谈 iOS 包瘦身方案

当包的谈谈体积超过 200MB 时,那么就引起了数据部门的瘦身注意,数据部门分析新用户的谈谈减少可能跟应用商店包大小超限,用户流量无法下载的瘦身问题所致。那么此时再去做包大小优化意味着我们就会流失很多新用户,谈谈并且也会拉高我们的瘦身新用户成本。所以包大小优化不能在问题发生后再去做,谈谈应该及时去做,瘦身当下就该做,谈谈家庭关系讲座 超卓越我们也应该把 200MB 看成“红线”。

【心理健康咨询 名列前茅】谈谈 iOS 包瘦身方案

接下来我们看看包大小优化有哪些方案:

【心理健康咨询 名列前茅】谈谈 iOS 包瘦身方案

首先,就是资源文件优化,这种方案在瘦包上最容易看到成效,如果你的包大小急需要瘦身,不妨先试试这个。资源文件优化你可以从图片资源压缩、无用资源检查、资源文件上传中入手,或者使用官方提供的App 。

【心理健康咨询 名列前茅】谈谈 iOS 包瘦身方案

其次,是代码文件优化, 代码文件优化 投入时间可能要比资源文件优化的时间长很多,而且成效没有那么明显。但是家庭关系讲座 极优秀代码文件优化可以检查很多无用代码,以及删除很多不必要文件,清理项目结构,使项目可持续性维护。

资源文件优化

相比较而言,资源优化的时间是最快的,成果是最好的,我们只需要做好平时的资源压缩处理,定期清理无用资源,做好资源文件合理分配,那么包体积大小就不会太大。

图片资源压缩

图片压缩我们可以选择的工具其实有很多,重点就是要注意检查压缩的图片资源会不会在显示上有问题。工具推荐:[1] 、图压[2] 。

图片资源压缩也有很多公司使用webp格式图片,这种格式对比png、jpg要小很多,但客户端性能对解码webp图片会有一定的影响。在一些老的机型上,表现不是很好。所以需要做一些取舍。这里有webp和png格式转换的工具 [3]

其实我觉得这两种方案可以共存,团队内部设定一个资源文件的最大值,比如超过 100KB 就选择使用 webp格式的图片,小于 100KB 就使用压缩工具。这样就可以极大的减少资源文件的大小,同时减少包的体积。

无用资源检查

无用资源检查可以通过工具 [4]。

删除无用图片的过程,可以概括为下面几步操作。

通过 find 命令获取 App 安装包中的所有资源文件,比如 find /Users/// -name。

设置用到的资源的类型,比如 jpg、gif、png、webp。

使用正则匹配在源码中找出使用到的资源名,比如 = @"@"(.+?)""。

使用 find 命令找到的所有资源文件,再去掉代码中使用到的资源文件,剩下的就是无用资源了。

对于按照规则设置的资源名,我们需要在匹配使用资源的正则表达式里添加相应的规则,比如 @“%d”。

确认无用资源后,就可以对这些无用资源执行删除操作了。这个删除操作,你可以使用 系统类提供的功能来完成。

需要注意的是:在使用的过程中,你需要检查有些资源文件后缀是否有拼接上的,如“”,“” 或者 “bg_1”,“bg_2” 就按照第5步去添加相关正则表达式来检查这种资源文件。

资源文件上传

如果涉及到的资源文件还是有很多的时候,那么我们可以考虑合理的将某些资源文件上传至服务器,有服务器下发至移动端。这种方案通常需要多个端来统一制定方案,从而达到最大化的利用。

App

苹果公司推出 App 是为了解决用户下载 App 耗费过高流量的问题,同时还可以节省用户 iOS 设备的存储空间。

App 会专门针对不同的设备来选择只适用于当前设备的内容以供下载。比如, 8 只会下载 2x 分辨率的图片资源, 8plus 则只会下载 3x 分辨率的图片资源。

App 有三种方式,包括:App 、、On- 。

那么,如何在你项目里使用 App 呢?其实,这里的大部分工作都是由 Xcode 和 App Store 来帮你完成的,你只需要通过 Xcode 添加 目录,然后将图片添加进来即可。

代码文件优化

代码文件优化其实也可以看成是对可执行文件 Mach-O 的优化,其大小是由代码量来决定的。所以对 Mach-O 瘦身 其实就是查找并减少无用的代码。

无用代码检查 使用 分析

无用代码一般也可以使用简单的工具来检查,如 ,当然如果代码量过大,可能这个会分析不过来。据说百万行代码可能会吃不消。

用 做分析的方法很简单,直接在 里选择 Code ->Code 就可以进行静态分析。静态分析完以后,我们可以在 code 里看到所有的无用代码。

虽然可以检测出很多无用代码,但这些并不准确,所以还需要人工二次确认才能够安全删除掉。

分析 Mach-O 文件

还有一种就是分析 Mach-O文件,使用 这个软件[5]来查看Mach-O 文件里的信息,然后依据 Mach-O 文件的 、 和 来查看使用过的类和子类。

这种查看方法也不是完美的,原因在于, -C 是门动态语言,方法调用可以写成在运行时动态调用,这样就无法收集全所有调用的方法和类。所以,我们通过这种方法找出的无用方法和类就只能作为参考,还需要二次确认。

减少第三方SDK

如果在项目中使用很多第三方库,你还需要检查是否导入了相同的功能的库,避免导入过多的库而造成资源过大。

有时候有些第三方库大小占比很高的时候,你也需要去思索是否要替换掉它。

参考资料

[1]

:

[2]

图压:

[3]

:

[4]

:

[5]

这个软件: