有没有什么简单的方法可以在开发过程中关闭Crashlytics Android SDK ?

我不希望每次我做一些愚蠢的事情时它都会崩溃

另一方面,我不想注释掉Crashlytics.start(),可能会忘记取消注释并提交


当前回答

根据谷歌使用此代码禁用Crashlytics,它也将改善构建过程。

reference-https: / / developer.android.com/studio/build/optimize-your-build

其他回答

有两个选项可以禁用以下版本的Firebase Crashlytics:

添加元标签的应用程序的清单

<元数据android:name="firebase_crashlytics_collection_enabled" android:value="false" />

OR

直接在应用程序中配置(请记住,当设置为false时,新值直到下次运行应用程序才适用)

FirebaseCrashlytics.getInstance () .setCrashlyticsCollectionEnabled(真正的)

如果你想捕获所有的崩溃(用于调试和发布版本),但想在Crashlytics仪表板中分离它们,你可以添加这行代码到build.gradle:

debug {
    versionNameSuffix "-DEBUG"
}

例如,如果你的应用程序的versionName是1.0.0,你的发布版本将被标记为1.0.0,而调试版本将被标记为1.0.0- debug

我发现这是最简单的解决方案:

    release {
        ...
        buildConfigField 'Boolean', 'enableCrashlytics', 'true'
    }
    debug {
        buildConfigField 'Boolean', 'enableCrashlytics', 'false'
    }

上面的代码行将在BuildConfig文件中创建一个名为enableCrashlytics的静态布尔字段,你可以用它来决定是否初始化Fabric:

    if (BuildConfig.enableCrashlytics)
        Fabric.with(this, new Crashlytics());

注意:使用这种方法,fabric只在发布版本中初始化(如上面的代码所示)。这意味着你需要在一个if块中调用Crashlytics类中的静态方法,该块检查fabric是否已经初始化,如下所示。

if (Fabric.isInitialized())
    Crashlytics.logException(e);

否则,当在模拟器上测试时,在使用singleton()错误之前,应用程序将崩溃。

答:更新 从gradle配置中禁用crlytics以提高构建速度。

android {
    ...
    buildTypes {
        debug {
            ext.enableCrashlytics = false
        }
    }
}

或者kotlin公里:

android {
    ...
    buildTypes {
        getByName("debug") {
            extra["enableCrashlytics"] = false
        }
    }
}

然后编程地:

// Initializes Fabric for builds that don't use the debug build type.
Crashlytics.Builder()
        .core(CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
        .build()
        .also { crashlyticsKit ->
            Fabric.with(this, crashlyticsKit)
        }

你也可以继续在调试构建中使用crashlytics,但仍然可以通过防止crashlytics为每个构建生成一个新ID来提高构建速度:

android {
    ...
    buildTypes {
        getByName("debug") {
            extra["alwaysUpdateBuildId"] = false
        }
    }
}

或groovy:

android {
    ...
    buildTypes {
        debug {
            ext.alwaysUpdateBuildId = false
        }
    }
}

查看下面的文档链接: https://developer.android.com/studio/build/optimize-your-build#disable_crashlytics

另一个我喜欢的简单解决方案,因为它不需要不同的清单文件:

步骤1 -在build.gradle中定义清单占位符

android {
    ...
    buildTypes {
        release {
            manifestPlaceholders = [crashlytics:"true"]
        }
        debug {
            manifestPlaceholders = [crashlytics:"false"]
        }
    }
    ...
}

步骤2 -在AndroidManifest.xml中使用它们

<meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="${crashlytics}" />