Android java.lang.IllegalStateException:必须在使用singleton()之前初始化结构
我在crashlytics/fabric初始化中发现了故障。正如crashlytics的Mike所建议的:我们应该使用: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:
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是的。我的应用程序类已添加到清单中。问题是一个实现可以工作,而第二个不能。也许你应该尝试这样初始化:检查我更新的答案@根据描述中的链接,烤肉串的初始化已过时。