具有静态框架子依赖项的XCFramework

时间:2020-07-13 06:10:53

标签: swift xcode frameworks xcframework static-framework

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

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

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

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

似乎缺少从属模块的swiftinterface文件。例如,我正在使用FBSDKLoginKit,但是XCFramework中没有swift接口。

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

是的,我在alamofire依赖方面也遇到了同样的问题。所以发生的是,当您生成xcframeworks时,您对FBSDKLoginKit fine有依赖性。但是,在生成客户端要使用的框架之后,还必须将依赖项作为具有相同版本的FBSDKLoginKit提及,然后就不会发生此问题。对我来说,我在客户端添加了alamofire之后解决了。