iOS应用中Crashlytics未记录框架内错误的问题咨询
不需要在框架里单独配置Crashlytics,它确实可以访问主工程初始化的同一个实例——我之前也碰到过框架里错误不显示的情况,大概率是几个常见的配置或代码执行问题,你可以按下面的步骤排查:
确认框架已正确链接Crashlytics依赖
如果用CocoaPods管理依赖,要确保你的框架目标(target)的Podfile里也添加了Crashlytics(或者FirebaseCrashlytics,如果你用的是新版Firebase集成)。即使主工程已经引入了,框架如果没单独链接,调用Crashlytics.sharedInstance().recordError(error)可能只是空调用,不会真正上报错误。手动集成的话,要把Crashlytics的库文件添加到框架的链接阶段。验证框架内的错误记录代码是否真的执行了
在调用recordError的地方加个打印日志,比如:print("框架内触发错误记录:\(error.localizedDescription)") Crashlytics.sharedInstance().recordError(error)运行APP触发框架内的错误场景,看控制台有没有输出这条日志——如果没有,说明你的错误触发路径根本没走到,得先排查业务逻辑问题。
检查主工程的Crashlytics初始化时机
主工程必须在APP启动初期完成Crashlytics的初始化,比如在application:didFinishLaunchingWithOptions:里调用:
旧版Fabric:Fabric.with([Crashlytics.self])
新版Firebase:Crashlytics.crashlytics().start()
如果框架里的错误发生在初始化之前,调用recordError是无效的,因为实例还没创建。排查Crashlytics控制台的过滤设置
有时候错误其实已经上报了,但被控制台的过滤条件隐藏了。你可以去控制台的“Filters”里看看有没有设置了严格的过滤规则,比如只显示崩溃不显示非致命错误,或者按版本、设备过滤掉了当前测试的场景。另外,非致命错误的上报可能会有延迟,等个几分钟再刷新看看。确认依赖版本和导入模块的正确性
如果你升级到了Firebase Crashlytics,要确保框架里导入的是import FirebaseCrashlytics,而不是旧的import Crashlytics,并且调用的是Crashlytics.crashlytics().record(error: error)而不是旧的实例方法。版本不一致也可能导致上报失败。
总结一下:框架不需要单独初始化Crashlytics,只要依赖链接正确、主工程初始化完成,代码确实执行到了记录逻辑,错误应该就能正常显示在控制台里。
内容的提问来源于stack exchange,提问作者rodskagg

