将 Google AdMob SDK 从 7.7.0 更新到 7.8.0 未定义符号错误

Posted

技术标签:

【中文标题】将 Google AdMob SDK 从 7.7.0 更新到 7.8.0 未定义符号错误【英文标题】:Updating Google AdMob SDK from 7.7.0 to 7.8.0 Undefined Symbols Error 【发布时间】:2016-05-02 06:27:10 【问题描述】:

我已将我的 Google AdMob SDK 从 7.7.0 更新到 7.8.0。之后我收到此错误:

架构 x86_64 的未定义符号: “_OBJC_CLASS_$_SFSafariViewController”,引用自: GoogleMobileAds 中的 objc-class-ref(flat-x86_64)

ld:未找到架构 x86_64 的符号 clang:错误:链接器 命令失败,退出代码为 1(使用 -v 查看调用)

我已经添加了所有这些框架:

AdSupport,
AudioToolbox,
AVFoundation,
CoreGraphics,
CoreMedia,
CoreTelephony,
EventKit,
EventKitUI,
MediaPlayer,
MessageUI,
StoreKit,
SystemConfiguration

在我更新此 SDK 之前,它运行良好。这是在构建阶段的框架搜索路径中

$(继承)

$(PROJECT_DIR)/SDK

$(PROJECT_DIR)

$(PROJECT_DIR)/SDKs/GoogleMobileAdsSdkiOS-7.8.0

【问题讨论】:

Undefined symbols for architecture arm64 "_OBJC_CLASS_$_SFSafariViewController"的可能重复 错误不同。这是针对 Google 登录的,而我的错误针对的是 Google AD Mob 包含SafariServices framework并检查一次 我试过了,还是一样的错误 在设备中运行一次并检查 【参考方案1】:

我已添加: SafariServices.framework CoreBluetooth.framework 它正在工作

【讨论】:

它对我有用。这有点奇怪。我在同一个工作区上的许多目标具有几乎相同的项目结构。其中只有一个需要SafariServices和CoreBluetooth,这个使用“FBSDKLoginKit”,其他不需要。【参考方案2】:

在 7.8.0 版本中添加了对框架 CoreBluetooth 和 SafariServices 的新依赖项,因此这次添加这些解决了问题。

GoogleMobileAds SDK(又名 AdMob SDK)有很多依赖项,并且它们会在后续版本中添加(有时会删除)。例如,javascriptCore 框架是一个新的依赖项,从 2016 年 10 月 17 日发布的 7.13.0 版本开始。如果您再次遇到此问题,请在发行说明日志中检查框架依赖项的更新:

https://firebase.google.com/docs/admob/release-notes

【讨论】:

希望链接有效,但 Google 经常更改他们的文档,它是 404

以上是关于将 Google AdMob SDK 从 7.7.0 更新到 7.8.0 未定义符号错误的主要内容,如果未能解决你的问题,请参考以下文章

在科尔多瓦上使用 admob 的 Google 同意 SDK

iOS - pod 'Google-Mobile-Ads-SDK' 和 pod 'Firebase/AdMob' 有啥区别

Facebook admob 中介 SDK 导致崩溃

使用 AdMob SDK 调用 DFP 时出现无效的广告请求

iOS - Swift Google AdMob SDK 如何在 UITableView 的重复项目中显示不同的广告?

admob sdk