我在crashlytics / fabric初始化中发现了故障。正如crashlytics的Mike所说:how to initialize new fabric,我们应该使用:
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
在我的Application类的onCreate中:
@Override
public void onCreate() {
super.onCreate();
Fabric.with(this, CrashlyticsCore.getInstance());
}
我当然在清单中有元数据:
<meta-data
android:name="io.fabric.ApiKey"
android:value="myKey"/>
答案 0 :(得分:0)
这种初始化工作就像一个魅力,没有任何问题。
Fabric.with(this, new CrashlyticsCore(), new Crashlytics());
但是我不明白为什么更新失败了。
答案 1 :(得分:0)
如果您尚未在清单文件中注册应用,请尝试以下操作:
在您的 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())
}
}
这就是我在我的项目中使用的,并且效果很好!
答案 2 :(得分:0)
迈克的答案在该链接中不正确。 当您使用以下初始化时
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())