无法在Firebase应用中停用Crashlytics(不再)

J. *_*ams 16 firebase crashlytics crashlytics-android

升级到com.crashlytics.sdk.android:crashlytics:2.7.1@aar(从2.6.8开始)后,我无法在我的Firebase应用中禁用Crashlytics.

看起来Crashlytics库本身有一些代码,只要它检测到它在Firebase应用程序中运行,就会启用 Fabric with Crashlytics工具包.确实在启用Crashlytics的情况下进行初始化并ext.enableCrashlytics = false抛出UnmetDependencyException并在启动时崩溃应用程序(事实上,在我的代码Application.onCreate运行之前).

有谁知道解决方法吗?坚持2.6.8现在工作.这是我在我的代码中使用的,直到升级为止:

应用程序/的build.gradle:

ext.enableCrashlytics = false
Run Code Online (Sandbox Code Playgroud)

Application.java(onCreate,请求的完整方法体):

super.onCreate();
if (LeakCanary.isInAnalyzerProcess(this)) {
    return;
}
LeakCanary.install(this);
// First Fabric invocation
Fabric.with(this, new Crashlytics.Builder().core(
    new CrashlyticsCore.Builder().disabled(true).build()).build());
RxJavaPlugins.setErrorHandler(e -> LOGGER.error("Undeliverable RxJava error", e));
// First Firebase invocation
FirebaseDatabase db = FirebaseDatabase.getInstance();
if (BuildConfig.DEBUG) {
    db.setLogLevel(com.google.firebase.database.Logger.Level.DEBUG);
}
db.setPersistenceEnabled(true);
Run Code Online (Sandbox Code Playgroud)

itz*_*har 33

根据迈克的回答,即时添加我的代码:

摇篮:

buildTypes {
   release {
        manifestPlaceholders = [crashlyticsEnabled: true]
    }

    debug {
        manifestPlaceholders = [crashlyticsEnabled: false]
    }
}
Run Code Online (Sandbox Code Playgroud)

的Manifest.xml:

<meta-data
    android:name="firebase_crashlytics_collection_enabled"
    android:value="${crashlyticsEnabled}" />
Run Code Online (Sandbox Code Playgroud)


Mik*_*ell 23

来自Fabric的Mike来自这里.使用:

<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
Run Code Online (Sandbox Code Playgroud)

如果你想在使用Firebase时禁用Crashlytics.

  • @ J.Williams:对于`firebase_crashlytics_collection_enabled`的值,[manifestPlaceholder](https://developer.android.com/studio/build/manifest-build-variables.html)能做你需要的吗? (6认同)