携程旅行App iOS工程编译优化实践

2020 年 9 月 10 日

携程旅行App iOS工程编译优化实践

引言

开发效率的提升,是开发者关注的一个永恒的话题。对于 iOS 而言,编译速度一直是影响 iOS 开发和集成测试效率关键的一环。

携程旅行 App iOS 工程编译,经历了从全源码编译到工程组件化,细分 Bundle,再到细分 Bundle 基础上的进一步优化四个阶段。每次的优化改造都是不断结合业务反馈,深入了解 xcode 编译过程后的成果。

一、背景

简单回顾一下在做 Bundle 拆分之前的情况,当时整个 iOS 工程的所有代码都在一起,并未做工程拆分和解耦,编译时全都是源码编译,数百万行代码全部编译完成要将近一个小时。所有的开发人员都在一个工程里开发,如果因为某个人提交的代码有问题(这是常常会发生的),导致编译了很长时间之后才报错,更是耽误时间,严重影响开发效率。对于测试人员来说,每次需要验证一个功能时打包测试都需要至少等待几十分钟,这是极大的资源浪费。

这个时候的 Build 过程是全源码 complie,几千上万个文件都需要编译、链接,效率可想而知。

所以为了提高开发和测试的效率,提高 iOS 工程的编译速度刻不容缓。

二、优化方案

2.1 工程组件化

第一个优化是把整个工程的编译过程打散,把代码按照业务线拆分成一个个独立的子工程,每个子工程的编译过程都是独立的。每个子工程只需要保证自己工程的源码能够编译成功,对外输出统一的静态库和资源文件包的产物。这个产物我们叫做 Bundle。

原文链接:【 https://www.infoq.cn/article/yPhZW2a7CRLNuzVIjkyv 】。未经作者许可,禁止转载。

登录后可解锁全站优质内容

免费畅享技术公开课、顶尖技术团队访谈、一线互联网大厂技术实践

文章
视频
电子书
研究报告
立即登录
2020 年 9 月 10 日 10:05 420

评论

发布
暂无评论
发现更多内容

什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?

朱月俊

第二次作业总结

朱月俊

老大吩咐的可重入分布式锁,终于完美的实现了!!!

楼下小黑哥

Java redis 分布式锁

基本的面向对象原则(Basic OO principles)

旭东(Frank)

编程思维 极客大学架构师训练营

产品视角看推荐算法

峰池

人工智能 算法 产品经理 推荐算法

哪些框架是遵循依赖倒置原则的?

朱月俊

依赖倒置和案例

王锟

给行动找个理由

Neco.W

行动派 决策

架构师训练营第2周学习总结

Season

极客大学架构师训练营

做一个有原则的码农可好?

Dawn

极客大学架构师训练营

为什么坐车会晕车呢

石云升

生活,随想 日常思考 晕车

用接口隔离原则优化 Cache 类的设计

朱月俊

618你的系统顶住了么?系统发生重大灾难难道只能“删库跑路”?

夜来妖

“麻烦”的处理流程

zhoo299

随笔杂谈

第二次作业

朱月俊

小师妹学JVM之:GC的垃圾回收算法

程序那些事

JVM 「Java 25周年」 小师妹 JIT GC

架构师训练营第二章课后作业

叮叮董董

一个包子铺看懂 I/O 模型演变

小眼睛聊技术

Java 程序员 架构 后端 nio

品软件架构原则模式之美

老姜

架构师训练营-第二章-依赖倒置原则&接口隔离原则

而立

极客大学架构师训练营

架构师训练营二期作业

老姜

架构师训练营第2周作业

Season

极客大学架构师训练营

架构师训练营第二章总结

叮叮董董

第二周作业

武鹏

依赖倒置原则

李广富

千万不能让程序员给娃娃取名字

码农神说

程序员

这也太拧巴了吧?结局意想不到

非著名程序员

程序员 程序人生 提升认知

架构师训练营第二周

小树林

数据库周刊28│开发者最喜爱的数据库是什么?阿里云脱口秀聊程序员转型;MySQL update误操作;PG流复制踩坑;PG异机归档;MySQL架构选型;Oracle技能表;Oracle文件损坏处理……

墨天轮

数据库

ARTS打卡Week 04

teoking

ios LeetCode ARTS 打卡计划

架构师训练营 - 第二周架构师实现自己架构的主要手段

zcj

极客大学架构师训练营

众安黑客马拉松大赛总决赛-InfoQ小编探班

众安黑客马拉松大赛总决赛-InfoQ小编探班

携程旅行App iOS工程编译优化实践-InfoQ