【问题标题】:Create ios Swift Framework independent of Xcode Compiler Version创建独立于 Xcode 编译器版本的 ios Swift 框架
【发布时间】:2020-08-30 13:41:52
【问题描述】:

我们有一个聊天 API 框架。我们通过 cocoapods 提供 .framework 文件,因为我们不想显示代码。我们面临的问题是我们必须为每个 Xcode 版本创建 .framework 文件,因为每个 Xcode 都有不同的编译器版本

11.0 => 5.1 (swiftlang-1100.0.270.13 clang-1100.0.33.7)

11.1 => 5.1 (swiftlang-1100.0.270.13 clang-1100.0.33.7)

11.2 => 5.1.2 (swiftlang-1100.0.278 clang-1100.0.33.9)

11.3 => 5.1.3 (swiftlang-1100.0.282.1 clang-1100.0.33.15)

11.3.1 => 5.1.3 (swiftlang-1100.0.282.1 clang-1100.0.33.15)

11.4 => 5.2 (swiftlang-1103.0.32.1 clang-1103.0.32.29)

11.4.1 => 5.2.2 (swiftlang-1103.0.32.6 clang-1103.0.32.51)

当我们尝试在 Xcode 11.0 中导入使用 Xcode 11.4 构建的框架时,它会给出错误“使用 Swift 5.2 编译器编译的模块无法在编译器 5.1 中导入”

任何解决方案,因为我们不能要求我们的客户更改 Xcode 版本。

【问题讨论】:

  • 你为什么不找到你想要支持的最小 swift 版本(检查你的用户群,找到他们正在使用你的框架的最低 swift 版本)并坚持下去,直到你找到一些范式转变的变化在最新的 swift 版本中。万一您必须切换到最新的 swift 版本,而不是将其设为您支持的最小 swift 版本。
  • @SandeepBhandari 这与 Swift 版本无关。我们将 Swift 版本设置为 4.2。它是关于 Xcode 编译器版本来编译框架的。

标签: ios swift frameworks cocoapods xcode11


【解决方案1】:

您可以通过 XCFramework 分发您的框架,它是在 WWDC19 上引入的。

创建XCFramework的代码如下,

  1. 为 iOS 平台创建存档

     xcodebuild archive -workspace {YourWorkspace}.xcworkspace \
       -scheme {Scheme} \
       -sdk iphoneos \
       -archivePath "./archives/ios_devices.xcarchive" \
       BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
       SKIP_INSTALL=NO | xcpretty
    
  2. 为 iOS-Simulator 平台创建存档

    xcodebuild 归档 -workspace YourWorkspace.xcworkspace
    -scheme {方案}
    -sdk iphonesimulator
    -archivePath "./archives/ios_simulators.xcarchive"
    BUILD_LIBRARY_FOR_DISTRIBUTION=是
    跳过安装=否 |很漂亮

  3. 从档案创建 XCFramework

    xcodebuild -create-xcframework
    -framework ./archives/ios_devices.xcarchive/Products/Library/Frameworks/{你的框架}.framework
    -framework ./archives/ios_simulators.xcarchive/Products/Library/Frameworks/{你的框架}.framework
    -输出构建/{你的框架}.xcframework |很漂亮

how to build xcframework

WWDC video

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多