我怎样才能将遗留构建系统与 Xcode 10 的 `xcodebuild` 一起使用?

How can I use the legacy build system with Xcode 10's `xcodebuild`?

我想使用 Xcode 10 的新构建系统进行开发,但是我们在持续集成系统中的构建失败了,因为生成的 xcarchive 有一个问题:Info.plistxcarchive 中缺少 ApplicationProperties 键和其中的信息!

事实证明,切换回旧版构建系统可以解决此问题。这可以在工作区设置中完成(文件 > 工作区设置... > 构建系统)。但我更愿意保留新的构建系统用于开发,只使用遗留构建系统进行 CI 构建。

有没有办法让 xcodebuild 在不修改工作区的情况下使用遗留构建系统?

xcodebuild 中有一个(截至目前尚未记录的)标志:-UseModernBuildSystem=<value>。该值可以是 0NO 以使用旧版 ("original") 构建系统,或 1YES 以使用新构建系统。

例如:

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

(-UseNewBuildSystem=<value> 似乎也有效;此标志是在 Xcode 9 中引入的,但我怀疑 UseModernBuildSystem 将成为 "official" 标志。 )

为了扩展 DarkDust 的 ,如果您使用 fastlane 进行自动构建,可以通过 [=] 传递其他参数,例如 UseModernBuildSystem 12=]:

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

至select Xcode 10 的构建系统:

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

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

希望这些帮助可以让这更容易。

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

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

将构建系统从新构建系统更改为遗留构建系统 --> 单击“完成”。

目前我使用的是Xcode版本12.0(12A7209)然后按照下面的步骤就可以了使用传统构建模式:

  1. 工作区设置:

  2. 设置遗留构建模式: