Monorepo 解决方案 — 基于 Bazel 的 Xcode 性能优化实践

💡 原文中文,约11300字,阅读约需27分钟。
📝

内容提要

本文介绍了字节跳动将Xcode工程生成工具从Tulsi迁移到rules_xcodeproj的适配和优化工作,解决了多个Target共用的源文件语法高亮异常和提供了更好的构建参数管理和展示。同时,提出了基于Focus Mode的优化方案,帮助开发人员专注于当前需求开发相关的代码。

🎯

关键要点

  • 字节跳动将Xcode工程生成工具从Tulsi迁移到rules_xcodeproj,解决了多个Target共用的源文件语法高亮异常。

  • 迁移后,Xcode工程流畅度明显提升,冷启和文件操作时间大幅缩短。

  • rules_xcodeproj对Xcode的支持更全面,能够满足更多开发需求。

  • Tulsi项目停止维护,rules_xcodeproj社区活跃,更新频率高,适配新版本Bazel成本低。

  • 适配过程中,修复了rules_xcodeproj索引问题,并优化了工程结构。

  • Xcode卡顿主要由于Tulsi的索引方案和全源码构建造成,rules_xcodeproj通过改进解决了这些问题。

  • 在索引功能中,rules_xcodeproj移除了Library Target间的依赖关系,导致语法高亮异常,通过源码合并方案解决。

  • 源码合并方案通过XCBBuildServiceProxy接管索引参数计算,确保编译参数正确应用。

  • 最终工程结构精简,行数减少,启动与文件操作耗时减少60%以上。

  • 构建模式提供'Build with Xcode'和'Build with Bazel',未来将推出'Build with Proxy'模式。

  • 后续将基于Focus Mode优化调试体验,帮助开发人员专注于当前需求相关代码。

➡️

继续阅读