文章最后有我的 12 条小总结。
原文始发地址:我的 GitHub
写在前面
最近公司需求不多,正好研究一下 App 瘦身的办法,写了点小总结。如果你不知道下面几个问题,不妨可以看看文章。使用 .xcassets 有什么好处?@1x 、@2x 和@3x 会一起内置到安装包中吗?PDF 和@1x 、@2x 和@3x 有什么区别?如果我有一个 10 x 10 的控件和一个 50 x 50 的控件,美工需要制作几张 PDF?Iconfont 是什么?PDF 和Iconfont 有什么区别?启动图的正确打开方式?使用 Swift 或者 混编会增大多少的包体积?Install Smallest or Coding Fastest ?
分析
在瘦身之前,首先需要分析一下,我们可以从哪几个方面入手。(以Yep 为例)
Yep是一款很优秀的 Swift 开源软件。
目录划分
App 的瘦身主要是针对于安装包,而在 iOS 中安装包就是一个以.ipa结尾的压缩包。我们可以通过 iTunes 下载获取这个.ipa来分析。Yep IPA
稍微整理一下,大致可以分为以下几类。
资源层面:
Assets.car:项目中所有 .xcassets 的压缩包image: 图片资源文件Video && Audio:音频 或者 视频。
代码层面:
国际化:国际化适配的 String ===> 89KXib && Storyboard:Xib 和Storyboard 编译后的文件。Yep:项目可执行文件。Frameworks:Embedded Frameworks,项目中使用的动态库
其他:
other:配置文件
PlugIns:YepShare,一个共享的插件。
整理后的目录虽然 Yep 不能代表所有的 App,但是在对于 Yep 的ipa 分析之后,大致可以总结出,对一个 App 的安装包瘦身,可以从资源层面和代码层面两个层面入手。
资源层面
在讲资源层面之前,希望我们能达到一个共识,那就是所谓的资源文件指的是图片、视频、音频。Remote: 将资源文件放在服务器上,当用户下载完 App 后根据需要再下载。Local: 将资源文件集成到安装包中的。
Remote
对于Remo