安装PusherSwift后Xcode 11启动崩溃:找不到_OBJC_CLASS_$_Reachability符号
解决PusherSwift安装后因Reachability符号缺失导致的崩溃问题
你遇到的是典型的第三方库依赖冲突问题——多个组件引入了不同版本/实现的Reachability库,导致ChatSDK在启动时找不到它预期的_OBJC_CLASS_$_Reachability符号。下面是一步步的排查和解决方法:
1. 彻底清理缓存并重新安装Pods
先排除缓存导致的依赖解析混乱:
- 关闭Xcode,删除项目根目录下的
Podfile.lock和Pods文件夹 - 清理Xcode的Derived Data:通过
Xcode > Preferences > Locations找到Derived Data路径,手动删除整个文件夹 - 执行命令重新安装依赖:
pod install --repo-update
2. 明确锁定Reachability版本,避免依赖冲突
你的项目里同时存在Tony Million的OC版Reachability(ChatSDK需要的)和PusherSwift依赖的Swift版ReachabilitySwift,这两个库的符号容易引发解析混淆。在Podfile里明确指定ChatSDK需要的Reachability版本,强制CocoaPods正确处理:
# 明确指定Tony Million的OC版Reachability(ChatSDK依赖的标准版本) pod 'Reachability', '~> 3.2' # 添加你的PusherSwift依赖,版本根据实际使用调整 pod 'PusherSwift', '~> 10.0' # 其他项目依赖...
执行pod update让依赖重新对齐。
3. 检查项目的Build Settings配置
- 打开项目的Build Settings,搜索
Framework Search Paths:确保没有重复或错误的Reachability框架路径,只保留Pods目录下的正确路径(比如$(PROJECT_DIR)/Pods/Reachability) - 搜索
Other Linker Flags:如果存在-ObjC或-all_load,尝试暂时移除它们——这些标记会强制链接所有符号,容易触发不同库之间的符号冲突。如果移除后某些功能异常,再针对性添加到特定Target的Linker Flags里。
4. 排查残留的Reachability引用
- 用Xcode的「Find in Project」功能搜索
Reachability,检查是否还有之前手动导入的Reachability文件残留(比如某个角落的引用没删除干净) - 进入「Frameworks, Libraries, and Embedded Content」界面,确保只保留一个Reachability框架(即Tony Million的OC版本),移除其他重复或无关的Reachability相关框架。
5. 验证ChatSDK的依赖配置
如果ChatSDK是通过Pod引入的,查看它的podspec文件(可以在Pods目录下找到),确认它声明的Reachability依赖版本,然后在你的Podfile里严格匹配这个版本,避免CocoaPods自动替换成不兼容的版本。
内容的提问来源于stack exchange,提问作者Kaye
相关产品推荐
相关产品推荐

