如何最好地模块化Xcode项目以加快构建速度

时间:2018-10-22 11:00:24

标签: ios swift xcode build compilation

我正在一个团队中处理一个iOS项目,该项目在Swift代码方面已经发展到了巨大的规模。

从代码的干净状态开始构建项目大约需要10分钟,而仔细检查后,更改代码中的任何内容都需要30秒来构建和运行项目,即使该代码与私有方法中的一行有关。 Swift文件符号,在其他任何地方都不会使用。

我们已经尝试了很多方法来缩短构建时间,包括来自这个不错的资源https://github.com/fastred/Optimizing-Swift-Build-Times的技术 没有任何帮助,更改所有次要内容后,您仍然需要等待整整30秒才能在应用程序中看到它。

我们使用Xcode 10,即“ New build system”,其编译模式设置为Incremental。如果我通过Perform Action> Build with Timing Summary来构建项目,则最长的阶段是“快速代码编译”,这并不是什么新鲜事。我们怀疑Xcode会尝试遵循保守的编译决策并重建每个可能与修改后的Swift代码有任何联系的Swift文件。而且似乎大多数时候Xcode都是错误的,并且会做多余的工作。

我有点想念Objective-C的日子,那时编译器将查看所有import / include语句,并且仅重建显式声明的依赖项,这意味着要花大量的构建时间。

所以我现在认为也许可以将项目分解为模块,然后在Swift中普遍使用import来告诉编译器哪些Swift文件依赖于其他Swift文件。

是否有一种很好的,也许是自动化的方法将大型项目模块化为许多小组件,从而加快了常规的“试一试”方法的构建速度?

2 个答案:

答案 0 :(得分:1)

  1. 您可以将项目拆分为Cocoa Touch Framework。 -> https://www.raywenderlich.com/5109-creating-a-framework-for-ios
  2. 将每个框架添加到其自己的git repo中。可能是私人回购。
  3. 创建私人可可足类。 -> https://guides.cocoapods.org/making/private-cocoapods.html
  4. 将新的依赖项添加到项目podfile。 -> pod'YourFramework',:git =>'FrameworkGitRepoPath'

答案 1 :(得分:0)

我可能在这里参加聚会很晚,但是我们正在使用此工具:https://github.com/yonaskolb/XcodeGen/

它不仅使我们可以轻松地将项目拆分为模块,而且还完全消除了项目文件中的冲突,因为不再需要将其添加到存储库中。