APK和AAB有什么区别?为什么要从APK切换到AAB?
APK和AAB有什么区别?为什么要从APK切换到AAB?
一个正在发生的变革
如果你在2021年之后下载过Google Play上的App,你可能已经悄悄地用上了AAB——而不自知。
从2021年8月起,Google Play要求所有新应用必须使用**Android App Bundle(AAB)**格式提交。这意味着你在Google Play下载的绝大多数新App,背后都是AAB,而不是传统的APK。
但APK并没有消失。第三方应用商店、侧载安装、Gptoapk.com等第三方APK下载站——这些地方仍在使用APK格式。
两者到底有什么区别?AAB真的更好吗?为什么有人还在坚持用APK?
一、APK和AAB的本质区别
APK(Android Package Kit)
APK存在了将近15年——从Android 1.0时代就开始用。
它是完整的:一个APK文件包含App的所有内容——所有语言、所有屏幕分辨率、所有CPU架构的资源。不管你用哪个设备下载,下载的都是同样的完整包。
优点:拿到就能用,直接安装,零依赖
AAB(Android App Bundle)
AAB是2018年引入的新格式,2021年成为Google Play强制标准。
它不是完整的:AAB并不是一个可安装的文件。它只是一个"材料包",包含App的所有资源,但不打包在一起。当你从Google Play下载App时,Play服务器会根据你的设备特征(屏幕分辨率、语言、CPU架构),从AAB中提取出你需要的部分,拼成一个针对你设备优化的APK。
| 对比维度 | APK | AAB |
|---|---|---|
| 文件后缀 | .apk | .aab |
| 诞生时间 | 2008年 | 2018年 |
| 安装方式 | 直接安装 | 需要通过Google Play或bundletool转换 |
| 文件大小 | 较大(包含所有资源) | 用户实际下载只占一部分 |
| 分发渠道 | 一切渠道 | 仅Google Play(官方) |
| 侧载支持 | ✅ 方便 | ❌ 不能直接安装 |
二、为什么Google要推AAB?
1. 更小的下载体积
这是最核心的优势。
以一个支持33种语言、4种屏幕密度、2种CPU架构的App为例:
| 格式 | 用户下载大小 | 节省空间 |
|---|---|---|
| 旧版APK(不分包) | 150MB | — |
| 新版APK(多APK分包) | 100MB | 33% |
| AAB动态发放 | 45MB | 70% |
用户只下载自己需要的那部分,不浪费流量和空间。
2. 自动适配不同设备
- 你的手机是arm64+中文+xxxhdpi屏幕→ AAB只提供这一套资源
- 平板电脑是arm64+英文+xhdpi屏幕→ AAB给不同的资源
开发者只需要提交一个AAB文件,Google Play自动处理所有适配。
3. Play Feature Delivery(按需下载)
AAB支持条件功能交付(Conditional Delivery):
- 核心功能:安装时提供
- 附加功能:运行时按需下载(比如游戏的后期关卡)
- 昂贵资源:只在特定条件下提供
这让App的首次安装体积大幅减小,安装率上升。
三、为什么APK仍然重要?
1. 侧载安装
超过90%的Android设备支持APK侧载,这是AAB做不到的:
- 从第三方网站下载App
- 手机之间分享App
- 在没有Google Play的设备上安装App(华为、部分国产手机)
- 安装Mod版App
- 测试自己开发的App
2. 不受Google Play限制
AAB完全依赖Google Play的分发能力。如果你的App因为某些原因不在Google Play上架(或者被下架了),AAB就没有任何意义。
APK给了用户分发自由的选项。
3. 保留版本控制
用APK你可以:
- 选择不升级某个App
- 降级到旧版本(如果新版本有问题)
- 保留某个功能被砍掉之前的版本
- 安装特定区域的版本
用Google Play自动更新,你没有这些控制权。
四、如果你想自己从AAB转APK
有一个官方工具:bundletool
# 1. 下载 bundletool(Java应用)# https://github.com/google/bundletool# 2. 从AAB生成通用APK集java-jarbundletool build-apks\--bundle=app.aab\--output=app.apks\--mode=universal# 3. 解压 .apks 文件(它其实是个ZIP)unzipapp.apks-dapk-output/# 4. 你会得到 universal.apk → 这就是可以在任何设备上安装的完整APK这样你就能从 AAB"提取"出传统 APK,用于侧载或第三方分发。五、作为用户,你需要关心什么? 如果你只用 Google Play 你不需要关心 APK 还是 AAB。Google Play 帮你处理了一切。你甚至不会知道自己下载的是什么格式——对于你来说,只是"安装了一个 App"。 需要注意:AAB 发布的 App,如果你备份 APK 到本地,这些 APK 是"设备专属"的,换一部手机就不能用了。 如果你经常侧载 APK 你需要关心 APK 是否安全: * 来源可靠吗?(官网?知名开发者?) * 病毒扫描过了吗? * 签名信息正常吗? 建议:从 Gptoapk 或 APKPure 等可靠网站下载 APK,下载后扫描一下。六、开发者的选择七、总结 结论很简单: * 开发者提交 Google Play → 用 AAB * 用户侧载、第三方分发 → 用 APK * 日常用 Google Play → 不用管,系统自动处理 两种格式在未来很长一段时间内会共存。 AAB 是 Google Play 的"官方语言",APK 是 Android 世界的"通用语"。