幣程筆記 教學

幣安官方分發的 .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,不改位元組碼。

延伸閱讀