Timber + Crashlytics → A match made in heaven DAMIAN MARUŠIĆ
Timber.plant(new Timber.DebugTree());
Timber.d(...) Timber.i(...) Timber.v(...) Timber.e(...) Timber.w(...) Timber.wtf(...)
CRASHLYTICS
• Crash reporting tool
• Automatic and manual crash reports
• Stack trace
• Android version
• Device model
• etc.
CRASH REPORTING TREE
private static class CrashReportingTree extends Timber.Tree { @Override protected void log(int priority, String tag, String message, Throwable t) { if (priority == Log.VERBOSE || priority == Log.DEBUG) { return; } // will write to the crash report but NOT to logcat Crashlytics.log(message); if (t != null) { Crashlytics.logException(t); } }}
CRASH REPORTING TREE
@Overridepublic void onCreate() { super.onCreate(); CrashlyticsCore crashlyticsCore = new CrashlyticsCore.Builder()
.disabled(BuildConfig.DEBUG).build(); Fabric.with(this, new Crashlytics.Builder().core(crashlyticsCore).build());
if (BuildConfig.DEBUG) { Timber.plant(new Timber.DebugTree()); } else { Timber.plant(new CrashReportingTree()); } }
APP CRASH HANDLER EXAMPLE
public class AppCrashHandler implements Thread.UncaughtExceptionHandler { private Activity liveActivity; public AppCrashHandler(Application application) { application.registerActivityLifecycleCallbacks(new Application.ActivityLifecycleCallbacks() { @Override public void onActivityResumed(Activity activity) { liveActivity = activity; } @Override public void onActivityPaused(Activity activity) { liveActivity = null; } }); } @Override public void uncaughtException(Thread thread, Throwable ex) { if(liveActivity != null){ Intent intent = new Intent(getApplicationContext(), MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); liveActivity.finish(); liveActivity.startActivity(intent); } System.exit(0); } }
APP CRASH HANDLER EXAMPLE
@Overridepublic void onCreate() { super.onCreate(); Thread.setDefaultUncaughtExceptionHandler(new AppCrashHandler(this)); }
Thank you! [email protected]
Visit infinum.co or find us on social networks:
infinum.co infinumco infinumco infinum
REFERENCES
• Timber - https://github.com/JakeWharton/timber
• Square’s approach to Android crashes - https://vimeo.com/145042944
• Željko’s crash handler lib - https://github.com/zplesac/android-crash-handler