首页 文章

CrashlyticsCore:缺少预期的方法:registerOnMeasurementEventListener

提问于
浏览
8

我已经为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 回答

  • 2

    扩展之前已经说过的几个,将它添加到proguard.cfg就足够了:

    -keep class com.google.android.gms.measurement.AppMeasurement { *; }
    -keep class com.google.android.gms.measurement.AppMeasurement$OnEventListener { *; }
    

    这是必要的唯一原因是Fabric通过反射引用这两个类,而proguard没有检测到这两个类 .

  • 1

    添加到您的proguard-rules.pro

    ############ Crashlytics ################################
    -keepattributes *Annotation*
    -keep class com.crashlytics.** { *; }
    -dontwarn com.crashlytics.**
    -keepattributes SourceFile,LineNumberTable
    
  • 0

    我今天遇到了同样的问题 . 我解决了它添加以下行:

    -keep class com.google.android.gms.measurement.** { *; }
    -dontwarn com.google.android.gms.measurement.**
    

    可能它可能与类DefaultAppMeasurementEventListenerRegistrar(方法register(),第37行)有关

  • 10

    我遇到了同样的问题,我只是找到了解决方案......所以,看看堆栈跟踪,它说问题是找不到方法 registerOnMeasurementEventListener ,对吧?但它没有说明在哪里 .

    查看该类的反编译代码 DefaultAppMeasurementEventListenerRegistrar . 它表明该方法是从类中调用的:

    Class onEventListenerClass = this.getClass("com.google.android.gms.measurement.AppMeasurement$OnEventListener");
    

    所以,我刚刚在proguard文件中添加了以下内容:

    -keep class com.google.android.** { *; }
    

    它起作用,警告消失了 . 我想我可以在 com.google.android 下添加特定的类而不是全部,但我的思维过程是:我可能不想触及任何Android类,因为同样的问题可能会出现在其他库或其他代码中 .

    无论如何,我希望这可以帮助你或它可以帮助其他人有同样的问题 . 干杯!

  • 1

    当我将Crashlytics集成到我正在使用firebase崩溃报告工具的项目时,我遇到了一个非常类似的问题 .

    我有这条线

    FirebaseCrash.report(new Exception("NonFatal: Network Failure");
    

    当我用它替换它

    Crashlytics.log("NonFatal: Network Failure noticed ");
    

    不再抛出此异常 . 上面的日志与Timber日志记录集成在一起 .

    Timber.plant(...);
    

相关问题