While working on Update your apps to use latest Firebase Crashlytics SDKs before November 15, 2020
, After i activate my custom UncaughtExceptionHandler
, it won't send crash to Crashlytics anymore.
Below code i set it inside onCreate()
of Application
.
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();
crashlytics.setCrashlyticsCollectionEnabled(!BuildConfig.DEBUG); // only release able to send.
crashlytics.sendUnsentReports(); // send reports
Thread.setDefaultUncaughtExceptionHandler((t, e) -> {
FirebaseCrashlytics.getInstance().recordException(e); // record exception.
// below things are restart app when crash appeared.
PackageManager packageManager = getPackageManager();
Intent intent = packageManager.getLaunchIntentForPackage(getPackageName());
if (intent != null) {
ComponentName componentName = intent.getComponent();
Intent mainIntent = Intent.makeRestartActivityTask(componentName);
startActivity(mainIntent);
Runtime.getRuntime().exit(0);
}
});
When I remove custom UncaughtExceptionHandler
, it is able to report to Crashlytics.
Below code is working perfectly when using Fabric library. (https://stackoverflow.com/a/49266303/4316327)
CrashlyticsCore core = new CrashlyticsCore.Builder()
.disabled(BuildConfig.DEBUG)
.build();
Fabric.with(new Fabric.Builder(this).kits(new Crashlytics.Builder()
.core(core).build()).initializationCallback(new InitializationCallback<Fabric>() {
@Override
public void success(Fabric fabric) {
Thread.setDefaultUncaughtExceptionHandler((t, e) -> {
LogWrapper.logException(e);
PackageManager packageManager = getPackageManager();
Intent intent = packageManager.getLaunchIntentForPackage(getPackageName());
if (intent != null) {
ComponentName componentName = intent.getComponent();
Intent mainIntent = Intent.makeRestartActivityTask(componentName);
startActivity(mainIntent);
Runtime.getRuntime().exit(0);
}
});
}
@Override
public void failure(Exception e) {
e.printStackTrace();
}
}).build());
Any solution on this? Any help would be greatly appreciated. Thank alot.