Core Concepts
App Size and Delivery
Why every megabyte you ship costs install rate and startup time, and the delivery pipeline an interviewer probes when "app size" or "cold start" lands on the table.
Shipping an Android app is not the same shape as compiling it. The build produces source artifacts; the delivery pipeline decides what bytes the user's device downloads, what gets AOT-compiled before first launch, and what runs as bytecode. This page covers the AAB as the upload format, R8 as shrinker / optimizer / obfuscator, resource shrinking, baseline profiles as install-time AOT hints, dynamic feature modules, and the per-install size budget. The Gradle / AGP plumbing under all of this is covered in Build Systems; this page is the delivery-side view.
APK vs AAB
The APK has been Android's install artifact since v1: a signed zip containing classes.dex, resources, native .so libraries, and a manifest. For a decade it was also the distribution format - the same APK shipped to every device.