M1 MacBook 出现 _OBJC_CLASS_$ 错误(关联Google Maps/Places)
检查Swift Package的目标关联
确认Google Maps和Places的Package已添加到项目的Package Dependencies中,并且在对应目标的Frameworks, Libraries, and Embedded Content列表里,这两个库的状态是Embed & Sign。很多时候添加Package后会忘记关联到具体目标,导致编译时找不到类。彻底清理构建缓存
缓存残留是这类问题的常见诱因,按以下步骤操作:- 关闭Xcode
- 删除项目的派生数据(可通过Xcode偏好设置→Locations找到路径)
- 终端执行命令清理Swift Package缓存:
rm -rf ~/Library/Caches/org.swift.swiftpm rm -rf ~/Library/Developer/Xcode/DerivedData - 重新打开项目,按下
Cmd+Shift+K清理构建文件夹,再重新编译
检查Objective-C桥接配置(若涉及OC代码)
如果项目包含Objective-C代码,确认桥接文件中是否正确引入了头文件:#import <GoogleMaps/GoogleMaps.h> #import <GooglePlaces/GooglePlaces.h>同时检查Build Settings里的
Objective-C Bridging Header路径是否准确无误。排查CocoaPods残留配置
即使移除了CocoaPods,仍可能有残留配置干扰:- 搜索Build Settings中的
Other Linker Flags,删除任何残留的-lGoogleMaps、-lGooglePlaces类参数 - 删除项目目录下的
.xcworkspace文件,直接打开.xcodeproj编译 - 检查
Info.plist中是否有Google Maps相关配置(比如API_KEY),确保配置正确(虽不直接导致类找不到,但可排除关联问题)
- 搜索Build Settings中的
验证Package版本兼容性
确认你使用的Google Maps/Places Swift Package版本与当前Xcode版本、iOS目标版本兼容。比如部分新版本要求Xcode 14及以上,若你的Xcode版本过低,可能引发编译异常。建议切换到官方标注的稳定版本(如Google Maps 5.x系列)。复查架构设置细节
再核对几个关键架构配置:- 目标的
Architectures设为Standard Architectures (arm64, x86_64) Excluded Architectures在Debug和Release下,不要排除arm64(M1设备需保留该架构)Build Active Architecture Only在Debug模式设为YES,Release模式设为NO
- 目标的
排查间接依赖冲突
项目中其他Swift Package可能间接依赖了旧版Google Maps,引发冲突。可通过File → Packages → Resolve Package Versions更新所有依赖,或查看Package依赖图谱,确认是否有第三方库引入了冲突版本的Google Maps。
内容的提问来源于stack exchange,提问作者Senator

