在子框架中使用第三方框架并在应用中链接

时间:2018-08-06 14:16:58

标签: ios swift xcode frameworks opentok

我的问题与Use third party framework which is embedded in dynamic framework非常相似,除了我的框架是子框架,而我无法使其工作。...

我在核心框架A中使用了第三方库OpenTokSDK。然后,我有了另一个框架B,它使用并增强了框架A。最后,其他人会在App中使用框架A和B。

我将OpenTokSDK.framework的位置添加到了框架A和框架B的XCode中的“框架搜索路径”中。如果我不将其添加到框架B中,则会出现警告:“找不到自动链接框架”

然后我在应用程序内部使用框架A和B而不向应用程序添加OpenTokSDK框架时,它抱怨找不到模块OpenTokSDK。这对我来说很明显,因为它现在想链接它。将其添加到应用程序后,它们都可以很好地编译,但是在启动应用程序时,我在控制台中收到有关某些OpenTok类的重复实现的消息。例如: objc[2310]: Class OTCGVideoRender is implemented in both A.framework/A and TestApp.app/TestApp. One of the two will be used. Which one is undefined.

显然,XCode已经在框架A内链接了OpenTokSDK,我不知道如何防止这种情况。我尝试在“使用库链接二进制文件”阶段添加OpenTokSDK,并将其设置为可选,并在构建设置中禁用了“自动链接框架”,但是没有用。

我可以做的是防止符号重复,是从框架B搜索路径中删除OpenTokSDK。如前所述,然后我得到警告“找不到自动链接模块”,但实际上它可以编译。然后在应用程序中,我可以删除OpenTokSDK,并在框架A内使用它。但是我不确定是否可以像这样将其提交到应用程序商店,因为我猜不允许这样做子框架连接。

所以主要问题是,如何防止框架A包含OpenTokSDK?我可以设置一些标志来构建框架A还是OpenTokSDK的问题?

我正在使用Xcode 9.4.1

0 个答案:

没有答案