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

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

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


当前回答

最新的最简单的版本时,使用Gradle构建:

if (!BuildConfig.DEBUG) {
    Fabric.with(this, new Crashlytics());
}

它使用来自Fabric的Crashlytics的内置语法,并自动与Gradle构建一起工作。

其他回答

使用风味或构建配置。为开发构建使用单独的构建标识符,所有的崩溃将继续到一个单独的应用程序。在与同行共享构建或在没有调试器的情况下使用它的情况下可以派上用场。就像这样

    productFlavors {
    dev {
        applicationId "io.yourapp.developement"
    }
    staging {
        applicationId "io.yourapp.staging"
    }

    production {
        applicationId "io.yourapp.app"
    }

答:更新 从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

我知道这是个愚蠢的回答 只需注释掉Fabric。with(this, new Crashlytics());,当你想要发布它时,处理它并取消注释。

我遇到了一个奇怪的问题:我按照夏林的答案(也出现在官网上)做了,但没有成功。原来我引用了Fabric包中的BuildConfig,其中还包含一个静态DEBUG变量,即使在调试模式下也被设置为false。

所以,如果你遵循前面提到的解决方案,你仍然得到调试报告,确保你引用了这个:

import com.yourpackagename.BuildConfig;

而不是这个:

import io.fabric.sdk.android.BuildConfig;    

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

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

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

OR

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

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