Interview QuestionPractical QuestionFollow-up Questions

Reducing Android Application Size

skydovesJaewoong Eum (skydoves)||7 min read

Reducing Android Application Size

Optimizing an Android application's size directly affects download conversion rates, installation success on storage constrained devices, and update adoption. Multiple strategies work together to minimize the final APK or AAB size, ranging from build configuration to resource optimization and modular delivery. By the end of this lesson, you will be able to:

  • Configure R8 code shrinking and resource shrinking in the build.
  • Explain how Android App Bundles generate device specific APKs.
  • Identify how native library filtering and image format choices reduce binary size.
  • Apply dynamic feature modules to defer loading of infrequently used features.

Code Shrinking with R8

R8 is the default code shrinker and optimizer for Android. When enabled, it removes unused classes, methods, and fields from the final binary. It also performs bytecode optimization and name obfuscation, which further reduces the DEX file size.

android {
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile(
                'proguard-android-optimize.txt'
            ), 'proguard-rules.pro'
        }
    }
}

Setting minifyEnabled true enables R8 code shrinking. Setting shrinkResources true removes resources that are not referenced by the remaining code after shrinking. ProGuard rules ensure that classes accessed via reflection or required by libraries are preserved.

Resource Optimization

Image resources often account for a significant portion of the APK size. Several strategies reduce their footprint:

Vector drawables replace raster images for scalable graphics. A single vector XML file replaces multiple density specific PNGs, reducing both file count and total size.

WebP format provides better compression than PNG or JPEG with comparable quality. Converting existing raster images to WebP is one of the most effective single step optimizations.

android {
    defaultConfig {
        vectorDrawables.useSupportLibrary = true
    }
}

Image compression tools like TinyPNG or ImageMagick can further reduce raster image sizes without visible quality loss.

Android App Bundles

This interview continues for subscribers

Subscribe to Dove Letter for full access to exclusive interviews about Android and Kotlin development.

Become a Sponsor