在线将 AAB 转换为 APK:此工具的实际用途
Android App Bundle (.aab) 是 Google Play 要求开发人员上传的格式,但它不能安装在手机上。如果您有来自构建服务器、CI 管道或同事的 .aab 文件,您首先需要将其转换为可安装的 .apk。此页面为您提供了完成这项工作的两个工具:一个交互式 AAB 到 APK 命令生成器,它为您的操作系统编写准确的捆绑工具命令;另一个 AAB 文件浏览器,它在浏览器中打开捆绑包,以便您可以在转换之前看到里面的内容。
转换本身通过Google官方的bundletool运行,这是一个Java程序。因为bundletool需要Java运行时并访问您的密钥库,所以实际的构建步骤发生在您自己的机器上,而不是我们的服务器上。您的 .aab 文件永远不会上传到任何地方。构建器只是消除了猜测,因此您可以复制正确的、准备运行的命令,而不是记住标志名称。
AAB 与 APK:为什么不能只重命名文件
很多人搜索如何通过重命名扩展名将 AAB 更改为 APK,但从来没有成功过。 .apk 是 Android 可以直接安装的单个独立包。 .aab 是一个发布容器:它保存已编译的代码和分成模块的资源,并且期望 Google Play 或 bundletool 从中生成最终的设备优化 APK。重命名文件不会解压这些模块或签署任何内容,因此 Android 拒绝安装它。转换 Android 应用程序包到 APK 的唯一可靠方法是让 bundletool 为您构建 APK 集。
如何在 Windows、Mac 和 Linux 上将 AAB 转换为 APK
每个平台上的步骤都是相同的,只有文件路径样式发生变化,这就是上面的命令生成器具有 Windows、macOS 和 Linux 开关的原因。以下是从开始到结束的完整流程:
- 安装 Java JDK 8 或更高版本。 在终端中运行 java -version 以确认 Java 位于您的 PATH 中。
- 下载捆绑工具。 从 Google 官方 GitHub 发布页面获取最新的 bundletool-all.jar。
- 构建 APK 集。 将bundletool指向您的捆绑包并让它生成.apks存档:java -jar bundletool-all.jar build-apks --bundle=app.aab --output=app.apks --mode=universal
- 打开 .apks 存档。 它只是一个ZIP文件,因此解压它,你会在里面找到universal.apk。
- 安装在您的设备上。 将 APK 复制到您的手机并旁加载,或将 bundletool install-apks 与通过 USB 连接的设备一起使用。
通用 APK 与拆分 APK:您应该构建哪一个?
如果您想要一个可以安装在任何手机上的文件,请使用 --mode=universal。这构建了一个 来自 AAB 的通用 APK,将每个 CPU 架构、屏幕密度和语言捆绑到一个包中。它更大,但它是在 Play 商店之外测试、存档或共享构建的最简单选项。如果您忽略该模式,bundletool 会生成针对某一特定设备进行修剪的拆分 APK,因此它们下载的文件较小,但您必须一起安装匹配的集合。对于大多数只需要转换 .aab 以便快速安装的人来说,通用 APK 是正确的选择。
签署从 AAB 获得的 APK
Android 不会安装 APK,除非它经过签名。对于测试,bundletool 可以自动使用调试密钥进行签名,这正是构建器中的“使用调试密钥库”选项的作用。如果您正在准备发布版本,例如要在您自己的网站上分发,请通过填写密钥库路径、密钥库密码、密钥别名和密钥密码字段,使用您自己的密钥库对其进行签名。然后,构建器添加 --ks、--ks-pass、--ks-key-alias 和 --key-pass 标志,以便您获得的 APK 带有真正的生产签名,而不是一次性的调试签名。
常见的bundletool错误以及如何修复它们
有两个问题一再出现。消息“bundletool:找不到命令”意味着您尝试像运行内置命令一样运行bundletool。它是一个 JAR 文件,因此您始终使用 java -jar bundletool-all.jar 来调用它。 “无密钥/证书”错误意味着缺少签名详细信息:为未签名的测试版本添加 --mode=universal,或者提供如上所述的密钥库标志。页面上方的“故障排除”选项卡涵盖了更多内容,并且 AAB 资源管理器可让您在花时间调试命令之前确认您的捆绑包确实包含您期望的模块。
您什么时候真正需要转换 AAB?
通常的原因是在发布之前在真实设备上测试发布版本,将版本交给不使用 Google Play 的测试人员,保留您自己的应用程序的可安装副本作为记录,或者在 Play 商店内部测试未达到的硬件上运行 QA。无论出于何种原因,仅转换您有权使用的应用程序包,例如您自己的构建版本或您有明确使用权限的应用程序包。