我知道以前有人问过这个问题,但我已经尝试了我能找到的所有东西,但都没有奏效。
我有一个功能齐全的 iOS 应用,现在我想与它集成 AdMob 网络中介。我已经成功地让 AdMob 正常工作,但调解器需要设置链接器“-all_load”和“-ObjC”(在其他链接器标志中)。果然,如果我在没有它们的情况下构建,则不会显示任何广告,并且在日志中说它需要设置它们。
问题是我无法使用 all_load 或 ObjC 集成功构建我的应用程序。我读到 iOS 应用程序不需要 ObjC,但即使没有它,我仍然遇到 all_load 的问题。问题是我收到此错误:
ld:架构armv7 clang的重复符号[此处的某些命令] [某些静态库]和[相同命令的路径]:错误:链接器命令失败,退出代码为1(使用-v查看调用)
如果我删除了有问题的静态库并重建,错误只会转移到我拥有的下一个静态库,依此类推。由于我正在尝试安装广告中介,因此我的应用需要安装来自不同广告网络的多个静态库。
以下是我尝试过的一些失败的解决方案:
- 为 armv6 而不是 armv7 编译(反正不是一个理想的修复,因为我都想要)
- 用 force_load [库路径] 替换 all_load,并在实际的 iOS 设备上进行测试,因为显然这种方法本身不适用于模拟器(这似乎没有任何作用,我遇到了完全相同的问题,使用相同的路径无论如何都在错误中找到)
- 删除 all_load(构建,但就像我说的,AdMob 中介需要它)
- 删除有问题的库(显然不起作用,因为该错误抱怨我需要的每一个静态库)
任何帮助都可以解决这个问题。
编辑:我的问题的解决方案
事实证明,我唯一没有尝试的只是在实际设备上使用 -ObjC,这似乎对我有用!
EDIT2:没关系,仍然有问题
当被问及哪些静态库导致我出现问题时,我将在下面引用我的评论:
“好吧,通过排除 all_load 并仅包括 ObjC,我让 AdMob 中介在没有任何其他网络的情况下工作,在我添加我的第一个网络 Adfonic 之前它工作正常,该网络目前与 MobileAppTracking 冲突,我得到:ld:重复符号 _OBJC_IVAR_$_Reachability [path]/Adfonic SDK/libAdfonic.a(Reachability.o) 和 [path]/Objects-normal/armv6/Reachability.o 中的 .reachabilityRef 用于架构 armv6 clang:错误:链接器命令失败,退出代码为 1(使用 -v查看调用)”
我通过删除所有其他广告网络库来使用 Admob Mediator 的基本功能,但是在我的第一个第三方网络集成中,我遇到了另一个与我已经实现的跟踪库 MobileAppTracking 之间的冲突。仍在寻找解决“重复符号”的解决方案。
编辑 3
我可以确认,我尝试使用 AdMob 中介器的每个广告网络(AdMob 本身除外)都无法编译,其中大部分是由于重复符号错误。我不明白这是怎么回事,因为我确定我不是唯一使用 Admob 中介服务的人。
编辑 4
我将在下面引用我的评论:
“我实际上设法让大多数广告网络和库为我工作,我不得不在 Compile Sources 下删除很多引用,但我仍然编译它,仍然使用 -ObjC 和 -all_load!”