Skip to content

Client-side debug build crash aggregator and uploader #215

@JakeWharton

Description

@JakeWharton

In every app I've ever written, I've had the debug build on my phone as well as the release build. I tend to use the debug build day-to-day and perhaps some others do to be on the bleeding edge. I usually also have an out-of-band update mechanism to grab the latest debug build from CI.

This is fun as a developer to use the bleeding edge of your product. The downside, however, is crashes caused by the inherent unstability of these builds. It's expected!

Most developers disable crash reporting in debug builds. This prevents cluttering the website with problems that are programming mistakes which never will see the light of day. This significantly reduces noise.

The problem is that a lot of times legitimate crashes occur on these builds and are lost. If I'm actively developing chances are I'll say "I'll get back to that" or "I'll report a bug for that" and never do. If i'm away from a computer, the stacktrace and information is long gone by the time that I am.

In most of the apps I've built, we distinguish CI-built debug builds vs. local-built debug builds. This lets us turn on crash reporting for people who are just driving the latest build vs. those who are actively working on it. This works great, but it only solves half the problem and legitimate crashes during development are oft forgot.

So I'd like to propose a new module be added to this project which provides a debug-only activity and infrastructure that captures these crashes and aggregates them locally. When the crash occurs, a notification is shown with a summary. It has notification actions to "report" or "ignore". Clicking on it opens the debug-only activity which provides all of the information that would have otherwise been uploaded to Bugsnag with the familar tab interface. Here we can also choose to report or ignore this notification or others we've encountered in the past.

If you've every used or seen LeakCanary, I'm envisioning it works something like that. When enabled, as an alternative form of the notifier, it captures and aggregates locally and provides options to upload or ignore.

This certainly isn't something that's specific to Android and could be applied across nearly all of your products. But I'm an Android developer, and so maybe we can be the platform which beta tests such functionality.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions