iOS Admob网络中介:使用all_load和ObjC重复符号错误

时间:2012-04-27 00:06:25

标签: ios xcode admob linker-errors armv7

我知道之前已经问过这个问题,但是我已经尝试了所有我能找到的东西,而且没有一个有效。

我有一个功能齐全的iOS应用程序,我现在想要将AdMob网络中介与。我已经成功地让AdMob正常工作,但Mediator需要连接器' -all_load'和' -ObjC'待设置(在其他链接标志中)。如果我在没有它们的情况下构建,确实没有显示广告,并且在日志中它表示需要设置它们。

问题是我无法使用all_load或ObjC设置成功构建我的应用程序。我读到ObjC对iOS应用程序来说并不是必需的,但即使没有它,我仍然遇到all_load的问题。问题是我收到了这个错误:

ld:复制符号[这里有一些命令] [一些静态库]和[相同命令的路径]用于架构armv7 clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

如果我删除有问题的静态库并重建,则错误只会移动到我拥有的下一个静态库,依此类推。由于我正在尝试安装广告中介,我的应用需要来自不同广告网络的多个静态库。

以下是我尝试失败的一些解决方案:

  • 为armv6编译,而不是armv7(无论如何都不是理想的修复,因为我想要两者)
  • 用force_load替换all_load [库的路径],并在实际的iOS设备上进行测试,因为显然这种方法无论如何都无法使用模拟器(这似乎没有做任何事情,我得到的确切同样的问题,无论如何都使用错误中找到的相同路径)
  • 删除all_load(版本,但就像我说的,AdMob Mediation需要它)
  • 删除有问题的库(显然不起作用,因为错误会引起我需要的每一个静态库)

在解决此问题时,我们非常感谢您。

编辑:我的问题的解决方案

事实证明,我唯一没有尝试的只是在实际设备上使用-ObjC,这似乎对我有用!

EDIT2:NEVERMIND,仍然有麻烦

当被问及静态库导致我出现问题时,我会在下面引用我的评论:

"我通过排除all_load并且只包括ObjC让AdMob Mediation在没有任何其他网络的情况下工作,这是正常工作,直到我添加了我的第一个网络,Adfonic,目前与MobileAppTracking相冲突,我得到: ld:[path] / Adfonic SDK / libAdfonic.a(Reachability.o)​​中的重复符号_OBJC_IVAR _ $ _ Reachability.reachabilityRef和架构armv6 clang的[path] /Objects-normal/armv6/Reachability.o:错误:链接器命令失败退出代码1(使用-v查看调用)"

通过删除所有其他广告网络库,我有Admob Mediator的工作,但是在我的第一个第三方网络集成中,我和我实施的跟踪库之间发生了另一个冲突,MobileAppTracking。仍在寻找解决问题的解决方案'。

编辑3

我可以确认,我尝试使用AdMob Mediator的每个广告网络(AdMob本身除外)都无法编译,其中大多数是由于重复的符号错误。我不明白这是怎么回事,因为我确定我不是唯一使用Admob的中介服务的人。

编辑4

我引用下面的评论:

"我实际上设法让大多数广告网络和图书馆都在为我工作,我不得不在Compile Sources下删除相当多的引用,但是我得到了它编译得非常少,仍然使用 - ObjC和-all_load!"

6 个答案:

答案 0 :(得分:2)

你可以用 -force_load“path / to / your / libGoogleAdMobAds.a” 而不是-all_load,这将仅加载您的libGoogleAdMobAds

答案 1 :(得分:2)

请删除SKD文件夹中的add-one文件夹

答案 2 :(得分:1)

添加名为“EXCLUDED_SOURCE_FILE_NAMES”的用户定义的构建设置: 如this article所示,或修改.a文件,如this article所示。

答案 3 :(得分:1)

您是否找到了解决该问题的方法?

我只是删除-all_load param,我的应用程序在我的设备上运行良好。 但我不确定这个伎俩。

答案 4 :(得分:0)

我遇到了同样的问题。在其他链接器中添加-ObjC后,我无法编译(它抱怨重复的符号和可达性。)。删除它会让我编译,但AdMob正在崩溃应用程序。

经过大量测试并玩了很多参数后,我做了以下工作,现在正在运行: 我去了目标 - > AppName - >构建阶段 - >编译源并删除Reachability.m。 编译得很好,AdMod也在不崩溃的情况下工作。

答案 5 :(得分:0)

删除“附加”文件夹中除“中介”文件夹以外的所有文件夹。

它对我有用。