Android java.lang.IllegalStateException:必须在使用singleton()之前初始化结构

Android java.lang.IllegalStateException:必须在使用singleton()之前初始化结构,android,crashlytics,crashlytics-android,crashlytics-beta,Android,Crashlytics,Crashlytics Android,Crashlytics Beta,我在crashlytics/fabric初始化中发现了故障。正如crashlytics的Mike所建议的:我们应该使用: Fabric.with(this, CrashlyticsCore.getInstance()); 但当我切换到androidX时,它开始崩溃: 必须在使用singleton()之前初始化结构。 我的一些主要设置是: compileSdkVersion 29 targetSdkVersion 29 io.fabric.tools:gradle:1.28.1 gradle:

我在crashlytics/fabric初始化中发现了故障。正如crashlytics的Mike所建议的:我们应该使用:

Fabric.with(this, CrashlyticsCore.getInstance());
但当我切换到androidX时,它开始崩溃:

必须在使用singleton()之前初始化结构。

我的一些主要设置是:

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"/>

此初始化就像一个魔咒,没有任何问题

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

但是我不明白为什么更新版会失败。

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

在您的AndroidManifest.xml中:

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

这是我在我的项目中使用的,它工作得非常完美

从这个链接来看,迈克的答案是不正确的。 当您使用以下初始化时

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

解决方案:

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

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

您的应用程序已添加到清单中?@FlorescuCătălin是的。我的应用程序类已添加到清单中。问题是一个实现可以工作,而第二个不能。也许你应该尝试这样初始化:检查我更新的答案@根据描述中的链接,烤肉串的初始化已过时。