【问题标题】:java.lang.IllegalStateException: Must Initialize Fabric before using singleton()java.lang.IllegalStateException:必须在使用 singleton() 之前初始化 Fabric
【发布时间】:2019-07-18 10:34:59
【问题描述】:

我在 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

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

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

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

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

【问题讨论】:

  • 您的应用程序被添加到 Manifest 中了吗?
  • @FlorescuCătălin 是的。

标签: android crashlytics crashlytics-android crashlytics-beta


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    在您的 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())
        }
    }
    

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

    【讨论】:

    • 我的应用程序类已添加到清单中。故障是一种实现有效,而第二种无效。
    • 也许你应该尝试像这样初始化:检查我更新的答案。 @KebabKrabby
    • 根据描述中的链接,那是过时的初始化。
    【解决方案3】:

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

    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())
    

    【讨论】:

      猜你喜欢
      • 2020-01-20
      • 2019-08-16
      • 2015-09-28
      • 2019-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-18
      • 2019-03-05
      相关资源
      最近更新 更多