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

问题描述 投票:0回答:1

我的应用程序使用上面的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;
}

我有什么明显的遗失吗?请帮忙

android crashlytics twitter-fabric crashlytics-android
1个回答
1
投票

Fabric必须在可以在应用程序中使用之前进行初始化。你在哪里调用Crashlytics.logException(e),那是在Fabric.with(this,crashlyticsKit)线之前完成的吗?如果没有,则必须先初始化Fabric,然后才能使用其任何方法。

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

请参阅此处的入门段落:https://docs.fabric.io/android/fabric/overview.html#manual-setup

© www.soinside.com 2019 - 2024. All rights reserved.