Analysis of R8 Class Reflection Optimization and Obfuscation Issues in Android Builds
The article explains how a missing keep rule caused R8’s pre‑AGP 8 reflection optimizer to skip a class because its interface wasn’t in the allowed set, leading to the class name being obfuscated and mismatched in static‑block initialization via Class.forName, and describes the optimizer’s behavior and fixes.