1

我在 crashlytics/fabric 初始化中发现了故障。正如 crashlytics 的 Mike 在这里建议的那样:如何初始化我们应该使用的新结构:

Fabric.with(this, CrashlyticsCore.getInstance());

但是当我切换到 androidX 时,它开始崩溃:

在使用 singleton() 之前必须初始化 Fabric

我的一些主要设置是:

compileSdkVersion 29
targetSdkVersion 29
io.fabric.tools:gradle:1.28.1
gradle: 5.5.1
com.crashlytics.sdk.android:crashlytics:2.10.0@aar

在我的应用程序类的 onCreate 中:

@Override
public void onCreate() {
    super.onCreate();
    Fabric.with(this, CrashlyticsCore.getInstance());
}

当然我在清单中有元数据:

<meta-data
    android:name="io.fabric.ApiKey"
    android:value="myKey"/>
4

3 回答 3

1

迈克在该链接中的回答不正确。当您使用以下初始化时

Fabric.with(this, CrashlyticsCore.getInstance());

CrashlyticsCore.getInstance()此 getInstance 方法正在尝试访问尚未创建的 Fabric 类对象。Fabric 对象是在with方法中创建的,该方法将在CrashlyticsCore.getInstance()执行后调用

解决方案 :

您可以使用以下任何行进行初始化,因为它们使用new关键字创建所有对象

Fabric.with(this, new Crashlytics());
Fabric.with(this, new CrashlyticsCore());
Fabric.with(this, new CrashlyticsCore(), new Crashlytics())
于 2019-07-24T18:41:10.473 回答
1

这个初始化就像一个魅力,没有任何问题。

Fabric.with(this, new CrashlyticsCore(), new Crashlytics());

但我不明白为什么新的失败。

于 2019-07-18T10:37:09.260 回答
1

如果您尚未在清单文件中注册您的应用程序,请尝试以下操作:

在您的AndroidManifest.xml中:

<application
    android:name=".MyApplication"
    ...
    />

并尝试像这样初始化:

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        val core = CrashlyticsCore.Builder().disabled(false).build()
        Fabric.with(this, Crashlytics.Builder().core(core).build())
    }
}

这就是我在我的项目中使用的,而且效果很好!

于 2019-07-21T14:57:52.800 回答