Xcode 11编译报错:x86_64架构下UIPointer相关符号未找到
解决Xcode 11中GoogleMaps链接报错:Undefined symbols for UIPointerShape/UIPointerStyle
老哥,这个问题我之前帮朋友排查过,本质是SDK版本兼容性的锅:UIPointerShape和UIPointerStyle这两个UIKit类是iOS 13.4才正式加入的,而你用的Xcode 11默认带的是iOS 13.2 SDK——SDK里根本没这两个类,GoogleMaps的新版本又用到了这些API,链接器自然找不到符号报错。
给你几个可行的解决办法,按推荐程度排序:
优先升级Xcode到11.4及以上版本
这是最稳妥的方案,Xcode 11.4对应的SDK包含了iOS 13.4的新API,升级后链接器就能找到那两个缺失的类了。而且Xcode 11.4依然支持iOS 9+的部署目标,大部分老项目都能无缝适配。如果暂时不想升级Xcode,就降级GoogleMaps版本
找一个还没用到这些iOS 13.4新API的GoogleMaps版本,比如3.5.0(这个版本是iOS 13.4发布前的稳定版)。如果你用CocoaPods,直接修改Podfile:pod 'GoogleMaps', '~> 3.5.0'然后执行
pod update GoogleMaps重新安装依赖就行。临时救急:添加弱链接标记(不推荐长期用)
这个是hack手段,适合赶时间的临时场景:- 打开项目的
Build Settings,搜索Other Linker Flags - 添加以下任意一个标记:
- 针对整个GoogleMaps框架弱链接:
-weak-lGoogleMaps - 或者单独忽略这两个缺失的类:
-U _OBJC_CLASS_$_UIPointerShape -U _OBJC_CLASS_$_UIPointerStyle
注意:这个方法只是让链接器放过这些符号,如果GoogleMaps在运行时真的调用了这两个类,你的App在iOS 13.2的设备/模拟器上会直接崩溃,所以只适合你确定不会触发相关功能的情况。
- 针对整个GoogleMaps框架弱链接:
- 打开项目的
内容的提问来源于stack exchange,提问作者SudhakarH
相关产品推荐
相关产品推荐

