8

我知道以前有人问过这个问题,但我已经尝试了我能找到的所有东西,但都没有奏效。

我有一个功能齐全的 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!”

4

6 回答 6

2

您可以使用 -force_load "path/to/your/libGoogleAdMobAds.a" 而不是 -all_load,这只会加载您的 libGoogleAdMobAds

于 2012-04-27T09:37:29.307 回答
2

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

于 2012-08-03T14:54:50.810 回答
1

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

于 2012-05-22T11:29:04.890 回答
1

你找到解决这个问题的方法了吗?

我只是删除了 -all_load 参数,我的应用程序在我的设备上运行良好。但我不确定这个技巧。

于 2013-07-24T10:56:13.607 回答
0

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

经过大量测试和使用大量参数后,我执行了以下操作,现在它正在工作:我去了 Targets -> AppName -> Build Phases -> Compile Sources 并删除了 Reachability.m。它编译得很好,而且 AdMod 也可以正常工作而不会崩溃。

于 2012-12-27T11:57:47.870 回答
0

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

这个对我有用。

于 2013-02-07T17:36:29.897 回答