安装Google Maps SDK后iOS项目编译失败求助
集成Google Maps API时x86_64架构链接错误解决方法
问题描述
在集成Google Maps API过程中,已创建新项目并安装Google Maps pod,打开xcworkspace编译项目时出现以下链接错误:
Ld /Users/nxgen/Library/Developer/Xcode/DerivedData/GoogleMapTest2-dvqnpyvsumrrzbfpshbwaiyutzip/Build/Products/Debug-iphonesimulator/GoogleMapTest2.app/GoogleMapTest2 normal x86_64 (in target 'GoogleMapTest2' from project 'GoogleMapTest2') cd /Users/nxgen/Documents/GoogleMapTest2 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -target x86_64-apple-ios13.7-simulator -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.7.sdk -L/Users/nxgen/Library/Developer/Xcode/DerivedData/GoogleMapTest2-dvqnpyvsumrrzbfpshbwaiyutzip/Build/Products/Debug-iphonesimulator -F/Users/nxgen/Library/Developer/Xcode/DerivedData/GoogleMapTest2-dvqnpyvsumrrzbfpshbwaiyutzip/Build/Products/Debug-iphonesimulator -F/Users/nxgen/Documents/GoogleMapTest2/Pods/GoogleMaps/Base/Frameworks -F/Users/nxgen/Documents/GoogleMapTest2/Pods/GoogleMaps/Maps/Frameworks -filelist /Users/nxgen/Library/Developer/Xcode/DerivedData/GoogleMapTest2-dvqnpyvsumrrzbfpshbwaiyutzip/Build/Intermediates.noindex/GoogleMapTest2.build/Debug-iphonesimulator/GoogleMapTest2.build/Objects-normal/x86_64/GoogleMapTest2.LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks -Xlinker -rpath -Xlinker @executable_path/Frameworks -dead_strip -Xlinker -object_path_lto -Xlinker /Users/nxgen/Library/Developer/Xcode/DerivedData/GoogleMapTest2-dvqnpyvsumrrzbfpshbwaiyutzip/Build/Intermediates.noindex/GoogleMapTest2.build/Debug-iphonesimulator/GoogleMapTest2.build/Objects-normal/x86_64/GoogleMapTest2_lto.o -Xlinker -export_dynamic -Xlinker -no_deduplicate -Xlinker -objc_abi_version -Xlinker 2 -fobjc-link-runtime -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphonesimulator -L/usr/lib/swift -Xlinker -add_ast_path -Xlinker /Users/nxgen/Library/Developer/Xcode/DerivedData/GoogleMapTest2-dvqnpyvsumrrzbfpshbwaiyutzip/Build/Intermediates.noindex/GoogleMapTest2.build/Debug-iphonesimulator/GoogleMapTest2.build/Objects-normal/x86_64/GoogleMapTest2.swiftmodule -ObjC -lc++ -lz -framework Accelerate -framework CoreData -framework CoreGraphics -framework CoreImage -framework CoreLocation -framework CoreTelephony -framework CoreText -framework GLKit -framework GoogleMaps -framework GoogleMapsBase -framework GoogleMapsCore -framework ImageIO -framework Metal -framework OpenGLES -framework QuartzCore -framework SystemConfiguration -framework UIKit -Xlinker -sectcreate -Xlinker __TEXT -Xlinker __entitlements -Xlinker /Users/nxgen/Library/Developer/Xcode/DerivedData/GoogleMapTest2-dvqnpyvsumrrzbfpshbwaiyutzip/Build/Intermediates.noindex/GoogleMapTest2.build/Debug-iphonesimulator/GoogleMapTest2.build/GoogleMapTest2.app-Simulated.xcent -framework Pods_GoogleMapTest2 -Xlinker -dependency_info -Xlinker /Users/nxgen/Library/Developer/Xcode/DerivedData/GoogleMapTest2-dvqnpyvsumrrzbfpshbwaiyutzip/Build/Intermediates.noindex/GoogleMapTest2.build/Debug-iphonesimulator/GoogleMapTest2.build/Objects-normal/x86_64/GoogleMapTest2_dependency_info.dat -o /Users/nxgen/Library/Developer/Xcode/DerivedData/GoogleMapTest2-dvqnpyvsumrrzbfpshbwaiyutzip/Build/Products/Debug-iphonesimulator/GoogleMapTest2.app/GoogleMapTest2 Undefined symbols for architecture x86_64: "_CTRadioAccessTechnologyNRNSA", referenced from: ___GMSCellNetworkTypeForRadioType_block_invoke in GoogleMaps "_CTRadioAccessTechnologyNR", referenced from: ___GMSCellNetworkTypeForRadioType_block_invoke in GoogleMaps ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) Undefined symbol: _CTRadioAccessTechnologyNRNSA Undefined symbol: _CTRadioAccessTechnologyNR
解决方案
这些未定义的符号属于CoreTelephony框架,但编译命令已包含该框架,问题核心是iOS版本兼容性:
_CTRadioAccessTechnologyNR和_CTRadioAccessTechnologyNRNSA是iOS 14.0才引入的5G相关常量- 当前使用的是iOS 13.7模拟器SDK,无法找到这些符号
可通过以下三种方法解决:
方法1:升级iOS SDK版本
- 打开Xcode,将项目的Deployment Target设置为iOS 14.0或更高版本
- 切换到iOS 14.0+的模拟器进行编译
方法2:调整链接器选项
若需保留iOS 13.7的部署目标,按以下步骤操作:
- 打开项目的Build Settings
- 搜索
Other Linker Flags - 添加
-weak_framework CoreTelephony,告知链接器CoreTelephony为弱引用框架,缺失符号时不会触发报错
方法3:降级Google Maps SDK版本
若不想升级iOS版本,可降级到不依赖5G符号的Google Maps SDK版本:
- 修改
Podfile,指定较低版本的Google Maps,例如:pod 'GoogleMaps', '~> 5.0' - 执行
pod install --repo-update更新依赖
内容的提问来源于stack exchange,提问作者Ali Ahmed
相关产品推荐
相关产品推荐

