无法在 Firebase 应用中禁用 Crashlytics(不再)
Can't disable Crashlytics in a Firebase app (anymore)
升级到 com.crashlytics.sdk.android:crashlytics:2.7.1@aar
(从 2.6.8 开始)后,我无法再在我的 Firebase 应用中禁用 Crashlytics。
似乎在 Crashlytics 库本身中有一些代码会使用 Crashlytics 工具包 启用 初始化 Fabric,只要它检测到 运行 在 Firebase 应用程序中。确实在启用 Crashlytics 和 ext.enableCrashlytics = false
的情况下进行初始化会抛出 UnmetDependencyException 并在启动时使应用程序崩溃(事实上,在我的 Application.onCreate
中的代码运行之前)。
有人知道解决方法吗?目前坚持使用 2.6.8 是可行的。
这是我在升级前一直有效的代码:
app/build.gradle:
ext.enableCrashlytics = false
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);
这里是来自 Fabric 的迈克。使用:
<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
如果您想在使用 Firebase 时禁用 Crashlytics。
根据迈克的回答,我添加我的代码:
Gradle:
buildTypes {
release {
manifestPlaceholders = [crashlyticsEnabled: true]
}
debug {
manifestPlaceholders = [crashlyticsEnabled: false]
}
}
Manifest.xml:
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="${crashlyticsEnabled}" />
与上面的麦克风一起回答,
如果您在代码中的某处设置 firebase 崩溃属性,请确保您没有为调试代码设置它们,否则您可能会注意到应用的奇怪行为。
if (!BuildConfig.DEBUG) {
Crashlytics.setUserIdentifier(DataStore.storeId)
}
升级到 com.crashlytics.sdk.android:crashlytics:2.7.1@aar
(从 2.6.8 开始)后,我无法再在我的 Firebase 应用中禁用 Crashlytics。
似乎在 Crashlytics 库本身中有一些代码会使用 Crashlytics 工具包 启用 初始化 Fabric,只要它检测到 运行 在 Firebase 应用程序中。确实在启用 Crashlytics 和 ext.enableCrashlytics = false
的情况下进行初始化会抛出 UnmetDependencyException 并在启动时使应用程序崩溃(事实上,在我的 Application.onCreate
中的代码运行之前)。
有人知道解决方法吗?目前坚持使用 2.6.8 是可行的。 这是我在升级前一直有效的代码:
app/build.gradle:
ext.enableCrashlytics = false
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);
这里是来自 Fabric 的迈克。使用:
<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
如果您想在使用 Firebase 时禁用 Crashlytics。
根据迈克的回答,我添加我的代码:
Gradle:
buildTypes {
release {
manifestPlaceholders = [crashlyticsEnabled: true]
}
debug {
manifestPlaceholders = [crashlyticsEnabled: false]
}
}
Manifest.xml:
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="${crashlyticsEnabled}" />
与上面的麦克风一起回答,
如果您在代码中的某处设置 firebase 崩溃属性,请确保您没有为调试代码设置它们,否则您可能会注意到应用的奇怪行为。
if (!BuildConfig.DEBUG) {
Crashlytics.setUserIdentifier(DataStore.storeId)
}