Android Crashlytics上报异常失败:控制台无日志且显示0崩溃求助
registerOnMeasurementEventListener缺失问题 嘿,我之前也碰到过类似的情况,你遇到的这个问题大概率是依赖版本不兼容或者配置细节没踩对,结合你给出的LogCat信息,给你梳理几个针对性的解决步骤:
1. 先搞定依赖版本冲突(核心原因)
LogCat里的Expected method missing: registerOnMeasurementEventListener基本就是Crashlytics和Firebase相关依赖(比如Analytics/Core)版本不匹配导致的。最好的解决方式是用Firebase的BoM来统一管理所有Firebase依赖的版本,这样能彻底避免版本冲突:
在项目根目录的build.gradle(或者Module的build.gradle.kts,看你用的是Groovy还是Kotlin)里添加BoM:
dependencies { // 引入Firebase BoM,用最新的稳定版本就行 implementation platform('com.google.firebase:firebase-bom:32.7.0') // 然后添加Crashlytics和Analytics依赖,不用写版本号,BoM会自动匹配 implementation 'com.google.firebase:firebase-crashlytics' implementation 'com.google.firebase:firebase-analytics' }
如果不想用BoM,那一定要保证Crashlytics和Firebase Analytics/Core的版本完全一致,比如你用firebase-crashlytics:18.4.0,那firebase-analytics也要对应相同大版本的兼容号。
2. 确认初始化配置没遗漏
虽然LogCat显示已经初始化,但还是要检查下:
- 看看
AndroidManifest.xml里有没有Crashlytics的初始化提供者,一般依赖会自动帮你加,但手动确认下更稳妥:<provider android:name="com.google.firebase.crashlytics.CrashlyticsInitProvider" android:authorities="${applicationId}.crashlyticsinitprovider" android:exported="false" android:initOrder="100" /> - 如果你是手动初始化的话,要在Application的
onCreate里先初始化Firebase,再开启Crashlytics收集:
要是你用的是自动初始化(默认是开启的),就别手动调用这些了,重复初始化反而会出问题。@Override public void onCreate() { super.onCreate(); FirebaseApp.initializeApp(this); Crashlytics.getInstance().setCrashlyticsCollectionEnabled(true); }
3. 别找错日志位置!
你用的Crashlytics.logException(exception);是记录非致命异常的,这类日志不会出现在控制台的"崩溃"标签页里,得去"非致命异常"(Non-fatal)页面找!很多人第一次用都会在这里踩坑。
如果要测试致命崩溃(就是会让应用闪退的那种),可以写个按钮点击事件直接抛出异常:
button.setOnClickListener(v -> { throw new RuntimeException("Crashlytics Test Crash"); });
注意:测试的时候别用模拟器的"强制停止",要让应用自然闪退重启,这样Crashlytics才会把日志上传上去。
4. 排查上传相关的小问题
- 确保测试设备有稳定的网络,Crashlytics要联网才能上传日志。
- 检查应用有没有加网络权限:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> - 要是开了ProGuard/R8混淆,一定要加Crashlytics的混淆规则,不然会把关键方法混淆掉:
-keep class com.google.firebase.crashlytics.** { *; } -keepattributes SourceFile,LineNumberTable
5. 清缓存再试一次
有时候缓存会卡住日志上传,试试:
- 卸载应用,重启测试设备。
- 重新安装应用,触发异常后等个3-5分钟,Firebase的日志上传不是实时的,有延迟很正常。
内容的提问来源于stack exchange,提问作者Galya

