Native crashes on Android have always been harder to debug than they should be.

The platform has its own crash reporter (debuggerd) that captures the crashing thread, every other running thread, register state, and memory maps into a file called a tombstone. Tombstones have been a part of Android for a long time; in fact, they’ve been there in one form or another since Android’s first commit.

The problem: for most of Android’s life, you couldn’t read tombstones programmatically from inside your app. That left SDK-based native crash reporting (like ours) stuck replicating infrastructure the platform already had — at the cost of binary overhead, incomplete Java frame symbolication, and a C++ fork we had to maintain against a moving AOSP target.

Android 11 (SDK level 30) introduced ApplicationExitInfo. Android 12 (SDK level 31) added access to the trace input stream for ApplicationExitInfo.REASON_CRASH_NATIVE.

Sentry’s Android SDK, as of version 8.30.0, reads that stream on all devices running Android 12 and above and ships it as a native crash event. This dramatically improves crash reporting for Android apps that use native code, whether your team wants just basic crash alerts or deep debugging info.