iOS 进阶:Awesome - Runtime

Github开源地址,一步一步教你怎么使用

一、概述


经过多年的发展,美柚iOS项目代码已经达到40W行+的规模,所使用的 Pod 库的数量达到了110+,App Store 安装包210M+,在这么大的项目规模下(CI机器 MAC配置:3 GHz 8-Core Intel Xeon E5;时间:发布20min+),(开发机器iMac :Retina 5K, 27-inch, 2017 融合硬盘;时间:build30min+)打包、编译问题逐步成为我们团队一个躲不过的痛,严重影响了我们的研发效率与其他团队之间的协作。
我们一台13年的ci机器同时需要承接七八个项目、多个分支的打包任务,在有多个项目同时打包的情况,显得尤其地力不从心。
在硬件资源有限的情况下,并且在无侵入、无影响现有的业务的前提下,如何解决这些摆在团队面前的难题,便成了我们迫在眉睫的迫切需求,最近半年多来一直在寻找加快打包速度的方案。

二、编译提速探索与尝试


1、CCache

CCache 是一个编译缓存器,一个能够把编译的中间产物缓存起来的工具

其原理是通过把项目的源文件用ccache编译器编译,然后缓存编译生成的信息,从而在下一次编译时,利用这个缓存加快编译的速度,目前支持的语言有:CC++Objective-CObjective-C++
下面这张图基本就阐述了CCache的工作原理。
在这里插入图片描述
在项目中的实际编译流程

在这里插入图片描述

Ccache我们经过在工程的一番尝试、确实在某些方面上极大的提升了我们出包的速度。美柚iOS Ci打包从之前的最快20min+出包到最快10min,确实能够给我们带来比较不错的提升,大大加快了我们项目的出包速度。在我们项目运行了几个月后,对于我们项目的情况,也发现了一些问题,现在总结了以下几点:

优点:

  1. 满足我们追求的无侵入、无影响现有的业务的要求,无入侵、且开发人员无感知。
  2. 确实能大幅度地提升编译速度,美柚项目上最快时提高3倍以上的编译速度。
  3. 不需要对项目作出大调整,只需部署相关环境和一些脚本支持。
  4. 不需要改变开发工具链。
  5. 同一个目录下,CCache 的缓存命中率相对稳定。

对我们项目中有存在些问题点:

  1. 在未有缓存的情况下,首次打包编译的时间比原来的翻近一倍,原来20+min,首次将近40+min,在资源紧张的情况下,甚至是70min+。
  2. 修改一些引用较多的文件(如公共库、底层库改动),容易造成大范围的缓存失效,速度会变得比原来未使用ccache时更慢。
  3. 多个项目相同的组件不支持缓存共享,我们有多个分支打包的需求,修改目录名称后,缓存即失效。
  4. 我们机器的Ccache最大的缓存上限约18GB,且Debug/Release区别缓存,美
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值