有没有什么简单的方法可以在开发过程中关闭Crashlytics Android SDK ?
我不希望每次我做一些愚蠢的事情时它都会崩溃
另一方面,我不想注释掉Crashlytics.start(),可能会忘记取消注释并提交
有没有什么简单的方法可以在开发过程中关闭Crashlytics Android SDK ?
我不希望每次我做一些愚蠢的事情时它都会崩溃
另一方面,我不想注释掉Crashlytics.start(),可能会忘记取消注释并提交
当前回答
如果您的应用程序中还没有一个类,请创建一个从Application扩展而来的类。
然后执行以下步骤:
public class BaseApplication extends Application { // extend from MultidexApplication if multidex is required by your application
@Override
public void onCreate() {
super.onCreate();
/*
* Crashlytics is enabled by default,
* Disable it for debug builds & USB Debugging
* */
if(BuildConfig.DEBUG){
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(false);
}
}
}
不要忘记在AndroidManifest.xml中添加该类
<application
android:name=".BaseApplication"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
........>
其他回答
如果你担心BuildConfig。调试没有正确设置,请使用ApplicationInfo代替:
boolean isDebug = ( mAppContext.getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE ) != 0;
Crashlytics crashlytics = new Crashlytics.Builder().disabled( isDebug ).build();
Fabric.with( uIContext, crashlytics );
2022答案使用FirebaseCrashlytics。
有两种情况:
如果你想禁用Crashlytics数据收集的所有应用程序运行(如禁用Crashlytics在调试模式),那么你需要禁用它的清单文件通过设置标志firebase_crashlytics_collection_enabled为false
构建。gradle(应用):
// Next two flags to enable/disable Crashlytics
def enableCrashlyticsInDebugBuild = false
def enableCrashlyticsInReleaseBuild = true
android {
buildTypes {
release {
manifestPlaceholders = [crashlyticsEnabled:"${enableCrashlyticsInReleaseBuild}"]
}
debug {
manifestPlaceholders = [crashlyticsEnabled:"${enableCrashlyticsInDebugBuild}"]
}
}
}
然后在清单文件中将其添加到application标签下。
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="${crashlyticsEnabled}" />
如果你想禁用Crashlytics的一些用户,当他们选择退出数据收集。
要处理这个问题,您应该使用setCrashlyticsCollectionEnabled方法。
Kotlin API (Java API类似):
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(false)
当设置为false时,新值直到下次运行应用程序才适用。
引用:
https://firebase.google.com/docs/crashlytics/customize-crash-reports?platform=android#enable-reporting https://firebase.google.com/docs/reference/kotlin/com/google/firebase/crashlytics/FirebaseCrashlytics#setcrashlyticscollectionenabled
看看最新的医生。 https://docs.fabric.io/android/crashlytics/build-tools.html gradle-advanced-setup。
除了在构建中添加ext.enableCrashlytics = false。你需要做的成绩,
Crashlytics crashlyticsKit = new Crashlytics.Builder()
.core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
.build();
// Initialize Fabric with the debug-disabled crashlytics.
Fabric.with(this, crashlyticsKit);
2019的答案
我一直在尝试只在发行版中启用Crashlytics,在调试中禁用2小时,检查Firebase控制台,看看异常是否上传。
有两种可能的方法。
选项1
它工作,但如果你在调试构建调用任何Crashlytics方法,应用程序将崩溃。
app / build.gradle
android {
buildTypes {
release {
manifestPlaceholders = [crashlyticsEnabled: true]
}
debug {
manifestPlaceholders = [crashlyticsEnabled: false]
}
AndroidManifest.xml
<manifest
<application
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="${crashlyticsEnabled}" />
选项2
如果允许您调用Crashlytics方法而不检查BuildConfig,则可以选择此方法。调试。有了这个设置,你可以安全地调用Crashlytics.logException()这样的方法——它们在调试版本中什么都不做。我在调试中没有看到报告被上传。
app / build.gradle
android {
buildTypes {
release {
ext.enableCrashlytics = true
}
debug {
ext.enableCrashlytics = false
}
AndroidManifest.xml
<manifest
<application
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="false" />
应用程序onCreate ()
val crashlytics = Crashlytics.Builder()
.core(CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
.build()
Fabric.with(this, crashlytics)
如果您的应用程序中还没有一个类,请创建一个从Application扩展而来的类。
然后执行以下步骤:
public class BaseApplication extends Application { // extend from MultidexApplication if multidex is required by your application
@Override
public void onCreate() {
super.onCreate();
/*
* Crashlytics is enabled by default,
* Disable it for debug builds & USB Debugging
* */
if(BuildConfig.DEBUG){
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(false);
}
}
}
不要忘记在AndroidManifest.xml中添加该类
<application
android:name=".BaseApplication"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
........>