Sentry 与 Crashlytics 在功能和成本上有何差异?

解读

面试官抛出这道题,并不是想听“谁更好”,而是考察三点:

  1. 你是否真的在生产环境用过至少其中一款,能说出“踩坑点”;
  2. 能否把“崩溃捕获”这件事拆成采集、符号化、聚合、告警、归因、修复闭环,再映射到两款产品的能力差异;
  3. 能否结合国内合规、网络、预算、团队规模做权衡——毕竟很多中小厂一年给 Firebase 交的钱够再招半个开发。

知识点

  1. 崩溃采集链路:信号捕获 → unwind → 符号表 → 聚类算法 → 告警通道
  2. 国内网络:Firebase 域名被间歇性限速,Crashlytics 有 15 %~20 % 丢上报;Sentry 可私有化,也可买腾讯云 Sentry 版(北京机房)
  3. 符号化:Crashlytics 强制用 cSYM 或 Play 自带符号,Sentry 支持 ELF/DWARF、ProGuard、R8、NDK、Flutter、ReactNative 一键上传
  4. 聚合算法:Crashlytics 使用“变体 ID(Variant ID)” 做模糊哈希,Sentry 用“增强型堆栈哈希 + 自定义指纹”,允许用日志关键字、业务字段手动分组
  5. 自定义字段:Crashlytics 只能放 64 字节 key/value,Sentry 支持 200+ 自定义 tag、面包屑、附件(可挂 1 MB 日志)
  6. 告警:Crashlytics 仅 Firebase 控制台 + 邮件 + Slack;Sentry 支持飞书、企微、钉钉机器人,还能写 SQL-like 规则
  7. 成本:Crashlytics 免费无上限,但 Firebase Blaze 套餐按 GB 计费,大体积日志会陡增;Sentry 开源版免费,云版按“事件数”阶梯计价,国内官方价 29 美元/50 k 事件/月,腾讯云版 1 k 元/50 k 事件/月,私有化一次性买断约 30 k 美元/100 实例
  8. 合规:Crashlytics 数据存美国,需走 GDPR 合规评估;Sentry 私有化可全留本地,过等保三级更容易
  9. 集成成本:Crashlytics 一行 Gradle 插件即可,Sentry 需要自行处理 NDK 符号上传、插件版本对齐,CI 脚本复杂度 +1
  10. 性能:Crashlytics 使用“谷歌服务”通道,对 GMS 设备几乎零额外耗电;Sentry 默认走 HTTPS,需做长连接复用与电量优化,否则后台心跳会被国产 ROM 斩杀

答案

“我在上一家公司同时踩过这两个坑,可以分四层对比:

  1. 功能深度:Crashlytics 对 Android 原生崩溃足够用,NDK 符号化需要额外配 cSYM,自定义字段太窄,定位线上 Flutter 侧崩溃时几乎抓瞎;Sentry 支持多平台统一上报,NDK、Flutter、ReactNative 符号一键上传,还能挂 1 MB 日志,直接把当时用户手机里的 SQLite 文件拉回来复现。
  2. 聚合与告警:Crashlytics 的变体 ID 会把‘同一行代码改个常量’算成新崩溃,导致排行榜抖动;Sentry 允许用日志里的 orderId 当指纹,把‘同一笔订单失败’全部归为一类,并飞书机器人秒级告警,值班同学能立刻拿到订单号回捞日志。
  3. 网络与合规:Crashlytics 数据走美国,我们曾被监管要求提供数据跨境评估报告;Sentry 私有化部署在阿里云北京机房,等保测评直接复用现有主机基线,省了一个月审计周期。
  4. 成本:Crashlytics 免费,但我们的 DAU 涨到 800 万后,Firebase Blaze 流量账单多出了 1.2 万元/月;切到 Sentry 腾讯云版后,按 50 k 事件/月套餐,折下来 1 k 元,支持 90 天存储,整体便宜一个数量级。

结论:如果团队以 Android 为主、DAU 小于百万、对合规不敏感,Crashlytics 零成本接入最快;一旦涉及多平台、强合规、深度归因或自定义日志,Sentry 的私有化/腾讯云版在功能与综合成本上更优。”

拓展思考

  1. 混合方案:国内 Release 包用 Sentry 私有化保合规,海外渠道包继续用 Crashlytics,利用 Gradle Variant + BuildConfig 字段在编译期自动切换,既省流量又满足合规。
  2. 采样策略:对后台保活任务崩溃可做 1 % 采样,对用户触发崩溃全量采集,Sentry 支持客户端动态采样配置,可在 Remote Config 实时调整,避免事件数暴涨。
  3. 符号化加速:把 NDK 符号表切成“.so.sym”缓存到 CDN,CI 侧利用 sentry-cli 的“dif upload”并行上传,能将 300 MB 原生符号缩短到 3 分钟以内,解决“发版后符号表还没传完,告警已经轰炸”的痛点。