币程笔记 教程

币安官方分发的 .aab 文件怎么用 bundletool 安装到手机

普通用户从币安官网下载到的是 universal APK,用文件管理器双击就能装。但研究人员或开发者偶尔会拿到 .aab(Android App Bundle)文件,需要借助谷歌的 bundletool 工具才能装到手机。本笔记给出完整流程。日常用户不需要折腾这条路径,下载 APK 直接走 币安官网币安官方APP 即可;iPhone 装机看 iOS安装教程

bundletool 是什么

bundletool 是谷歌官方开源的命令行工具,主要功能:

  • 把 .aab 文件转成 .apks(一个包含若干 split APK 的 zip)
  • 根据指定设备规格生成对应的 APK 子集
  • 直接把生成的 APKs 装到通过 ADB 连接的设备
  • 输出 .aab 内部结构以供分析

这套工具是开发者把应用上传 Google Play 之前的常规验证手段,对中国用户来说一般用不上,除非:

  • 想研究币安 APP 的内部结构
  • 拿到了第三方分发的 .aab
  • 写自动化测试脚本

准备工作

需要在电脑上备齐这些:

软件 作用
Java JDK 11+ bundletool 依赖
bundletool jar 谷歌开源命令行工具
Android SDK Platform Tools(含 ADB) 与设备通信
.aab 文件 来源是币安官方或自己反编译
USB 数据线 连接 Android 手机

bundletool 体积约 6-8 MB,可以从 GitHub 上谷歌的 google/bundletool 仓库下载。

设备端开启 USB 调试

手机上开启开发者选项:

  1. 设置 → 关于本机 → 多次点击「版本号」7 次
  2. 返回设置 → 系统 → 开发者选项
  3. 启用「USB 调试」
  4. 用数据线连接电脑,弹出授权对话框点「允许」

不同 ROM 路径略有差异:

ROM 多次点击位置
MIUI 「MIUI 版本」
HarmonyOS 「HarmonyOS 版本」
ColorOS 「版本号」
One UI 「内部版本号」

开启后 ADB 才能识别设备。

完整安装流程概述

把 .aab 装到手机大致分四步:

步骤一 · 检查设备是否被 ADB 识别 在命令行输入 adb devices,如果输出里有手机序列号就说明连通。

步骤二 · 用 bundletool 生成 device-specific 的 APKs bundletool 会询问连接的设备型号、架构、语言、屏幕密度,按这些参数从 .aab 抽取出最小的 split 集合,输出为 binance.apks 文件。

步骤三 · 用 bundletool 把 APKs 装到设备 bundletool 内置 install-apks 子命令,它会自动调 ADB install-multiple 把 split 一并装上。

步骤四 · 在手机上启动币安 启动后体验与从 universal APK 装的没有差别。

具体命令涉及到命令行参数,篇幅较长,开发者可以参考谷歌官方文档。

.aab vs universal APK 的体积差异

实测同一版本(v2.100.5):

形式 总下载体积 装机后占用
.aab(谷歌 Play 分发) 不直接下载 -
由 .aab 生成的 device-specific APKs 38-45 MB 130-150 MB
universal APK(币安官网分发) 96 MB 240 MB

差异主要来自 universal 包含全部架构与全部语言,而 device-specific 只有当前设备需要的那一份。

bundletool 常见报错

报错一 · Unsupported tools version bundletool 与 Java 版本不匹配。最新 bundletool 要求 JDK 11+,老 JDK 8 不兼容。处理:升级 JDK。

报错二 · No device connected ADB 没识别到设备。检查 USB 模式是不是「文件传输」,调试授权是不是允许。

报错三 · Multiple devices connected 连了多台设备时需要用 -s 参数指定序列号。

报错四 · Manifest version code is lower than installed 设备上已经装了同版本或新版本,要先卸载或调高 versionCode。

报错五 · Insufficient storage 设备存储满了,清理一些空间。

装完后的验证

装完后可以做几项验证:

  • adb shell pm list packages 里是否有 com.binance.dev
  • 启动 APP 看版本号是否与预期一致
  • 对比签名指纹是否与官网公布一致
  • 跑一次现货下单流程确认功能正常

适用场景与不适用场景

适合走 bundletool 路线的:

  • 研究 APP 结构的安全研究人员
  • 写自动化 UI 测试的 QA
  • 需要在多种设备规格上测试不同 split 表现的开发者
  • 学习 Android 应用打包机制的学生

不需要走这条路的:

  • 想正常使用币安的普通用户(直接下 universal APK 即可)
  • 没有 ADB 与命令行经验的用户
  • 平板、电视盒子等非标准设备(universal 兼容性更好)

命令行新手的替代方案

如果你看到 ADB、bundletool 这些就头大,但又拿到了 .aab,有几条更友好的替代路径:

  • 用图形化的 SAI(Split APKs Installer),把 .aab 复制进去自动处理
  • 用 APKEditor Studio 把 .aab 转成 apkm 再装
  • 直接放弃 .aab,从币安官网下 universal APK

第三种最简单。

FAQ

Q:为什么币安要发布 .aab 而不是 APK? A:实际上币安官网对中国用户主推 universal APK;.aab 主要是给 Google Play 分发用。

Q:自己做的 split APKs 能不能给别人用? A:技术上可以,但 split 与设备规格绑定,给其他设备用可能不兼容。

Q:装完 bundletool 生成的 APKs 后还能从 Play Store 升级吗? A:可以。Play 用 versionCode 判断,与签名一致就能识别为「同一应用」并升级。

Q:bundletool 会修改 APK 内容吗? A:不会。它只是把 .aab 拆成 APKs,不改字节码。

延伸阅读