幣安官方分發的 .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 除錯
手機上開啟開發者選項:
- 設定 → 關於本機 → 多次點選「版本號」7 次
- 返回設定 → 系統 → 開發者選項
- 啟用「USB 除錯」
- 用資料線連線電腦,彈出授權對話方塊點「允許」
不同 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,不改位元組碼。