华安iOS安装包大小的优化 -天下标王
华安iOS安装包大小的优化

文章目录

####1、手动整理

#####(1) 手动整理图片资源
之前对图片的管理很混乱,不仅每个控制器的文件夹的统计目录都有images文件夹,每个子模块的控制器同级目录下也有iamges文件夹。同时由于管理理念的变迁,以前的/TKApp/images/TKApp/resource/images目录下还存放着图片。右键点击show in Finder查看,还可以看到有些图片没有引入工程但是在目录下还存在着。
工程目录与真实目录下的文件1
工程目录与真实目录下的文件2
工程目录与真实目录下的文件3

#####(2)把没有使用的代码文件删除

有一部分代码是之前的模块文件,但是现在没有在用这些代码了。所以也要把他们找出来并删除掉。特别注意的是,有些模块可能没有引入到工程,所以真实目录下也要检查。
没有用的子模块
没有用的控制器类
没有用的文件类

####2、工具分析来整理图片资源

对于不能立即找到在工程中没有用的图片,我们可以用【LSUnusedResources】开源软件(下载地址:传送门)来快速找出没被使用的资源文件。
使用方法如下:

  • 输入Xcode project path;
  • Code Suffix把工程用存在的文件格式打上勾,同时取消Ignore右旁的勾;
  • 点击右下方的Search开始查找;
  • 查找完成后,选中要删除的资源后,点击右下方的Delete可以删除对应目录下的该资源文件;

查找到的结果截图如下:
LSUnusedResources查找结果
由于工程是由各负责人开发完成的,虽然代码在这里,可以每张全局搜索来查看有没有使用,但是未免工作量太大。同时也不是真正清楚这些找到的图片有没有间接使用到。还有就是源头修改才是正道,不然下次工程覆盖后,删除的图片就又回来了。

所以找到这些没有使用的资源文件后,把各个模块的资源图片整理出来,然后考虑告知经理,让各个模块的负责人去检查各自的代码,把没有使用的图片删除之,有间接使用的图片,说明一下。

下图是删除了行情、ygt、trade、open的无用图片后的安装包对比,减小了0.4MB:

具体整理的文件可以看《华安没有用到的图片统计》

####3、对图片进行无损压缩

清理完没有使用的图片资源后,可以进一步地,对工程中使用到的图片进行无损压缩,减小图片的总大小。

3.1、使用【ImageOptim】

【ImageOptim】的下载地址为:传送门

具体使用,就是直接把要压缩的图片拖到【ImageOptim】窗口里面,ImageOptim机会对图片进行压缩。截图如下:

对拖进去先后坐下对比,图片确实变小了:
压缩前后对比(实例)

3.2、使用【tinyPNG】网站在线无损压缩(或者使用tinyPNG的开元软件【TinyPNG4Mac】进行无损压缩)

【tinyPNG】网站的地址为(传送门)

【TinyPNG4Mac】的下载地址在:传送门。这个

鉴于【LaunchImage】的图片用【ImageOptim】无损压缩不理想,于是把这组图片都拖到【TinyPNG】网址去压缩,压缩效果如下:

打包后的前后对比如下:

####4、使用.xcassets来管理图片以减小安装包大小
为了说明使用.xcassets来管理可以有效减小安装包大小,我备份了一份【华安徽赢】的工程,主工程保持不变,备份工程把所有的.png图片都放在Images.xcassets
all_in_xcassets

not_all_in_xcassets

compare

从上一张图可以看出,苹果确实会为放在.xcassets里面的图片进行压缩,安装包减小了0.2MB。

####5、编译器的优化
1、Build Settngs中的配置项

Build Settings->Optimization Level有几个编译优化选项,release版应该选择Fastest, Smalllest,这个选项会开启那些不增加代码大小的全部优化,并让可执行文件尽可能小。

项目已经设置了这个选项。

2、去除符号信息

Build Settings中的Strip Linked ProductStrip Debug Symbols During CopySymbols Hidden by Default在release版本应该设为YES,可以去除不必要的调试符号。Symbols Hidden by Default会把所有符号都定义成”private extern”。这些选项目前都是XCode里release的默认选项,但旧版XCode生成的项目可能不是,可以检查一下。
symbols
项目之前已经设置Strip Linked ProductStrip Debug Symbols During CopyYes了。设置Symbols Hidden by DefaultYes解压ipa包后可以减小0.1MB:

