web-dev-qa-db-ja.com

FirebaseアプリでCrashlyticsを無効にできない(もう)

com.crashlytics.sdk.Android:crashlytics:2.7.1@aar(2.6.8から)にアップグレードした後、FirebaseアプリでCrashlyticsを無効にすることができなくなりました。

Crashlyticsライブラリ自体に、Firebaseアプリケーション内で実行されていることを検出すると、CrashlyticsキットenabledでFabricを初期化するコードがあるようです。実際に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);
16
J. Williams

ファブリックのマイクはこちら。使用する:

<meta-data Android:name="firebase_crashlytics_collection_enabled" Android:value="false" />

firebaseの使用中にCrashlyticsを無効にする場合。

23
Mike Bonnell

マイクの答えによると、私は私のコードを追加します:

グラドル:

buildTypes {
   release {
        manifestPlaceholders = [crashlyticsEnabled: true]
    }

    debug {
        manifestPlaceholders = [crashlyticsEnabled: false]
    }
}

Manifest.xml:

<meta-data
    Android:name="firebase_crashlytics_collection_enabled"
    Android:value="${crashlyticsEnabled}" />
32
itzhar

上記のマイクと一緒に、

コードのどこかにFirebaseクラッシュプロパティを設定する場合は、デバッグコード用に設定しないでください。そうしないと、アプリの奇妙な動作に気付く場合があります。

   if (!BuildConfig.DEBUG) {
       Crashlytics.setUserIdentifier(DataStore.storeId)
   }
1
Ninja420