Xcode 9.3集成Firebase Crashlytics后无法显示iOS Swift应用崩溃信息
解决Xcode iOS Swift应用无法在Firebase Crashlytics查看崩溃信息的问题
我之前手动集成Crashlytics时也踩过这个坑,结合实战经验给你整理几个关键排查步骤,按顺序试下来应该能解决:
1. 核对手动集成的完整性
手动集成很容易漏细节,你要逐一确认:
- 确认
Crashlytics.framework和Fabric.framework都已添加到项目,且在Build Phases > Link Binary With Libraries中能看到这两个框架 - 检查Run Script配置:在Build Phases新增Run Script Phase,脚本路径要对应你手动下载的Fabric文件夹位置,比如如果Fabric文件夹放在项目根目录,脚本内容应为
"${PROJECT_DIR}/Fabric/run",同时要确保填入了正确的API Key和Build Secret(可在Firebase项目控制台获取) - 检查
Info.plist:确认已添加Fabric字典,包含APIKey字段(对应你的密钥),以及Kits数组(数组里要包含Crashlytics)
2. 检查Xcode Build Settings配置
- 确保Debug Information Format在Debug和Release模式下都设置为
DWARF with dSYM File——Crashlytics需要dSYM文件来解析崩溃堆栈,没有这个的话就算上传了日志也无法展示可读的崩溃信息 - 开启Crashlytics调试模式:在
AppDelegate的didFinishLaunchingWithOptions方法里添加一行代码:
这样运行App时控制台会输出Crashlytics的详细日志,能帮你判断日志是否成功上传Crashlytics.sharedInstance().debugMode = true
3. 规范崩溃测试的操作流程
很多时候看不到数据是测试姿势不对:
- 模拟器测试:触发崩溃后,不要直接点Xcode的Stop按钮,要手动关闭模拟器里的App,再重新打开——Crashlytics是在App启动时上传上次的崩溃日志的,直接Stop会打断这个流程
- 真机测试:触发崩溃后,按Home键退出App,再手动重新打开,不要通过Xcode重启App
- 测试用的崩溃代码,比如官方的
Crashlytics.sharedInstance().crash()或者自定义的fatalError("Test Crash"),要确保没有被全局异常捕获逻辑吞掉(比如你有没有用NSSetUncaughtExceptionHandler?如果有要确保没有阻止崩溃上报)
4. 排查Firebase控制台的显示问题
- 确认Firebase项目关联的Bundle ID和你Xcode项目的Bundle ID完全一致,大小写都不能错
- 崩溃数据偶尔会有延迟,第一次上传可能需要等5-10分钟,不要刚测试完就急着刷新页面
- 检查控制台的Crashlytics > Issues页面的过滤条件,比如是不是不小心只选了Release版本,切换到「All」看看有没有数据
5. 验证Crashlytics初始化状态
在AppDelegate的初始化代码后添加日志输出:
Fabric.with([Crashlytics.self]) print("Crashlytics 初始化完成")
运行App后看控制台有没有这个输出,同时结合开启的debug模式日志,如果看到类似Crashlytics report upload complete的信息,说明日志已经上传,只是控制台还没显示;如果没有上传日志的信息,可能是网络问题或者配置有误。
如果以上步骤都试过还是不行,建议下载最新版本的Crashlytics SDK替换掉旧的,旧版本和Xcode 9.3可能存在兼容性问题。
内容的提问来源于stack exchange,提问作者HixField
相关产品推荐
相关产品推荐

