開始使用 Android App Bundle

Terry Huang
安郡尼爾筆記
Published in
5 min readOct 5, 2018

隨著 Android Studio 3.2 在 Stable Channel 釋出後,全新的 App Bundle 功能也完整的呈現在所有開發者面前,這一個嶄新的技術能帶來怎樣的好處,或是給出了怎樣的 Android App 未來的架構,讓我們嘗試解析一下

What & Why App Bundle

這個答案很簡單,整個 App Bundle 的精神,就是圍繞著一個字來發展的,就是:『小』,如何讓使用者從 Play Store 下載最小的資料,便能開始使用 App 的功能。這個方向與去年所推出的 Instant Apps 不謀而合,App Bundle 模組化的設計方式,也是來自於此。在實作 App Bundle 上,Google 目前提供了量個方法

  • Dynamic Delivery: 只下載使用者機器需要的資源
  • Dynamic Feature: 只下載最核心的功能,其他的用到再下載

Dynamic Delivery

只給使用者需要的資源

當使用者交付給 Google Play App Bundle 封裝檔案(*.aab)之後,當使用者下載 App 時,便會依據使用者目前的機器組態,給予最佳化容量的 APK,簡單來說,Google Play 會幫你做出「只包含目前機器」所需要的資源的 APK

完全免動刀

分開封裝的資源有三大類,分別是是「語言」、「處理器架構」、「屏幕密度」。其中最讓人振奮的是,這一切,完全都不用程式碼的變動,就可以達成!當然,您還是得改成使用 App Bundle 封裝

Google Play 會將 App Bundle 自動做成 Base 以及各 Configuration APK

Dynamic Feature

注意:Dynamic Feature 功能目前尚在測試階段

運作原理

概念與 Instant App 類似,將 App 切分成 Base 與數個 Dynamic Feature,在需要的時候,透過 Play Core Library 來進行下載

Dynamic Feature 也可 Dynamic Delivery

在整個 App Bundle 的運作中,除了 Base 程式能夠自動化將資源進行 Dynamic Delivery 之外,Dynamic Feature 的 APK 也能夠自動化進行 Dynamic Delivery

實作方法

注意事項

僅支援 Android 5.0 (API level 21)

僅支援 API level 21 以上的機器(根據公開資訊目前占比已達 88%),在更低的版本,還是會下載到完整大小的 APK

需啟用 Google Play App Signing

既然透過 Google Play 來完成 APK 的封裝,也就代表需要支援 Google Play App Signing,您必須將封裝的 Key 提交給 Google 來支援這個功能

非強制,也不是一定適用

雖然 Google Play 新增了 App Bundle 支援可以說是好處多多,但目前並不是強制使用;依照筆者的猜測,也不可能強制實施,畢竟對於特定的 App 來說,效用並不大,比如:使用第三方函式庫的遊戲

目前僅 Google Play 支援

雖然 App Bundle 已經是 Open Source 專案,但是要等待更多的發布渠道能夠支援,應該還是需要很長的時間。分析原因很簡單,就算不計算發佈平台所需耗費的資源,光是還要讓開發者願意授權給平台進行 app signing,信任度也是一個很大的考驗

大小限制依然存在

使用者機器下載的到 APK(base + configuration)仍不能超過 100 M

不支援 APK expansion(長嘆一聲)

筆者想法:聊勝於無

以現在硬體與網路的發展,100m 限制沒放寬,甚至不支援 APK extension,這樣的 App Bundle 能優化的幅度可以說是相當有限,雖然在成本不高的情形下,順手 Dynamic Delivery 一下還算是方便;但是對於真正需要的高容量外部資源類型 App,甚至是針對多渠道的支援,還是丟回給平台、開發者自己去解決,最後的結果,可想而知,開發商還是會傾向施作「通用架構」。這從遊戲現況就可預見,搭配 APK Expansion 推出 Google Play Application Licensing 下載架構,可以說是乏人問津,Dynamic Feature 可能也會步上這樣的後塵

附錄: APK format vs App Bundle format

--

--

Terry Huang
安郡尼爾筆記

Co-Founder of LiRise Co.,Ltd. In charge of innovative affairs development. Tags: Guitar, Golf, Photograph, Cocktail, Dance, Diving, Travel.