It’s a non-transitive R class world
Feb 1, 2023

Summary
This post details the migration of Slack's Android codebase to use non-transitive R classes. It outlines the challenges of referencing resources, establishes conventions for Kotlin (import aliases) and Java (fully-qualified names), and describes a chosen migration strategy that involved find-and-replace operations and scripting due to the scale of the codebase. It also covers developer experience enhancements like live templates and custom lint checks for convention enforcement. The migration yielded a ~14% improvement in incremental build times and an ~8.5% reduction in APK/DEX size.