3、配置App Thinning为包瘦身

App Thinning是伴随iOS9一起出现的,因此该功能也仅对iOS9以上设备生效。App Thinning主要包含以下3个方面:App Slicing(应用程序的划分)、On Demand Resources(按需加载资源) 和 Bitcode。

3.1、App Slicing

根据苹果官方文献的描述「Slicing 是为应用捆绑包创建、分发不同变体以适应不同目标设备的过程。一个变体只包含针对某个目标设备的可执行架构与资源。」 换句话说,App Slicing仅向设备传送与之相关的资源(取决于屏幕分辨率,架构等等)。事实上,App Slicing 负责处理 App Thinning 的主要流程。

当你准备好提交 app 时,通常会(但必须使用 Xcode7,因为它包含支持 App Thinning 的 iOS9 SDK)向 iTtunes Connect 上传 .IPA 或 .App 文件。然后,应用商店分割该应用,创建特定的变体以适应性能不同设备。

3.2、On Demand Resources

按需加载资源是在 app 第一次安装后可下载的文件。举例说明,当玩家解锁游戏的特定关卡后可以下载新关卡(和这个关卡相关的特定内容)。此外,玩家已经通过的关卡可以被移除以便节约设备上的存储空间。

开启按需加载资源功能涉及改变 Xcode 中的设置:在Build Settings下,将Enable On Demand Resources设置为Yes
On_Demand_Resources的设置

3.3、Bitcode

本质上Bitcode也是苹果在用户下载前优化app的新方式。Bitcode 使得 app 无论在何设备上都能快速高效地运行。Bitcode 使用最新的编译器自动编译app并且针对特定架构进行优化。(例如,针对 iPhone 6s和 iPad Air 2等 64 位处理器的 arm64)

Bitcode 不会下载应用针对不同架构的优化,而仅下载与特定设备相关的优化,使得下载量更小,同时与前文所述的 App Thinning 技术紧密合作。

Bitcode 是 iOS 上较新的功能,对于新的项目需要手动开启。在Build Settings下,将Enable Bitcode设置为Yes来完成。
bitcode

设置后打包,报错,提示IM的XMPPRoomHybridStorage类还支持bitcode:

4、设置Make Strings Read-OnlyYes

工程已设置。

5、去掉异常支持,Enable C++ ExceptionsEnable Objective-C Exceptions设为NO,并且Other C Flags添加-fno-exceptions


