iphone - 是否可以使用 distcc 构建 iPhone 设备版本?

标签 iphone xcode ios distcc

据我所知,当我将我的任何项目从模拟器切换到设备构建配置时,构建不再是分布式的,而是在本地构建的。

那么,让 Xcode 使用分布式构建机制进行设备构建有什么神奇之处吗?有人对此有明确的说法,甚至有一些实践经验吗?

除非您了解分布式构建和 Xcode 的主题,否则请不要投票或关闭。这不是关于签名分发的菜鸟问题。

最佳答案

我们还发现 Xcode 3.2.5 不分发设备版本,而模拟器版本使用 distcc 正确分发,尽管在 Xcode Preferences -> Distributed Builds 下设置了所有必要的选项/strong>.

但是,可以解决 Xcode 的限制并强制它也分发设备构建。 Apple 没有默认启用设备分布式构建,这看起来像是一个疏忽(错误!)。

您需要采取的步骤如下:

  • 增加 Xcode 用户默认值 PBXNumberOfParallelBuildSubtasks。这限制了并行构建任务的最大数量,默认为 CPU 内核的数量(有关详细信息,请参阅 Apple 自己的 Xcode 用户默认引用 文档)。我将它从 2 增加到 16,如下所示:

    编写 com.apple.Xcode PBXNumberOfParallelBuildSubtasks 16 或 Xcode 4.2 默认写入 com.apple.dt.Xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks 16

  • 请务必重新启动 Xcode 以使上述更改生效。

  • 您需要设置自己的 DISTCC_HOSTS 环境变量值,详见 distcc 手册页。

  • 为此,您需要在您自己的 /Developer/usr/bin/distcc 脚本中设置 DISTCC_HOSTS(然后调用原始/Developer/usr/bin/distcc 二进制文件,您可以将其重命名为其他名称)。请注意,Xcode 为每个编译单元调用 /Developer/usr/bin/distcc 并在每次调用之前设置 DISTCC_HOSTS,因此您需要使用此伪装脚本来覆盖 Xcode。

  • 我自己的distcc脚本简单如下(我把原来的distcc二进制重命名为distcc.orig):

    #!/bin/sh
    export DISTCC_HOSTS="--randomize your list of hosts, each followed by ',cpp,lzo'"
    /Developer/usr/bin/distcc.orig "$@"
    exit $?
    

DISTCC_HOSTS 中有很多选项可以调整,特别是关于使用您自己的本地主机也进行一些编译而不是将所有内容外包出去,但以上至少应该让您开始。最适合您的方法显然取决于您自己的 Mac 硬件和网络性能。

根据我自己的经验,在相对较慢的网络上使用由几台四核 Mac 和我自己的双核 Mac 组成的分布式构建服务器设置将整个设备重新构建时间从大约 15 分钟缩短到大约 5 个。

关于iphone - 是否可以使用 distcc 构建 iPhone 设备版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6151434/

相关文章:

iphone - 在iphone应用程序开发中如何添加两个uiimageview并将其保存到iphone照片库?

iphone - 如何使用蓝牙连接两部iPhone?

IOS如何获取Facebook扩展权限对话框

ios - XCode 链接器错误 - 无法识别定义的函数

iOS : Size classes issue

iPhone:20 分钟后 MapView 中的应用程序崩溃

ios - 如何使用 TeamCity 为 iOS 构建使用配置证书

ios - Xcode中的框架图标颜色

objective-c - 当用户单击 View 的背景时,如何使键盘消失?

ios - 裁剪 UIImage 的中心正方形