iOS开发笔记之五十四——App减肥常用方法
2016-10-17 17:14
225 查看
苹果对于App的包体大小是有限制的,具体可以参看下面的文档:
Submitting
the App to App Review
像美团点评这种app体量,安装包都已经100多M,对于瘦身,是有较强的意愿的。尤其是最近,平台给了各个业务分配了对应的包体基准值,超过这个值代码就不准合入。当然瘦身的方法有很多,在进行瘦身时,也要考虑每个方案的性价比的问题。经过不断的积累,整理了一些App常见的减肥方法。
1、清理废弃的资源文件与代码
这个就不用多说了,随着“历史的沉淀”,会有大量的废弃业务的代码以及资源文件,它的清理也是充满了坑坑洼洼。
2、去重
去重包括很多方面,包括重复代码类、重复资源文件,对于点评美团这种业务繁多的App,工程项目中图片数量达到几千张,业务部门之间互相copy图片的现象是很常见的,之前写过一个工具,可以脚本扫描工程中的重复图片和重复代码,图片遍历对比每个图片的MD5值;代码文件比较复杂,写了一个算法去查找相似度为100%的代码文件;
3、采取.xcassets方式管理图片
.xcassets的好处有很多,其中一个就是App
Slicing的功能,App Slicing大致就是App Store会根据不同的设备准备不同的安装包(App Variant),每个安装包(App Variant)都只有相应尺寸的图片,比如 iPhone 6
去下载时,只会下载到 @2x 的图片的安装包(App Variant)。
参考:http://www.jianshu.com/p/1034748e3fef
4、代码的复用
代码复用涉及的范围比较广,我们在具体做的时候,是针对我们自己的业务建立一个独立的pod,这个pod专门用来存放我们业务中的工具类、通用控件等通用逻辑,这个pod建立之后,我们经过不断的重构与整理,去除了不少代码。
5、纯代码布局以及去xib
刚加入点评时,就已经开始禁止使用xib进行布局了,xib布局在累积到一定程度会比纯代码布局有明显的空间劣势。
6、按需加载
苹果的按需加载给我们提供了一种思路,常用的主要功能用到的Local处理,不常用的非必需的可以进行Remote处理;
详细参考:http://benbeng.leanote.com/post/On-Demand-Resources-Guide
7、图片的统一
将图片统一为png,这也是苹果推荐的。如果有条件,可以考虑webp格式。
8、背景图清理
很多业务代码的在做背景效果时,喜欢用图片,例如UIButton的背景,其实我们可以用简单的编码就可以替代。
9、动态库
动态库可以大幅降低可执行文件包大小。
参考文档:
http://blog.cnbang.net/tech/2544/ http://benbeng.leanote.com/post/On-Demand-Resources-Guide
Submitting
the App to App Review
像美团点评这种app体量,安装包都已经100多M,对于瘦身,是有较强的意愿的。尤其是最近,平台给了各个业务分配了对应的包体基准值,超过这个值代码就不准合入。当然瘦身的方法有很多,在进行瘦身时,也要考虑每个方案的性价比的问题。经过不断的积累,整理了一些App常见的减肥方法。
1、清理废弃的资源文件与代码
这个就不用多说了,随着“历史的沉淀”,会有大量的废弃业务的代码以及资源文件,它的清理也是充满了坑坑洼洼。
2、去重
去重包括很多方面,包括重复代码类、重复资源文件,对于点评美团这种业务繁多的App,工程项目中图片数量达到几千张,业务部门之间互相copy图片的现象是很常见的,之前写过一个工具,可以脚本扫描工程中的重复图片和重复代码,图片遍历对比每个图片的MD5值;代码文件比较复杂,写了一个算法去查找相似度为100%的代码文件;
3、采取.xcassets方式管理图片
.xcassets的好处有很多,其中一个就是App
Slicing的功能,App Slicing大致就是App Store会根据不同的设备准备不同的安装包(App Variant),每个安装包(App Variant)都只有相应尺寸的图片,比如 iPhone 6
去下载时,只会下载到 @2x 的图片的安装包(App Variant)。
参考:http://www.jianshu.com/p/1034748e3fef
4、代码的复用
代码复用涉及的范围比较广,我们在具体做的时候,是针对我们自己的业务建立一个独立的pod,这个pod专门用来存放我们业务中的工具类、通用控件等通用逻辑,这个pod建立之后,我们经过不断的重构与整理,去除了不少代码。
5、纯代码布局以及去xib
刚加入点评时,就已经开始禁止使用xib进行布局了,xib布局在累积到一定程度会比纯代码布局有明显的空间劣势。
6、按需加载
苹果的按需加载给我们提供了一种思路,常用的主要功能用到的Local处理,不常用的非必需的可以进行Remote处理;
详细参考:http://benbeng.leanote.com/post/On-Demand-Resources-Guide
7、图片的统一
将图片统一为png,这也是苹果推荐的。如果有条件,可以考虑webp格式。
8、背景图清理
很多业务代码的在做背景效果时,喜欢用图片,例如UIButton的背景,其实我们可以用简单的编码就可以替代。
9、动态库
动态库可以大幅降低可执行文件包大小。
参考文档:
http://blog.cnbang.net/tech/2544/ http://benbeng.leanote.com/post/On-Demand-Resources-Guide
相关文章推荐
- iOS开发笔记——常用API方法
- iPhone开发笔记(23)iOS应用发布时上传App icon时出现错误(image can't contain alpha channels or transparencies)
- IOS开发笔记之八——空值(nil值)导致的app崩溃(bug总结一)
- IOS开发笔记之九——类型不匹配导致的app崩溃问题(bug总结二)
- 斯坦福大学iOS应用开发教程学习笔记(第二课)My First iOS App
- iOS开发笔记--Layer 图层圆角、边框 、底纹其他常用操作
- IOS开发笔记之十二——Xcode下类中供外部调用的方法添加注释说明技巧
- iOS开发笔记--Layer 图层圆角、边框 、底纹其他常用操作
- iOS 开发UICollectionView及其常用方法+实例
- ios 开发中 Appdelegate中得生命周期的方法
- iOS开发笔记--调用打开AppStore显示自己的App
- iOS开发笔记--检查App更新
- IOS开发笔记之常用的宏定义
- iOS开发UI篇 -- 04011AppDelegate中方法详解2
- IOS开发笔记之十六——查看静态库文件支持的arm64指令集架构的方法
- iOS开发UI篇 -- 04011AppDelegate中方法详解1
- 手机App开发 iOS开发常用的第三方类库
- IOS开发笔记之二十一——一种跨类调用方法的案例
- IOS开发 - math.h常用数学方法
- iOS 开发中,多线程编程GCD的常用方法总结