未调用 CrashlyticsListener

Nik*_*kin 3 android firebase crashlytics google-fabric

我正在使用此代码来跟踪应用程序何时崩溃:

val core = CrashlyticsCore
                .Builder()
                .listener {
                    Log.d("***", "Crash happened")
                }
                .build()
        val crashlyticsKit = Crashlytics
                .Builder()
                .core(core)
                .build()
        // Initialize Fabric with the debug-location_inactive crashlytics.
        Fabric.with(context, crashlyticsKit)
Run Code Online (Sandbox Code Playgroud)

我正在用throw NullPointerException()和测试它Crashlytics.getInstance().crash()。他们都没有打电话给听众。当应用程序再次启动时,这是在日志中:

I/CrashlyticsCore: Initializing Crashlytics 2.6.1.23
I/CrashlyticsInitProvider: CrashlyticsInitProvider initialization successful
D/FirebaseApp: com.google.firebase.crash.FirebaseCrash is not linked. Skipping initialization.
I/CrashlyticsCore: Crashlytics report upload complete: SOME-LETTERS-AND-NUMBERS
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

编辑 我使用了How to show a Dialog after crash by using Crashlytics 中的代码?作为我的模板,但 API 似乎略有变化(在这个答案中,它实例化为一个类,但现在它是一个侦听器,请参阅文档

Ser*_*kyi 5

默认情况下,Firebase Crashlytics 使用 content provider hack 来自动初始化自己(com.crashlytics.android.CrashlyticsInitProvider被注入到merge 中AndroidManifest)。

根据文档自动初始化可以用meta-data标志覆盖:

<manifest>
    <application>

        <meta-data
            android:name="firebase_crashlytics_collection_enabled"
            android:value="false" />

    </application>
</manifest>
Run Code Online (Sandbox Code Playgroud)

现在调用Fabric.with(context, crashlyticsKit)将实际初始化 sdk 并应正确触发侦听器。