To achieve maximum utilization of R8, the codebase must be configured correctly depending on the build script language (Kotlin DSL vs. Groovy DSL).
1. App Modules (com.android.application)
The app's build.gradle or build.gradle.kts file should enable minification
and resource shrinking within the release build type or the apps custom build
type for release and performance testing. It MUST use the optimized default file
(proguard-android-optimize.txt).
Kotlin DSL (build.gradle.kts):
buildTypes {
getByName("release") {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
Groovy DSL (build.gradle):
buildTypes {
release {
minifyEnabled = true
shrinkResources = true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
2. gradle.properties Flags
Full Mode: R8 Full Mode enables the entire optimizations
- AGP 8.0+: Enabled by default. Ensure
android.enableR8.fullMode=falseis NOT present. - Pre-AGP 8.0: Should be explicitly enabled with
android.enableR8.fullMode=true.
Optimized Resource Shrinking: If the AGP version of the project is less than 9.0 and more than 8.6, explicitly enable the new resource shrinker:
android.r8.optimizedResourceShrinking=true