【问题标题】:Using `xcodebuild` to do a command line builds for Catalyst/UIKit for Mac?使用 `xcodebuild` 为 Mac 的 Catalyst/UIKit 进行命令行构建?
【发布时间】:2019-07-10 20:57:39
【问题描述】:

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

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

建议?

【问题讨论】:

    标签: xcodebuild mac-catalyst


    【解决方案1】:

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

    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。

    【讨论】:

    • 这是为 macCatalyst 构建 xcframeworks 的最佳方式。
    • SCHEME is the name of build scheme in Xcode. 想把第三方框架做成xcframework怎么办?在这种情况下我不能使用SCHEME,因为它实际上不是 Xcode 中的方案。
    【解决方案2】:

    试试:

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

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

    【讨论】:

      【解决方案3】:

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

      XCFramework and Mac Catalyst

      【讨论】:

      • 如果可以的话,您应该在答案中提供核心细节以及链接
      • -destination 'platform=macOS,arch=x86_64,variant=Mac Catalyst'thanx!我会尝试并报告!
      猜你喜欢
      • 1970-01-01
      • 2020-05-11
      • 1970-01-01
      • 2012-01-14
      • 2021-02-28
      • 2020-03-03
      • 2011-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多