<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/i-was-wrong-about-apk-vs-aab-for-years-here-s-what-actually-happens-akzeducky" -->

---
title: I Was Wrong About APK vs AAB for Years — Here’s What...
description: A Flutter developer explains the real difference between APK and AAB formats after years of using them without fully understanding the mechanism. An APK is a...
canonical: https://daily.dev/posts/i-was-wrong-about-apk-vs-aab-for-years-here-s-what-actually-happens-akzeducky
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: I Was Wrong About APK vs AAB for Years — Here’s What Actually Happens | daily.dev
og:description: A Flutter developer explains the real difference between APK and AAB formats after years of using them without fully understanding the mechanism. An APK is a...
og:url: https://daily.dev/posts/i-was-wrong-about-apk-vs-aab-for-years-here-s-what-actually-happens-akzeducky
og:image: https://api.daily.dev/og/posts/AkZedUCKy.png
og:image:alt: I Was Wrong About APK vs AAB for Years — Here’s What Actually Happens
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# I Was Wrong About APK vs AAB for Years — Here’s What Actually Happens

**[Medium](https://daily.dev/sources/medium_js)** · 4 min read · 1 upvotes · 0 comments

## Summary

A Flutter developer explains the real difference between APK and AAB formats after years of using them without fully understanding the mechanism. An APK is a self-contained installable file that bundles all architectures, screen densities, and languages. An AAB is a publishing format containing all raw assets plus metadata; Google Play's Dynamic Delivery reads it and generates a device-specific APK containing only the native libraries, drawables, and locale resources that particular device needs. This eliminates dead weight like unused CPU architecture binaries (arm64-v8a, armeabi-v7a, x86, x86_64) that a traditional APK must carry for all possible devices.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://medium.com/@smitp7502/i-was-wrong-about-apk-vs-aab-for-years-heres-what-actually-happens-014b92cbf342>

## Questions this post answers

### Why is an Android App Bundle (AAB) not smaller than an APK if it's supposed to reduce app size?

An AAB is not actually smaller than an APK — it contains the same code, resources, and all CPU architectures, plus metadata describing how to split that content. Google Play's Dynamic Delivery system reads this metadata and generates a smaller, device-specific APK at download time, built only from the pieces (architecture, density, language) that device needs.

_Developers untangling Android packaging internals can find deeper explainers like this through daily.dev._

### How does Google Play Dynamic Delivery decide which native .so libraries to include in an installed APK?

Dynamic Delivery inspects the requesting device's CPU architecture (arm64-v8a, armeabi-v7a, x86, or x86_64) and generates an APK containing only the native library files for that architecture, rather than bundling all of them as a traditional APK would. The same selective approach applies to screen density drawables and locale-specific language resources.

_Anyone optimizing Android app size can track explanations of Play Store internals via daily.dev._

## Similar posts on daily.dev

- [You Upload an AAB… But Users Still Install APKs. Here’s What Google Play Actually Does](https://daily.dev/posts/you-upload-an-aab-but-users-still-install-apks-here-s-what-google-play-actually-does-4xtkcekee) · ProAndroidDev · 0 upvotes · 0 comments
- [Ever Wonder How APKs Get Generated? Understanding What Happens to Kotlin and Dart Code](https://daily.dev/posts/ever-wonder-how-apks-get-generated-understanding-what-happens-to-kotlin-and-dart-code-omibsga8u) · Medium · 0 upvotes · 0 comments
- [React Native OTA Updates: What You Can \(and Can't\) Deploy Over the Air](https://daily.dev/posts/react-native-ota-updates-what-you-can-and-can-t-deploy-over-the-air-l8luxpcxf) · codemagic · 1 upvotes · 0 comments
- [The end of the “Fat AAR” hack: mastering the AGP Fused Library Plugin](https://daily.dev/posts/the-end-of-the-fat-aar-hack-mastering-the-agp-fused-library-plugin-jschjemvp) · droidcon · 0 upvotes · 0 comments

---

Tags: [#android](https://daily.dev/tags/android), [#flutter](https://daily.dev/tags/flutter), [#google-play](https://daily.dev/tags/google-play)

[View this post on daily.dev](https://daily.dev/posts/i-was-wrong-about-apk-vs-aab-for-years-here-s-what-actually-happens-akzeducky)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"I Was Wrong About APK vs AAB for Years — Here’s What Actually Happens","url":"https://daily.dev/posts/i-was-wrong-about-apk-vs-aab-for-years-here-s-what-actually-happens-akzeducky","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/i-was-wrong-about-apk-vs-aab-for-years-here-s-what-actually-happens-akzeducky"},"datePublished":"2026-07-20T19:31:40.026Z","dateModified":"2026-09-14T06:25:21.453Z","description":"A Flutter developer explains the real difference between APK and AAB formats after years of using them without fully understanding the mechanism. An APK is a...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/e4a4437803ae69caedc077e2a45ceccf?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/e4a4437803ae69caedc077e2a45ceccf?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Medium","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Medium","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium","url":"https://daily.dev/sources/medium_js"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/i-was-wrong-about-apk-vs-aab-for-years-here-s-what-actually-happens-akzeducky","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"android,flutter,google-play","timeRequired":"PT4M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Medium","item":"https://daily.dev/sources/medium_js"},{"@type":"ListItem","position":3,"name":"I Was Wrong About APK vs AAB for Years — Here’s What Actually Happens"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/i-was-wrong-about-apk-vs-aab-for-years-here-s-what-actually-happens-akzeducky#faq","mainEntity":[{"@type":"Question","name":"Why is an Android App Bundle (AAB) not smaller than an APK if it's supposed to reduce app size?","acceptedAnswer":{"@type":"Answer","text":"An AAB is not actually smaller than an APK — it contains the same code, resources, and all CPU architectures, plus metadata describing how to split that content. Google Play's Dynamic Delivery system reads this metadata and generates a smaller, device-specific APK at download time, built only from the pieces (architecture, density, language) that device needs. Developers untangling Android packaging internals can find deeper explainers like this through daily.dev."}},{"@type":"Question","name":"How does Google Play Dynamic Delivery decide which native .so libraries to include in an installed APK?","acceptedAnswer":{"@type":"Answer","text":"Dynamic Delivery inspects the requesting device's CPU architecture (arm64-v8a, armeabi-v7a, x86, or x86_64) and generates an APK containing only the native library files for that architecture, rather than bundling all of them as a traditional APK would. The same selective approach applies to screen density drawables and locale-specific language resources. Anyone optimizing Android app size can track explanations of Play Store internals via daily.dev."}}]}
```

