首页 / 开发笔记 / 构建与发布

构建与发布 / FIELD NOTE 04

APK、AAB 和 split APK:安装前先认清手里的文件

为什么 AAB 不能直接当 APK 安装?为什么只有 base.apk 时应用可能打不开?从交付形式解释。

本文为基于公开技术资料编写的解释性教程。命令和输出示例不代表已在你的设备上验证;执行前请核对版本、目标设备和数据影响。

三个文件名,对应三个不同阶段

APK 是 Android 的安装包格式。AAB 是用于发布的 Android App Bundle,包含代码和资源,由分发工具根据设备配置生成安装包。split APK 则是一组共同构成应用的 APK,可能分别包含基础模块、语言、屏幕密度或处理器架构相关内容。

因此,“拿到了应用文件”还不够。先确认它是一个可独立安装的 APK、一个 AAB,还是一组需要一起安装的拆分包。修改扩展名不会改变内部结构。

只有 base.apk 时可能缺少什么

base.apk 的名称容易让人误以为它就是完整应用。对于拆分交付,它可能还依赖其他 split 提供设备需要的资源或 native 库。缺少这些内容时,安装可能直接失败,也可能在运行到相关功能时才暴露问题。

反过来,也不能见到 split 就把目录里所有不同来源的文件一起安装。同一安装集合需要保持版本、包名和签名等条件一致。来自不同下载批次的文件,不应仅凭名称相似就混用。

从自己构建的 AAB 生成测试包

bundletool 是官方用于处理 App Bundle 的工具。下面展示命令结构,路径需要替换为实际文件;签名配置应按发布流程设置,不要把私钥或密码写进公开教程。

java -jar bundletool.jar build-apks   --bundle=app-release.aab   --output=app.apks

java -jar bundletool.jar install-apks   --apks=app.apks

.apks 是 APK 集合归档,不是单个 APK。安装时让 bundletool 为连接的设备选择合适的包,可以减少手工选择 split 的错误。若设备不止一台,应按工具文档明确目标设备。

本地安装通过还不等于商店发布通过

本地测试验证的是特定设备上的安装与运行。商店还会检查发布配置、签名、目标 API、政策声明等独立条件。由本地生成的包能启动,不能推导出所有设备或分发渠道都可用。

Google Play App Signing 场景下,还需要区分上传密钥与分发给用户时使用的应用签名密钥。依赖签名证书的第三方服务配置,应以实际运行包的签名为准。

交接包时附带这些信息

  • 文件类型:单 APK、AAB 或完整 APK 集合。
  • 应用包名、versionCode 和 versionName。
  • 产物 SHA-256 摘要,方便核对是否是同一份文件。
  • 签名证书摘要,以及它属于调试、上传还是应用签名。
  • 已经测试的设备、系统版本和具体操作路径。

把测试范围写清楚比标注“通用包”更有价值。对未覆盖的设备和功能保留未验证状态,可以避免下游把一次成功启动误当成完整验收。

资料与进一步阅读

整理日期:2026-10-15。工具参数及平台行为请以所用版本的官方文档为准。内容原则 · 报告错误