将 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' 有啥区别
使用 AdMob SDK 调用 DFP 时出现无效的广告请求