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

Ste*_*mer 13 iphone xcode ios distcc

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

那么,让Xcode使用分布式构建机制进行设备构建是否有任何神奇之处?任何人都对这个甚至一些实践经验有明确的评价?

除非您了解分布式构建和Xcode的主题,否则请不要进行downvote或close.这不是关于签署分发的noobie问题.

小智 8

我们还发现Xcode 3.2.5不会分发Device构建,而Simulator构建版本与distcc一起正确分发,尽管在Xcode Preferences - > Distributed Builds下设置了所有必要的选项.

但是,可以解决Xcode的限制并强制它也分发设备构建.看起来苹果的疏忽(错误!)他们默认没有启用Device分布式构建.

您需要采取的步骤如下:

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

    write com.apple.Xcode PBXNumberOfParallelBuildSubtasks 16 或者Xcode 4.2 defaults write com.apple.dt.Xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks 16

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

  • 您需要设置自己的DISTCC_HOSTS环境变量值,如distcc手册页中所述.

  • 为此,您需要在自己的脚本中设置DISTCC_HOSTS/Developer/usr/bin/distcc(然后调用原始/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 $?
    
    Run Code Online (Sandbox Code Playgroud)

DISTCC_HOSTS中有很多选项可以调整,特别是关于使用你自己的localhost也可以进行一些编译而不是将所有东西都用完,但上面的内容至少应该让你开始.最适合您的方法显然取决于您自己的Mac硬件和网络性能.

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