12

场景: 我们有一个用于 iOS 游戏的 XCode 项目,其中包含大约 7000 多个文件。

只有 1000 多个文件是代码。其余的是图像、声音、关卡数据、XIB、plist、配置文件等。

它是一个通用应用程序,因此,我们为旧 iPhone、Retina iPhone、iPad 等提供了单独的资源集。我们还为 BG 图像等少量内容提供了 PNG 和 PVRTC,以充分利用不同的硬件。

问题:

目前该项目大约需要

42 秒清洁(Cmd - Shift - K)

完全重建需要 8.3 分钟(Cmd - B)(重建时,进度条的一半在 1 分钟内填满)

aaaand... 5 分钟 36 只运行 (Cmd - R) ??

之后,我按下“停止”并再次单击“运行”,没有做任何其他事情。“再次运行”需要 2 分 40 秒

我还看到资源再次被复制,一些文件再次被构建,如进度条上方的 XCode 所示。

任何减少这些阶段时间的解决方案都受到高度赞赏。请 ?

PS 该项目是在 XCode 3 天内启动的,每次有新的 XCode 出来时,我们都会自动更新 xcodeproj 文件。

4

2 回答 2

7

您正在寻找的是改善调试的编译和启动时间,对吗?那么为每个平台创建不同的目标呢?因此,您保留相同的代码,但仅根据您的调试设备打包资源子集用于调试目的。

为此,请继续您的实际目标,右键单击并复制。保持你的实际目标不变,它是胖的!对于新目标,假设它是 iPad Retina,转到“构建阶段”->“复制捆绑资源”并删除所有与 iPad Retina 无关的资源。对每个平台都这样做。

然后在 Xcode 的左上角,为特定设备选择好的目标。也许,您可以定义目标接受哪个设备。

如果你使用持续集成,让你的构建机器在晚上编译胖目标。

于 2013-01-22T11:04:05.633 回答
6

如果问题的原因未知,则无法解决问题。“我的车不再启动了,有没有办法让它重新启动?”;最有可能,但前提是它当前拒绝启动的原因是已知的。这听起来有点像您希望 Xcode 中有一个名为“Build fast”的魔法开关,通过启用它,一切都会变得更快。如果有这样的开关,你不觉得它会默认启用吗?你不认为它实际上会一直启用吗?

我也想知道你为什么用“编译器”和“编译器优化”标记这个问题。根据你自己的说法,编译只需要 8.3 分钟的编译时间,那么如何进一步减少编译时间使整个过程更快呢?即使编译时间减少到零,这仍然会给您留下 7.3 分钟的构建时间。不要在错误的一端进行优化。

这就像优化代码。如果您的代码太慢,那么如果您没有将大部分时间花在代码中,那么所有优化都是毫无意义的。如果只有 0.1% 的时间花在这段代码上,那么优化一段代码以使其运行速度提高 10 倍对整体性能毫无帮助。代码优化的第一步是分析代码并找出在哪段代码上花费了多少时间。

所以为了让你的构建过程更快,第一步也是最重要的一步是找出为什么现在的构建时间很慢。如果没有这些知识,人们可以在这里给出的所有答案都只是猜测。一旦您确切地知道问题出在哪里,您就可以回来并准确地询问如何使这一步更快。您首先优化最慢的步骤,然后是第二慢的步骤,依此类推。

看一下 Xcode 中的构建日志

在此处输入图像描述

确保选择“所有消息”,否则您只会看到警告和错误,或者只会看到错误。现在开始一个干净的构建,选择左侧弹出的新日志并继续监视该日志。您将准确地看到 Xcode 何时开始操作以及何时接近下一个操作。这应该会给您一个第一印象,哪些任务需要相当长的时间才能完成。一旦您告诉我们这些是哪些任务,我们就可以开始提出建议,您如何能够更快地完成这项任务。

于 2013-01-22T11:54:33.470 回答