Xcode中Google Mobile Ads SDK初始化缺失AppMeasurement报错求助
问题描述
我每月更新用Unity开发的iOS应用,之前一直正常,一周前启动时突然崩溃,报错信息如下:
终止应用,未捕获异常'GADInvalidInitializationException',原因:'The Google Mobile Ads SDK was initialized without AppMeasurement.'(Google AdMob发布者需按指定链接配置AppMeasurement框架及-ObjC链接器标志)
iPhone和iPad测试均出现该错误。因在Windows系统构建,不使用CocoaPods,导出Xcode项目到Mac后手动添加两个包:
- Google Mobile Ads(Swift Package Manager仓库)
- Firebase iOS SDK
之前沿用数月的配置流程:
- 将上述包添加到项目框架
- 关闭Bitcode
- 在
info.plist中添加键GADIsAdManagerApp(Bool类型,值为True)
当前使用的SDK版本:
- GoogleMobileAds 10.13.0
- Firebase 10.17.0
- GoogleAppMeasurement 10.17.0
想确认三个问题:
- 这是Google SDK的bug吗?
- 新版本SDK的配置流程是否有变更?
- 有没有其他开发者遇到过相同问题?
可能的解决方向
1. 检查AppMeasurement依赖关联
手动添加SPM包时,可能存在版本匹配或依赖关联失效的情况:
- 删除已添加的SPM包,重新添加时让GoogleMobileAds自动拉取匹配的AppMeasurement版本,而非手动指定版本
- 确认Xcode的
Frameworks, Libraries, and Embedded Content中,GoogleAppMeasurement设置为Embed & Sign状态
2. 验证-ObjC链接器标志
报错明确要求配置该标志,检查Xcode项目Build Settings → Other Linker Flags是否确实添加了-ObjC。项目重置或Xcode更新可能导致该标志丢失。
3. 排查Unity导出配置变化
Unity导出Xcode项目时的配置可能因版本更新改变:
- 确认Unity端AdMob插件版本与iOS端GoogleMobileAds版本兼容
- 检查Unity导出设置中是否存在禁用框架嵌入的选项
4. 验证版本兼容性
已有部分开发者反馈10.13.0版本的GoogleMobileAds在手动SPM配置下出现AppMeasurement关联问题,可尝试降级到之前能正常运行的版本(比如GoogleMobileAds 10.12.x + Firebase 10.16.x),排查是否为新版本兼容性问题。
5. 调整初始化顺序
确保Firebase(包含AppMeasurement)的初始化在GoogleMobileAds之前执行。如果是Unity端的初始化代码,调整执行顺序:先初始化Firebase,再初始化AdMob。
内容的提问来源于stack exchange,提问作者qwdza54

