【问题标题】:XCFramework with static frameworks sub dependencies具有静态框架子依赖项的 XCFramework
【发布时间】:2020-11-02 07:28:01
【问题描述】:

我有一个依赖于几个静态框架的 XCFramework。

我的 XCFramework 是在启用 BUILD_FOR_LIBRARIES_FOR_DISTRIBUTION 的情况下构建的。

不需要从 XCFramework 外部访问子框架。

当我尝试在客户端(主机)应用程序中编译我的 XCFramework 时,我在 XCFramework 的 .swiftinterface 文件中收到错误消息 No such module 'FBSDKLoginKit'(FBSDKLoginKit 是 XCFramework 子框架之一)

似乎缺少的是依赖模块的 swiftinterface 文件。例如,我正在使用 FBSDKLoginKit,但 XCFramework 中没有 swiftinterface。

作为参考,我正在编译框架如下:

xcodebuild archive -project "TestFrameowrk.xcodeproj" -scheme "TestFrameowrk" -sdk iphoneos -archivePath ~/Desktop/xcframework.arm SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES

xcodebuild archive -project "TestFrameowrk.xcodeproj" -scheme "TestFrameowrk" -sdk iphonesimulator -archivePath ~/Desktop/xcframework.x86 SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES

xcodebuild -create-xcframework -framework ~/Desktop/xcframework.x86.xcarchive/Products/Library/Frameworks/TestFrameowrk.framework  -framework ~/Desktop/xcframework.arm.xcarchive/Products/Library/Frameworks/TestFrameowrk.framework -output ~/Desktop/Framework.xcframework

【问题讨论】:

  • 你能解决这个问题吗?我正在尝试做类似的事情。是在客户端添加依赖的唯一方法吗?
  • 我在 xcode 12.4 上的静态框架也遇到过类似的问题。 deps 是通过客户端 podfile 实现的,但它只适用于动态框架。 static 在链接时给出No such module 错误或Undefined symbol

标签: swift xcode frameworks xcframework static-framework


【解决方案1】:

当您与客户端项目集成时,您是否尝试使用您创建的 XCFramework 单独添加其他依赖项?看起来,苹果建议避免将伞形/嵌套框架与 XCFramework 一起使用。

【讨论】:

    【解决方案2】:

    是的,我遇到了与 alamofire 依赖项相同的问题。所以发生的事情是当你生成 xcframeworks 时,你对 FBSDKLoginKit 有依赖关系。但是在生成您的客户想要使用的框架之后。您还必须提到依赖关系为具有相同版本的 FBSDKLoginKit,然后这个问题就不会发生。对我来说,我在客户端添加 alamofire 添加后解决了。

    【讨论】:

      猜你喜欢
      • 2021-02-15
      • 2014-01-22
      • 2020-05-21
      • 2021-08-04
      • 2021-02-19
      • 2012-12-21
      • 1970-01-01
      • 1970-01-01
      • 2019-10-13
      相关资源
      最近更新 更多