手動安裝 aab (Android App Bundle) 檔案
探索 bundletool 工具如何安裝 aab 檔案到裝置中
自 Android Studio 3.2 起,輸出 Android App 時就可以開始使用官方推薦的新格式 Android App Bundle (aab)。上傳 aab 至 Google Play 商店後,當使用者下載 App 時,只需要下載目前手機需要使用到的資源即可。例如一台像素密度為 xhdpi 的手機,只需要下載 xhdpi 的內容即可。又像是處理器架構、裝置語言,不必要包所有支援的資源,例如使用 Snapdragon 845 處理器的手機,語言設定為繁體中文 (台灣)。下載時只需要下載 arm64 架構與 zh-tw 語系的資源即可。
透過 aab 可以減少使用者下載安裝 App 的時間,同時減少一些 App 的容量。但在 Android 5.0 (Lollipop, 21) 以前的裝置無法支援這麼彈性的安裝方式。好在 Google Play 商店會自動幫我們編譯傳統的 apk 給舊版 Android 安裝。
這篇短文筆記的緣由是我想測試輸出的 aab 檔案,是否可以正常安裝,安裝後行為是否一切正常。不過 aab 檔案不能像過去輸出 apk 檔案,直接丟到裝置上手動安裝就行了。想手動安裝 aab 檔案,需要 bundletool 這個工具。開發者可以在 bundletool 的 GitHub Repository 下載相關檔案,如果 開發者使用 macOS 則可以直接透過 brew 來安裝 bundletool。
$ brew install bundletool
安裝完 bundletool 後,就能開始來準備來安裝。首先先將終端機(Terminal)切換至 aab 檔案所在資料夾,第一步是將透過 aab 檔案產生 apks 檔案
$ bundletool build-apks --bundle=<bundle_name>.aab --output=./<bundle_name>.apks
如果要 build 簽名過的 apks 檔案,還需要加上 keystore 的相關設定
$ bundletool build-apks --bundle=<bundle_name>.aab --output=<bundle_name>.apks --ks=<your_keystorename>.jks/.keystore --ks-pass=pass:<your_keystore_pass> --ks-key-alias=<your_keystore_alias> --key-pass=pass:<your_keystore_pass>
透過以上的指令,可以取得一個 apks 檔案。再透過 bundletool ,將這個 apks 檔案安裝在裝置上。
$ bundletool install-apks --apks=<bundle_name>.apks
安裝完成後,Android 裝置不會有任何特別的反應。 👨🏻🔬
不過,開啟 Launcher 的程式集,會發現 App 已經被安裝在裝置上了。
Android App Bundle 上傳後,開發者可以在 App bundle 探索工具中查看 aab 幫我們節省了多少容量。進入某一個應用程式版本群組後,按下 Android App Bundle 與 APK 後方的「全部展開」按鈕,就能看見「探索 APP BUNDLE」的選項。
進入後,除了可以查看省下多少容量以外,還能對各個不同的組合分別下載不同的 APK 檔案來測試。
當然,如果你的專案尚未使用 Android App Bundle。在開始之前別忘了先設定完 Google Play 應用程式簽署,才能開始使用 App Bundle。