集成Google Mobile Ads SDK遇未定义符号及链接错误求助
关于Google-Mobile-Ads-SDK的链接错误排查与解决
多次移除并更新仓库、重装Pods后,仍持续遇到链接错误。完全移除Google Mobile Ads后项目可正常编译,但重新添加后立即报错,甚至创建全新项目仅引入该Pod也无法正常编译。
原有项目错误日志
ld: Undefined symbols: _kGADErrorDomain, referenced from: -[GADMAdapterAppfireworks getInterstitial] in AdapterAppTracker.a[arm64][2](GADMAdapterAppfireworks.o) -[GADMAdapterAppfireworks getInterstitial] in AdapterAppTracker.a[arm64][2](GADMAdapterAppfireworks.o) -[GADMAdapterAppfireworks getBannerWithSize:] in AdapterAppTracker.a[arm64][2](GADMAdapterAppfireworks.o) -[GADMAdapterAppfireworks onModuleFailed:error:cached:] in AdapterAppTracker.a[arm64][2](GADMAdapterAppfireworks.o) -[GADMAdapterAppfireworks onModuleFailed:error:cached:] in AdapterAppTracker.a[arm64][2](GADMAdapterAppfireworks.o) -[GADMAdapterAppfireworks setUp] in AdapterAppTracker.a[arm64][2](GADMAdapterAppfireworks.o) -[GADMAdapterAppfireworks setUp] in AdapterAppTracker.a[arm64][2](GADMAdapterAppfireworks.o)
Podfile片段
platform :ios, '14.0' use_frameworks! target 'CDLPractice' do # Comment the next line if you're not using Swift and don't want to use dynamic frameworks # Pods for CDLPractice pod 'Google-Mobile-Ads-SDK' pod 'Firebase/Core' pod 'FirebaseCrashlytics' pod 'Firebase/Database', '~> 7.0.0' pod 'Firebase/Performance' pod 'Firebase/RemoteConfig' pod 'Firebase/Storage' pod 'FirebaseAnalytics' pod 'SwiftLint' pod 'ZendeskChatSDK' pod 'MBCircularProgressBar' pod 'OneSignalXCFramework', '>= 3.0.0', '< 4.0' end
重新添加Google Mobile Ads后的错误日志
Undefined symbols for architecture arm64: "_kGADErrorDomain", referenced from: -[GADMAdapterAppfireworks getInterstitial] in AdapterAppTracker(GADMAdapterAppfireworks.o) -[GADMAdapterAppfireworks getBannerWithSize:] in AdapterAppTracker(GADMAdapterAppfireworks.o) -[GADMAdapterAppfireworks onModuleFailed:error:cached:] in AdapterAppTracker(GADMAdapterAppfireworks.o) -[GADMAdapterAppfireworks setUp] in AdapterAppTracker(GADMAdapterAppfireworks.o) ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (us
全新项目仅引入Google-Mobile-Ads-SDK的错误日志
ld: warning: search path '/Users/douglaspalme/Library/Developer/Xcode/DerivedData/rTest-cgwpukuijruepmhdmeuupomktnaq/Build/Products/Debug-iphonesimulator/GoogleUtilities' not found ld: warning: search path '/Users/douglaspalme/Library/Developer/Xcode/DerivedData/rTest-cgwpukuijruepmhdmeuupomktnaq/Build/Products/Debug-iphonesimulator/PromisesObjC' not found ld: warning: search path '/Users/douglaspalme/Library/Developer/Xcode/DerivedData/rTest-cgwpukuijruepmhdmeuupomktnaq/Build/Products/Debug-iphonesimulator/nanopb' not found ld: warning: search path '/Users/douglaspalme/Library/Developer/Xcode/DerivedData/rTest-cgwpukuijruepmhdmeuupomktnaq/Build/Products/Debug-iphonesimulator/XCFrameworkIntermediates/Google-Mobile-Ads-SDK' not found ld: warning: search path '/Users/douglaspalme/Library/Developer/Xcode/DerivedData/rTest-cgwpukuijruepmhdmeuupomktnaq/Build/Products/Debug-iphonesimulator/XCFrameworkIntermediates/GoogleAppMeasurement/AdIdSupport' not found ld: warning: search path '/Users/douglaspalme/Library/Developer/Xcode/DerivedData/rTest-cgwpukuijruepmhdmeuupomktnaq/Build/Products/Debug-iphonesimulator/XCFrameworkIntermediates/GoogleAppMeasurement/WithoutAdIdSupport' not found ld: warning: search path '/Users/douglaspalme/Library/Developer/Xcode/DerivedData/rTest-cgwpukuijruepmhdmeuupomktnaq/Build/Products/Debug-iphonesimulator/XCFrameworkIntermediates/GoogleUserMessagingPlatform' not found ld: framework 'FBLPromises' not found clang: error: linker command failed with exit code 1 (use -v to see invocation)
解决方案
- 彻底清理Pod相关缓存与文件:
pod cache clean --all rm -rf ~/Library/Caches/CocoaPods rm -rf Pods rm Podfile.lock - 更新CocoaPods到最新稳定版:
gem install cocoapods - 修复
_kGADErrorDomain未定义问题:- 在Podfile中指定
Google-Mobile-Ads-SDK的稳定版本,例如:pod 'Google-Mobile-Ads-SDK', '~> 11.0' - 检查项目目录,手动移除所有非通过Pod引入的
AdapterAppTracker.a或相关静态库文件
- 在Podfile中指定
- 解决全新项目的
FBLPromises找不到问题:- 执行
pod deintegrate彻底移除现有Pod集成,再重新执行pod install - 打开Xcode,检查项目
Build Settings中的Framework Search Paths,确保包含$(inherited)配置 - 删除Xcode的DerivedData目录:
rm -rf ~/Library/Developer/Xcode/DerivedData
- 执行
内容的提问来源于stack exchange,提问作者Douglas W. Palme
相关产品推荐
相关产品推荐

