抛出非法状态异常的Crashlytics.logException方法。无法收集某些活动的非致命问题

时间:2019-04-09 17:14:24

标签: android crashlytics twitter-fabric crashlytics-android

我的应用程序使用上述Firebase Crashlytics功能,但遇到了一个奇怪的问题。最近,我在应用程序的Playstore崩溃中看到了一个异常(请参阅所附照片)。 Crash Description  该位置的相应代码如下:

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_my_sites)
        setSupportActionBar(findViewById(R.id.my_toolbar))

        init()
        try{
            loadSitesSetAdapter()
        } catch (e:NullPointerException){
            Crashlytics.logException(e) // this is line 55 as crash
            finish()
//            startActivity(Intent(this,MainActivity::class.java))
        }

Fabric初始化在我的应用程序中如下:

在应用级别gradle中,我拥有:

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        // Disable fabric build ID generation for debug builds
        ext.enableCrashlytics = false
    }
}

在主要活动中,我有以下内容:

val crashlyticsKit = Crashlytics.Builder()
                                    .core(CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
                                    .build();

    // Initialize Fabric with the debug-disabled crashlytics.
    Fabric.with(this,crashlyticsKit)

最后但并非最不重要的一点是,我对gradle文件的依赖性如下:

// Crashlytics
implementation('com.crashlytics.sdk.android:crashlytics:2.9.8@aar') {
    transitive = true;
}

这里是否有明显的我想念的东西?请帮助

1 个答案:

答案 0 :(得分:1)

必须先初始化面料,然后才能在应用程序中使用它。您在呼叫Crashlytics.logException(e)的地方,是在Fabric.with(this,crashlyticsKit)行之前完成的吗?如果不是这样,则必须先初始化Fabric,然后才能使用其任何方法。

如果要在多个活动/屏幕中调用Fabric方法,那么最好有一个Application子类,您可以在其中初始化Fabric。

在此处查看入门段落: https://docs.fabric.io/android/fabric/overview.html#manual-setup