iOS项目通过SPM接入Crashlytics后崩溃上报与dSYM上传相关疑问
崩溃上报逻辑说明
你对官方文档的理解是正确的:
- 应用崩溃时进程已被系统标记为异常终止状态,无法执行任何网络请求等额外操作,所有崩溃信息会先写入本地沙盒存储,必须等下一次应用正常启动时才会自动上报到Firebase后台
- 若用户崩溃后再也不打开应用,对应崩溃报告确实无法被采集到,这是iOS平台所有崩溃采集工具的通用底层限制,你之前认为崩溃发生时可直接上报的认知不符合iOS系统的进程管理规则
- 官方文档中提到的「从Xcode重新运行应用」仅为测试场景下的操作指引,线上版本用户手动重启应用即可触发上报,无需依赖Xcode操作
Google Analytics依赖问题说明
无需强制开启Google Analytics全量功能即可正常使用Crashlytics:
- 你遇到的不开GA就收不到崩溃的问题,是因为新版Firebase默认使用GA的基础传输组件承载崩溃日志上报,你只需要在应用初始化阶段手动调用
Crashlytics.crashlytics().setCrashlyticsCollectionEnabled(true)显式开启Crashlytics采集权限,即可在关闭GA数据分析功能的前提下正常接收崩溃报告
SPM接入后的dSYM上传方案
无需切换到CocoaPods接入,现有方案可长期维护:
- 官方给出的带Pods路径的上传命令仅为CocoaPods接入场景的示例,SPM接入时你可以直接下载独立的
upload-symbols脚本存放在项目目录下,替换命令中工具路径即可正常使用,示例命令如下:./你的脚本存储路径/upload-symbols -gsp /你的本地路径/GoogleService-Info.plist -p ios /你的dSYM文件路径 - 你当前关闭bitcode使用自动上传dSYM的方案完全适合长期维护:Xcode 14及以上版本苹果已默认关闭bitcode功能,也不再推荐开发者开启,自动上传dSYM的逻辑对SPM和CocoaPods接入均生效,稳定性有官方保障。只有当你后续需要开启bitcode时,才需要额外配置脚本上传苹果后台返回的加工后dSYM文件。
内容的提问来源于stack exchange,提问作者Oleksandr Matrosov
相关产品推荐
相关产品推荐