Archive后报错,原因是关闭Enable Objective-C Exceptions@try{//...} @catch() {//...}不能使用了。

Enable Objective-C Exceptions设置回去后,打包,发现包大小没有变化:

####6、代码优化

参考资料:iOS9 App Thinning(应用瘦身)功能介绍

文章目录
如何搭建个人博客2

标签

RSS 订阅

新浪微博

相关内容推荐

网站制作优化怎样收费上时空网站优化网站开发seo优化事项静海网站优化费用优化公司网站弊白云速捷高端深圳独立外贸网站优化需要多少钱进贤网站搜索引擎优化东坑网站优化哪家专业江口网站seo优化价格教育网站优化定制网站怎样自己优化深圳服务网站优化平台晋中网站优化培训关于网站优化的关键词黔东吉安营销型网站优化营销安徽优化网站靠谱西安优化网站价格刚接触网站优化怎么办江门seo网站优化有哪些网站链接优化分析怎样才能给网站加快优化西乡网站优化排名象山网站优化公司价格优化网站选择模板安居客网站搜索引擎优化中国网站优化招商项目临沂织梦网站打开慢怎么优化澄迈县网站排名优化网如何优化网站唐山网站内容优化福永健康网站优化网站优化用处莞城网站关键词优化外包广东知名网站优化价格多少丰润专业的网站优化联系方式仪征网站优化哪家便宜中山网站优化推广章丘网站优化方案阜阳网站首页优化图像优化的网站雷山网站优化价格高州网站优化seo免费网站优化好吗新网站二级域名优化好不好如何进行网站优化的方法商丘百度seo网站优化费用优化网站运营网站排名优化dxm.so好吉林网站优化快照林口县网站seo优化排名项城外贸网站优化费用低沧州网站优化哪家靠谱公司网站优化建议网站前期优化计划怎样自行优化网站排名兴化盐城网站优化工作室建网站如何优化网站搜索引擎优化方案分析报告长沙做网站seo优化哪家好沈阳网站SEO优化多少钱国际网站优化建议如何写企业网站优化方案商城网站优化排名接口开发网站改版后应该怎么优化临沂口碑好的网站优化价格长垣网站seo优化推广广东芜湖网站优化于都县网站优化渠道南通网站seo优化柳州专业网站seo优化推广优化网站方法及云速捷郑州网站如何优化收录湖南专业网站优化的价格曲周网站优化哪家好从细节入手做好seo网站优化涞水网站优化网站关键词优化报告网站优化月总结网站如何优化排名副云速捷强的东莞网站优化推广宜兴网站排名优化公司市南区快速优化网站市中区网站优化网站的优化重选云速捷唯有优化搜索引擎成功的网站武义网站优化电话新乡搜索引擎网站优化外包冠县网站优化找哪家网站优化人员配置网站优化怎么做简单又省时金华网站优化企业芜湖专业网站优化推广网站关键词排名优化新报价温州营销型网站优化方案中山营销型网站优化长春实力强的网站优化推广舟山武汉网站优化锡山区网站优化开户成都市网站优化找哪家铁门关网站优化哪家好网站排名优化软件十大易速达网站移动端排名优化技巧池州网站关键词排名优化惠州网站优化哪家服务好沧州泊头网站优化九台网站推广优化重庆网站建设推广优化珠海网站优化企业网站站内优化原创文章收录德江网站seo优化南京网站改版优化网站w前端优化技术如何优化网站首荐金手指快速的网站关键词排名优化许昌实力网站优化哪家好网站优化中关键词密度的重要性静海网站优化费用山东网站优化排名品牌公司市南优化网站哪家专业网站排名优化廴金手指花总乐清网站优化图片推荐传统行业网站优化方法网站怎么优化就里云速捷拥有百度网站排名优化方法网站性能优化注意点南昌西湖关键词网站优化网站站长怎么优化长尾榆林网站优化哪家公司好那曲网站设计有哪些优化网站排名优化大师 sit新乡企业网站优化代办重庆合川网站优化哪家不错宜昌网站优化的工具有哪些方案全南网站优化平台荆门网站排名优化开发浙江省网站关键词优化印刷网站优化营销怎样优化网站相信金苹果专业大兴廊坊网站优化福清网站优化排名推广黄山网站整站优化方案镇远县网站优化服务哈尔滨网站优化哪家靠谱如何优化排名做网站优化网站 大熊猫点搜江东如何优化网站关键词杭州企业网站排名优化网站推广优化丂金手指排名莞城服装网站优化的方案外贸独立网站优化公司长春正规网站seo推广优化合肥百度网站优化优化网站关键词培训价格福州怎样给网站做优化外包手机网站优化发展趋势宁波江东区网站优化哪家强网站运营后的优化工作是凌源网站优化软件攀枝花做优化网站电脑网站优化教程罗湖免费网站优化如何做南昌西湖网站seo优化贵州自助建网站优化服务附近的网站优化怎么做找排名优化的网站松江区网站优化定制方案辽宁网站优化靠谱黄山市网站seo优化排名网站体验设计和优化济南网站优化策略优化网站软件需火19星服务网站优化流程表铜陵网站优化seo网站推广优化mr丿云速捷网站搜索优化就连火1星苏州快速优化网站下载类网站怎么优化怎么优化网站图片加载速度金山区网站优化公司五金网站优化广告网站优化有那泰安优化网站出售网站的整合优化方案广东很好的网站优化用户体验新市区网站seo优化排名营销网站建设方案公司报价网络优化达州网站优化报价360seo网站优化工具网站规划设计和优化设计甘肃网站优化选哪家SEO网站优化专员招聘新洲网站优化公司如何优化确保网站关键词稳定宜城网站排名优化塘沽网站优化服务热线化肥农药行业网站优化福州怎样给网站做优化外包网站排名优化口碑好天猫店网站优化获客设计网站全网优化

合作伙伴

天下标王

龙岗网络公司
深圳网站优化
龙岗网站建设
坪山网站建设
百度标王推广
天下网标王
SEO优化按天计费
SEO按天计费系统