feature: capture and deobfuscate crashes from minified android builds - #394
Draft
KishanPRao wants to merge 2 commits into
Draft
feature: capture and deobfuscate crashes from minified android builds#394KishanPRao wants to merge 2 commits into
KishanPRao wants to merge 2 commits into
Conversation
melekr
approved these changes
Sep 8, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Apps that ship minified with R8 or ProGuard now report native crashes, and their Java crash and ANR reports can be deobfuscated with the build's mapping file, same flow as the Android SDK.
Changes
consumer-rules.pro: new, tells R8 to leave the SDK's Java classes alone, the crash handler process is started by class name and R8 strips it from minified apps without this.android/build.gradle: bundles the rules file with the package, every app that installs the SDK picks them up without adding rules of its own.examples/sdk/reactNative/android/app/build.gradle: lets CI build the example app minified with a-PbtCiMinifyflag, local builds stay unminified like the template..github/workflows/android.yml: passes that flag, the native crash check now runs against a minified app.BacktraceData.ts: the report payload can now say which kind of deobfuscation the backend should run,sourcemaporproguard.BacktraceReport.ts: a report can carry that choice, set when it is created or later.BacktraceDataBuilder.ts: copies the report's choice into the payload, still pickssourcemapon its own when a debug id is present.dataGenerationTests.spec.ts: checks the payload with no choice, a choice passed at creation, and one set afterwards.BacktraceConfiguration.ts: newproguardoption, switch it on and give it the id of the build's mapping file.BacktraceClient.ts: tags unhandled Java exception and ANR reports for proguard deobfuscation, adds the mapping id as thesymbolication_idattribute on Android reports.index.ts: exports the new option type.proguardSymbolicationTests.spec.ts: new, covers Java crash and ANR reports getting tagged, JS reports left alone, the attribute with and without an id, and iOS ignoring the option.README.md: explains how to turn it on and upload the mapping file, adds the option to the options table.ref: BT-7518