我已经为Android设置了Crashlytics,在gradle文件中添加了依赖项 . 我使用 Crashlytics.logException(exception);
来记录异常 . 在应用程序抛出异常故障后,Crashlytics在Firebase控制台中被激活,但没有检测到任何事件且没有出现日志,因此控制台显示0崩溃 . 同时LogCat显示以下内容:
I/CrashlyticsCore: Initializing Crashlytics 2.6.1.23
I/CrashlyticsInitProvider: CrashlyticsInitProvider initialization successful
W/CrashlyticsCore: Expected method missing: registerOnMeasurementEventListener
java.lang.NoSuchMethodException: parameter type is null
at java.lang.Class.getMethod(Class.java:656)
at java.lang.Class.getDeclaredMethod(Class.java:626)
at com.crashlytics.android.core.DefaultAppMeasurementEventListenerRegistrar.invoke(DefaultAppMeasurementEventListenerRegistrar.java:89)
at com.crashlytics.android.core.DefaultAppMeasurementEventListenerRegistrar.register(DefaultAppMeasurementEventListenerRegistrar.java:54)
at com.crashlytics.android.core.CrashlyticsController.registerAnalyticsEventListener(CrashlyticsController.java:1574)
at com.crashlytics.android.core.CrashlyticsCore.doInBackground(CrashlyticsCore.java:320)
at com.crashlytics.android.core.CrashlyticsCore.doInBackground(CrashlyticsCore.java:44)
at io.fabric.sdk.android.InitializationTask.doInBackground(InitializationTask.java:63)
at io.fabric.sdk.android.InitializationTask.doInBackground(InitializationTask.java:28)
at io.fabric.sdk.android.services.concurrency.AsyncTask$2.call(AsyncTask.java:311)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
I/CrashlyticsCore: Crashlytics report upload complete: 5ABA789603A5-0001-7C52-7AF6D12C00C8
为什么缺少 registerOnMeasurementEventListener
方法;我只有一个默认的proguard-rules.pro文件,其中包含以下内容:
UPDATED:
-assumenosideeffects class android.util.Log {
public static int d(...);
}
############ Crashlytics ################################
-keepattributes *Annotation*
-keepattributes SourceFile,LineNumberTable
-keep public class * extends java.lang.Exception
-keep class com.crashlytics.** { *; }
-dontwarn com.crashlytics.**
5 回答
扩展之前已经说过的几个,将它添加到proguard.cfg就足够了:
这是必要的唯一原因是Fabric通过反射引用这两个类,而proguard没有检测到这两个类 .
添加到您的proguard-rules.pro
我今天遇到了同样的问题 . 我解决了它添加以下行:
可能它可能与类DefaultAppMeasurementEventListenerRegistrar(方法register(),第37行)有关
我遇到了同样的问题,我只是找到了解决方案......所以,看看堆栈跟踪,它说问题是找不到方法
registerOnMeasurementEventListener
,对吧?但它没有说明在哪里 .查看该类的反编译代码
DefaultAppMeasurementEventListenerRegistrar
. 它表明该方法是从类中调用的:所以,我刚刚在proguard文件中添加了以下内容:
它起作用,警告消失了 . 我想我可以在
com.google.android
下添加特定的类而不是全部,但我的思维过程是:我可能不想触及任何Android类,因为同样的问题可能会出现在其他库或其他代码中 .无论如何,我希望这可以帮助你或它可以帮助其他人有同样的问题 . 干杯!
当我将Crashlytics集成到我正在使用firebase崩溃报告工具的项目时,我遇到了一个非常类似的问题 .
我有这条线
当我用它替换它
不再抛出此异常 . 上面的日志与Timber日志记录集成在一起 .