5

我在任何地方都看不到这个文档——有人知道我们如何使用 xcodebuild 为 Mac 的 UIKIt(即 Catalyst)构建一个项目吗?

您可以指定“-sdk iphoneos”与“-sdk iphonesimulator”在这两个目标之间切换,但“-sdk uikitformac”似乎不起作用(“未找到 SDK”),尽管 Xcode 本身使用该命名法(例如,它构建到“Debug-uikitformac”文件夹等)。我还尝试了可能有意义的不同 SDK 值(例如“-sdk macabi”),但无济于事。

建议?

4

3 回答 3

17

将脚本文件添加到您的项目文件夹:

SCHEME=TestFramework \
ARCHS=~/Documents/Archives \

SCHEME是 Xcode 中构建方案的名称。

让我们构建 macCatalyst 存档:

#----- Make macCatalyst archive
xcodebuild archive \
-scheme $SCHEME \
-archivePath $ARCHS/macCatalyst.xcarchive \
-sdk macosx \
SKIP_INSTALL=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES SUPPORTS_MACCATALYST=YES

您还可以添加其他平台,如 iOS 设备或模拟器:

#----- Make iOS Simulator archive
xcodebuild archive \
-scheme $SCHEME \
-archivePath $ARCHS/simulator.xcarchive \
-sdk iphonesimulator \
SKIP_INSTALL=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES

#----- Make iOS device archive
xcodebuild archive \
-scheme $SCHEME \
-archivePath $ARCHS/iosdevice.xcarchive \
-sdk iphoneos \
SKIP_INSTALL=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES

要在 XCFramework 中包含所有内容,请使用:

#----- Make XCFramework
xcodebuild -create-xcframework \
-framework $ARCHS/simulator.xcarchive/Products/Library/Frameworks/$SCHEME.framework \
-framework $ARCHS/iosdevice.xcarchive/Products/Library/Frameworks/$SCHEME.framework \
-framework $ARCHS/macCatalyst.xcarchive/Products/Library/Frameworks/$SCHEME.framework \
-output ~/Documents/$SCHEME.xcframework

运行后,您将在 Documents 文件夹中找到您的 XCFramework。

于 2019-08-07T21:21:53.830 回答
7

尝试:

xcodebuild -configuration "Debug" ARCHS="x86_64h" \
  -destination 'platform=macOS,variant=Mac Catalyst' \
  -project "MyApp.xcodeproj"

(注意架构上额外的“h”)

于 2019-11-05T02:42:05.837 回答
2

我用它来构建一个包含 Mac Catalyst 框架的 XCFramework

XCFramework 和 Mac Catalyst

于 2019-07-30T09:14:36.663 回答