我正在一个团队中处理一个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文件。
是否有一种很好的,也许是自动化的方法将大型项目模块化为许多小组件,从而加快了常规的“试一试”方法的构建速度?
答案 0 :(得分:1)
答案 1 :(得分:0)
我可能在这里参加聚会很晚,但是我们正在使用此工具:https://github.com/yonaskolb/XcodeGen/
它不仅使我们可以轻松地将项目拆分为模块,而且还完全消除了项目文件中的冲突,因为不再需要将其添加到存储库中。