mirror of
https://github.com/bulwarkmail/native.git
synced 2026-10-31 16:06:32 +00:00
Release builds had R8 and resource shrinking off, so every class of every dependency went into the APK unminified: the published 0.1.62 is 42.8 MB for arm64, 25.85 MB of it dex (PF9 in the audit). Turn both on through the properties build.gradle already reads (`android.enableMinifyInReleaseBuilds` and `android.enableShrinkResourcesInReleaseBuilds`). The consumer rules of React Native, Expo, Firebase, ML Kit and the other libraries cover what they load by reflection. The app's own package is kept whole, which costs a few KB and keeps its frames readable in an obfuscated stack trace. Measured on a local x86_64 release build: - APK: 44.7 MB -> 38.0 MB (download size 23.8 MB -> 17.2 MB) - dex: 30.4 MB in 4 files -> 11.3 MB in 2 files - classes: 27,631 -> 16,724 With `-dontobfuscate` the APK would be 38.8 MB (13.5 MB of dex), so obfuscation stays on. Library frames in a release stack trace are now obfuscated; retrace them with that build's `android/app/build/outputs/mapping/release/mapping.txt`. Checked on the emulator: cold start in light and dark mode, German and Russian strings, SENDTO and VIEW mailto and SEND share intents, every sign-in screen, the QR scanner with ML Kit, and an FCM data message starting the headless push task.