我在崩溃/结构初始化中发现了故障。正如来自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
在我的应用程序类中创建:
@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"
...
/>
并尝试像这样初始化:
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())
}
}
这是我在我的项目中使用的,它工作得很好!
迈克的回答在该链接中不正确。当您使用以下初始化时
Fabric.with(this, CrashlyticsCore.getInstance());
CrashlyticsCore.getInstance()
此getInstance方法正在尝试访问尚未创建的Fabric类对象。结构对象是在with
方法中创建的,该方法将在执行CrashlyticsCore.getInstance()
后调用
溶液:
您可以使用以下任何行进行初始化,因为它们使用 new 关键字创建所有对象
Fabric.with(this, new Crashlytics());
Fabric.with(this, new CrashlyticsCore());
Fabric.with(this, new CrashlyticsCore(), new Crashlytics())