如何在Xcode 10的`xcodebuild`中使用旧版构建系统?

时间:2018-07-06 07:33:01

标签: xcode continuous-integration xcodebuild xcode10

我想使用Xcode 10的新构建系统进行开发,但是我们在持续集成系统中的构建失败,因为产生的xcarchive存在问题:{{ 1}}缺少Info.plist键及其中的信息!

事实证明,切换回旧版构建系统可以解决此问题。这可以在工作空间设置(文件>工作空间设置…>构建系统)中完成。但是我宁愿保留新的构建系统进行开发,而仅将旧的构建系统用于CI构建。

是否有一种方法可以使xcarchive使用旧版构建系统而不修改工作区?

5 个答案:

答案 0 :(得分:64)

xcodebuild中有一个{尚未记录的)标志:-UseModernBuildSystem=<value>。该值可以是0NO以使用旧的(“原始”)构建系统,也可以是1YES以使用新的构建系统。

例如:

xcodebuild -workspace Foo.xcworkspace -scheme Bar -configuration Release -archivePath /path/to/Foo.xcarchive clean archive -UseModernBuildSystem=NO

({-UseNewBuildSystem=<value>似乎也可以工作;该标志是Xcode 9中引入的,但我怀疑UseModernBuildSystem将会是对此的“正式”标志。)

答案 1 :(得分:21)

要扩展DarkDust的answer,如果您使用 fastlane 进行自动构建,则可以通过UseModernBuildSystem传递其他参数,例如xcargs:< / p>

build_app(
   // ... other necessary parameters,
   xcargs: "-UseModernBuildSystem=NO"
)

答案 2 :(得分:8)

要选择Xcode 10的构建系统,请执行以下操作:

在Xcode中,转到:文件->项目设置(或工作区设置)->构建系统

从那里您可以选择New Build System (Default)Legacy Build System

希望此帮助使操作变得更容易。

答案 3 :(得分:7)

将构建系统从Legacy Build System更改为New Build System,反之亦然。

打开Xcode->选择文件->选择工作区设置

enter image description here

将构建系统从新构建系统更改为旧版构建系统->单击完成。

enter image description here

答案 4 :(得分:0)

当前,我正在使用Xcode版本 12.0 (12A7209),并按照以下步骤操作,然后可以使用旧版构建模式:

  1. 工作区设置:

    enter image description here

  2. 设置旧版构建模式:

    enter image description here