在Android库项目中禁用Crashlytics进行调试

在Android库项目中禁用Crashlytics进行调试,android,module,crashlytics,Android,Module,Crashlytics,我有一个多模块的项目。模块的公共代码位于库模块中。问题是我们最近在项目中(在库模块中)添加了Crashlytics,即使在调试模式下,我们也会不断收到错误报告 我在互联网上搜索,发现图书馆总是被视为一种发布模式。现在我的问题是,在我的情况下,有没有办法禁用Crashlytics?假设您从主模块(被识别为处于调试状态)启用Crashlytics/Fabric,只需有条件地初始化它,使其在调试模式下不会激活 e、 g 在我的应用程序中(一个模块,多个口味),我检测到了味道,并且只在我想要的口味中初始

我有一个多模块的项目。模块的公共代码位于库模块中。问题是我们最近在项目中(在库模块中)添加了Crashlytics,即使在调试模式下,我们也会不断收到错误报告


我在互联网上搜索,发现图书馆总是被视为一种发布模式。现在我的问题是,在我的情况下,有没有办法禁用Crashlytics?

假设您从主模块(被识别为处于调试状态)启用Crashlytics/Fabric,只需有条件地初始化它,使其在调试模式下不会激活

e、 g

在我的应用程序中(一个模块,多个口味),我检测到了味道,并且只在我想要的口味中初始化Crashlytics

在我的例子中,我在build.gradle中添加了一个变量,如下所示:

productFlavors {
        Dev { // i.e. gradlew assembleDevDebug
            buildConfigField 'Boolean', 'enableCrashlytics', 'false'
        }

        Qa { // i.e. gradlew assembleQaDebug
            buildConfigField 'Boolean', 'enableCrashlytics', 'true'
        }
}
然后,在我的应用程序类中,我有条件地启动Crashlytics:

if(BuildConfig.enableCrashlytics == true) {
   Fabric.with(this, new Crashlytics());
}

是的,我现在应该检查它是否处于调试模式,但这就是问题所在。库模块总是被视为处于发布状态。但正如我所说,您是从主应用程序而不是从库运行上述代码。我在堆栈上的多个位置看到了这个答案,但它会在我调用Crashlytics.log()的任何位置导致崩溃。有人能证实这一点吗?@jwBurnside我认识到这已经晚了几年,但我会向未来的读者说明:是的,在不首先调用Fabric.with()的情况下调用Crashlytics.log()会使应用程序崩溃,所以我不建议说“我们只在发布版本中初始化Crashlytics”。这是一个很好的观点。我(在我的应用程序类中)跟踪Crashlytics是否已初始化,如果已初始化,则只调用Crashlytics.log()。事实上,我使用Timber进行日志记录,并且对开发和产品有不同的日志记录“树”。在记录错误时,产品树调用Crashlytics.log(),而开发日志不调用。我以这种方式禁用crashlyticcore=new crashlyticcore.Builder().disabled(BuildConfig.DEBUG).build();Fabric.with(这是新的Crashlytics.Builder().core(core.build());如果要删除库模块上的“仅限发布”限制,请访问stackoverflow.com/questions/35312743。我在我的项目中遇到了同样的问题。
if(BuildConfig.enableCrashlytics == true) {
   Fabric.with(this, new Crashlytics());
}