Ich möchte das neue Buildsystem von Xcode 10 für die Entwicklung verwenden, aber unser Build in unserem kontinuierlichen Integrationssystem schlägt fehl, da die erzeugte xcarchive
ein Problem aufweist: Der Info.plist
in der xcarchive
enthält den ApplicationProperties
-Schlüssel und die darin enthaltenen Informationen!
Es stellt sich heraus, dass das Umschalten auf das alte Build-System dies behebt. Dies kann in den Arbeitsbereichseinstellungen (Datei> Arbeitsbereichseinstellungen…> System erstellen) erfolgen. Ich würde es jedoch vorziehen, das neue Buildsystem für die Entwicklung zu behalten und nur das alte Buildsystem für CI-Builds zu verwenden.
Gibt es eine Möglichkeit, xcodebuild
das veraltete Build-System zu verwenden, ohne den Arbeitsbereich zu ändern?
In xcodebuild
: -UseModernBuildSystem=<value>
gibt es ein (noch nicht dokumentiertes) Flag. Der Wert kann entweder 0
oder NO
sein, um das alte ("ursprüngliche") Erstellungssystem zu verwenden, oder 1
oder YES
, um das neue Erstellungssystem zu verwenden.
Zum Beispiel:
xcodebuild -workspace Foo.xcworkspace -scheme Bar -configuration Release -archivePath /path/to/Foo.xcarchive clean archive -UseModernBuildSystem=NO
(-UseNewBuildSystem=<value>
scheint auch zu funktionieren; diese Flaggen wurden in Xcode 9 eingeführt, aber ich vermute, dass UseModernBuildSystem
die "offizielle" Flagge dafür sein wird.)
Um DarkDusts answer zu erweitern, falls Sie fastlane für automatisierte Builds verwenden, können zusätzliche Parameter wie UseModernBuildSystem
durch xcargs
übergeben werden:
build_app(
// ... other necessary parameters,
xcargs: "-UseModernBuildSystem=NO"
)
So wählen Sie das Buildsystem von Xcode 10 aus:
Gehen Sie in Xcode zu: Datei -> Projekteinstellungen (oder Arbeitsbereichseinstellungen) -> System erstellen
Von dort aus können Sie New Build System (Default)
oder Legacy Build System
auswählen.
Hoffe, diese Hilfe macht das einfacher.