Define the measurement boundary
The APK file size is the bytes occupied by that artifact on disk. A download estimate models transfer compression or delivery assumptions. Installed size includes how Android stores the package and associated files; app data, caches and downloaded assets can increase it further after launch.
A Play App Bundle introduces another distinction: Play generates device-specific APKs. The complete AAB and a universal APK are not representative of every user's download. App-size guidance.
Compare the same artifact type
Use the Android command-line analyzer for a reproducible starting point:
apkanalyzer apk file-size app-release.apk
apkanalyzer apk download-size app-release.apk
apkanalyzer files list app-release.apk
Label the second result as an estimate. Do not present it as an observed download from Google Play. For a delivered-size question, generate or inspect the APK set for the same device configuration and compare like with like. Analyzer size commands.
An example of a misleading comparison
Imagine an old universal APK contains arm64 and 32-bit native libraries, while a new device-specific APK contains only arm64. The new file is smaller even if the developer changed no code. Claiming that a new optimizer achieved that reduction would confuse packaging with optimization.
The same problem appears when comparing a debug Flutter APK with a release AAB. Build mode, code shrinking and distribution format all change at once. Freeze those variables before attributing savings to one change.
Build a useful size budget
Track at least four numbers in release notes: the build artifact size, the selected delivery estimate, the largest packaged categories and the user-storage figure after a defined workflow. For the last measurement, specify whether the app has downloaded media, opened a database or warmed caches.
Use a budget tied to product needs rather than an arbitrary universal target. A map application with offline tiles and a one-screen calculator have different resource requirements.
Optimize the contributor that matches the complaint
If installation fails because the device lacks space, a download-only reduction may not solve the issue. If a mobile-data download is too large, remove unnecessary delivered assets or adopt targeted delivery. If storage grows after use, investigate caches and downloaded content instead of only shrinking DEX.
APKLint's Size Analyzer reports packaged contributions and selected large entries. Treat that as an attribution aid, not a claim about every device's download, installed storage or memory consumption.
Keep a measurement ledger with units
Use separate columns for artifact bytes, estimated transfer bytes and observed device storage. For an illustrative build, 20,000,000 bytes is 20 MB in decimal units and about 19.07 MiB in binary units. A change between those labels is not a reduction in the package. Record bytes as the underlying value and format the display consistently before calculating a percentage.
Suppose the artifact falls from 20,000,000 to 18,000,000 bytes. That is a 10 percent reduction relative to the old artifact. If the selected device's estimated transfer instead falls from 12,000,000 to 11,400,000 bytes, the estimated transfer reduction is 5 percent. Keep both results with their measurement methods. Reporting the larger percentage as the user's observed download saving would combine unlike evidence.
Define the storage workflow before measuring
For a notes app, measure after a fresh installation, after signing in and synchronizing a fixed synthetic notebook, and after opening its attachments. Record whether you cleared app data between runs. If the candidate changes its cache policy, the second or third measurement may improve while the APK itself is unchanged. Conversely, smaller packaged icons may make almost no difference once the notebook contains hundreds of megabytes of attachments.
Use a test account whose data set is held constant and avoid taking the readings while synchronization is still running. Note the Android version, selected splits and whether optional content was downloaded. Android's app-size guidance is useful for packaged contributors, but your user-storage experiment needs its own reproducible task boundary.
If the product complaint is “updates use too much mobile data,” include the previous installed version and update path in the investigation. A clean-install estimate does not establish the bytes transferred by an incremental update. Present estimates as estimates, and describe an actual measured network transfer only when the capture method and test path are known.
Sources and further reading
Reference review: 29 September 2026. Examples illustrate the workflow; check your installed versions, release artifact and account-specific Console requirements before applying them. This guide is not a claim that APKLint executed your project or verified your private account.


