Reputation: 92335
I'd like to use the new build system of Xcode 10 for development, but our build in our continuous integration system fails since the xcarchive
produced has an issue: the Info.plist
in the xcarchive
is missing the ApplicationProperties
key and the information therein!
It turns out switching back to the legacy build system fixes this. This can be done in the workspace settings (File > Workspace Settings… > Build System). But I would prefer to keep the new build system for development and only use the legacy build system for CI builds.
Is there a way to make xcodebuild
use the legacy build system without modifying the workspace?
Upvotes: 82
Views: 98306
Reputation: 32522
Currently, I'm using Xcode version 12.0 (12A7209) and follow the below steps and then you can use legacy build mode:
Upvotes: 14
Reputation: 17902
Change build system to Legacy Build System
from New Build System
and vice versa.
Open Xcode --> Select File -->Select Workspace Settings
Change Build System to Legacy Build System from New Build System --> Click Done.
Upvotes: 51
Reputation: 611
To select Xcode 10's build system:
In Xcode, go to: File -> Project Settings (or Workspace Settings)-> Build System
From there you can select New Build System (Default)
or Legacy Build System
Hope this help makes this easier.
Upvotes: 38
Reputation: 580
To extend DarkDust's answer, in case you're using fastlane for automated builds, additional parameters such as UseModernBuildSystem
can be passed through xcargs
:
build_app(
// ... other necessary parameters,
xcargs: "-UseModernBuildSystem=NO"
)
Upvotes: 39
Reputation: 92335
There is an (as of yet undocumented) flag in xcodebuild
: -UseModernBuildSystem=<value>
. The value can be either 0
or NO
to use the legacy ("original") build system, or 1
or YES
to use the new build system.
For example:
xcodebuild -workspace Foo.xcworkspace -scheme Bar -configuration Release -archivePath /path/to/Foo.xcarchive clean archive -UseModernBuildSystem=NO
(-UseNewBuildSystem=<value>
seems to work as well; this flags was introduced in Xcode 9 but I suspect UseModernBuildSystem
is going to be the "official" flag for this.)
Upvotes: 114