mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-10-05 19:28:25 +00:00
main stopped shipping `-dontobfuscate` when the R8 work merged, and this branch has since merged main, so its release build renames classes. The geocaching hub takes its tab as a route argument — `Route.Geocaches(initialTab: GeocacheTab?)` — and androidx.navigation resolves an enum argument with Class.forName on the serial name. A renamed GeocacheTab therefore throws while the nav graph is being built, which is before anything is on screen: the app cannot get past login. It is the same failure DiscoverTab and BookmarkType already have keeps for, on an enum added after those were written. The blanket `-keepclassmembers enum *` does not cover it. That rule pins the constant names and deliberately lets the class be renamed, which is exactly what breaks here. Verified on a play release build of this branch: the contract passes 26/26, mapping.txt carries `...routes.GeocacheTab -> ...routes.GeocacheTab`, and the minified APK starts, reaches the feed and opens the geocaching hub with all five tabs — no FATAL EXCEPTION and no "Cannot find class with name". The new contract line was mutation-tested: renaming the class in a copy of the mapping makes the verifier exit 1 and name it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>