类GAD_GTMStringEncoding在<framework>和<app>中实现。将使用两者之一。哪一个未定义

时间:2017-03-07 13:43:43

标签: ios xcode conflicting-libraries google-ima

我在Xcode中有一个iOS项目。它包含大量链接库,包括GoogleInteractiveMediaAds.framework以及内部播放器库,我相信它也与此框架相关联。两者都是嵌入式二进制文件。

项目编译得很好,但在运行时我收到以下错误:

  

类GAD_GTMStringEncoding在两者中实现   /GoogleInteractiveMediaAds.framework/GoogleInteractiveMediaAds   和APP_PATH。将使用两者之一。哪一个未定义。

在模拟器上,尽管有这样的警告,应用程序每次都按预期工作 - 我得到了我期待的前贴片广告,视频插播广告和后贴片广告。每次。在设备上它是一个不同的故事,广告有时工作,有时不工作。我知道上述问题导致不同目标的行为不同,我怀疑这种冲突是设备功能损坏的原因。

我在SO上找到的解决方案建议更改名称空间或从我的应用程序或我链接的库中删除链接。问题是,如果我在项目中删除嵌入式二进制文件,则无法编译:

  

dyld:未加载库:
  @是rpath / GoogleInteractiveMediaAds.framework / GoogleInteractiveMediaAds
   参考自:APP_PATH
   原因:未找到图像
  (LLDB)

我已经看到一些人建议从应用程序中删除链接并使用播放器的内部实例(我必须希望播放器针对我需要的版本进行编译) ),但你到底怎么做?在这种情况下,这甚至会起作用吗?

此外,有没有办法确定GoogleInteractiveMediaAds.framework的其他实例来自哪里?我只是假设它在内部播放器库中,但我不确定,因为我没有源。错误消息只是为我提供了编译应用程序的路径,因为它里面有30个链接库,所以它没什么帮助。

提前致谢。

1 个答案:

答案 0 :(得分:0)

在最初坚持认为该问题出现在我们的代码中之后,负责此框架的Google团队最终被迫承认(在我们提供示例应用程序之后),这是他们的代码而不是我们的代码的问题。它已在更新中得到解决。