i'm the developer of rkmovies, a 4k media player that ships as the tiny android apk page (1.17 mb) and the windows setup page (29.5 mb), with the web app on my little project site . people keep asking how an apk that plays 4k stays under 2 mb, so i ran apkanalyzer on my own release build and read the breakdown. this is what's inside.
the honest headline: there's almost nothing in it. a universal apk has four big buckets: classes.dex (your code), res/ + resources.arsc (layouts, strings, images), lib/ (native .so per abi), and META-INF/ (signatures). mine has no lib/ at all β zero native libraries β because the app is a webview shell that hands decoding to the device's mediacodec. that single decision is the whole size story.
dex was the first fight. r8 full mode + shrinkResources on the release build strips unreachable code and unused resources. the rule i live by now: features don't cost size, dependencies do. every library i add is measured with apkanalyzer -h apk file-size before and after.β¦