谷歌棄用 APK 格式!替代品 AAB 有何優勢?

鄭麗媛發表於2021-07-09
Android 使用者想必對 APK 並不陌生。APK 是 Android Package 的縮寫,即Android 安裝包,基於 ZIP 壓縮包格式,通過把 Android SDK 編譯工程打包成一個 Android 系統支援的安裝程式檔案,幾乎所有 Android 應用程式都以這種格式釋出。

但自下個月起,APK 格式要被谷歌棄用了。

近日,谷歌宣佈:自 2021 年 8 月起,Google Play 將要求開發者以 Android App Bundle (以下簡稱 AAB)格式釋出新應用,該格式將取代 APK 作為標準釋出格式。

谷歌棄用 APK 格式!替代品 AAB 有何優勢?

1、為何要從 APK 轉變為 AAB?

一直以來,Android 首選的應用程式包就是 APK,而一個 APK 中往往包含應用程式碼、圖片、音訊和開發者生成的應用簽名金鑰等大量資源。

不僅如此,由於 Android 裝置規格各異,開發人員還需根據裝置的不同螢幕密度(320dpi、480dpi 等)、處理器(ARM、ARM64、x86)、使用者所在的不同地區,在 Google Play 中構建和上傳多個 APK,以此才能在使用者點選“安裝”時,在其裝置上安裝最適配的 APK。

但在這種情況下,應用開發者便承受太多:不僅要開發應用,還要管理許多 APK 以支援大量裝置。因此為了省時省力,大多數開發者通常都會選擇構建一個通用 APK,即包含語言包、程式碼等在內的所有資源。不論使用者身處何處、使用何種規格的裝置,只需下載這個通用 APK 即可。

說到這裡,你或許發現了問題所在:包含所有資源的通用 APK 太大了。使用者分明只需其中與自己裝置相適配的資源,卻要把整個 APK 都下載下來,不僅延長了安裝時間,也佔用了更多的頻寬。

為了解決這個問題,谷歌在 2018 年 Google I/O 大會上推出了 AAB 格式,希望以此減少開發者的負擔,同時也有助於減少應用大小、安裝時間和頻寬消耗,提高使用者體驗。

谷歌棄用 APK 格式!替代品 AAB 有何優勢?

簡單來說,AAB 格式其實並不是一個全新的應用安裝包,你可以將它當做一個容器,裡面包含著一個基本 APK 和多個用於特定配置的 APK。

而谷歌在這之中則充當“篩選”的角色:一旦開發者選擇使用 AAB 格式釋出應用,谷歌就會根據使用者的裝置配置從中生成優化後的 APK 提供給使用者。對使用者而言,這樣的 APK 體積小、安裝快,對開發者來說也省事:不必再為各種裝置管理一大堆 APK。

因此,總體來看,谷歌要求下個月以 AAB 格式釋出新應用的決定主要面向開發者,對使用者而言影響不是太大,因為最終在裝置上安裝 Android 應用的打包格式還是 APK。

2、AAB 的優勢

相較於 APK,AAB 自然有其獨一無二的優點。

首先便是上文所提到的應用體積縮小。據谷歌官方介紹,使用 AAB 生成優化的 APK 體積平均會比一般的 APK 小 15%,而這一資料會根據應用大小有較大起伏。例如 Airbnb 在從 APK 切換到 AAB 格式後應用大小減少了 22%,而 Netflix 更是減少了 57%。

谷歌棄用 APK 格式!替代品 AAB 有何優勢?

其次,AAB 的 Play Feature Delivery 功能可自定義將哪些功能模組交付給哪個裝置,支援安裝時交付、按條件交付和按需交付等三種模式。這也就是將應用的功能拆分開來,以此大幅縮短使用者下載應用的時間,其中沒用的功能使用者可以不下載或等到以後需要時再下載。

還有一個 Play Asset Delivery 功能,以動態方式交付大型資源可以減少使用者等待時間,同時縮減交付成本。即使用 Play Asset Delivery 的遊戲可通過紋理壓縮格式作為交付條件,以便使用者只獲取適合其裝置的資源,避免浪費空間或頻寬。

3、對於 AAB 的擔憂

雖然從結果看來,以 AAB 格式分發新應用對開發者和使用者都有益處,但還是有部分人對此有些擔憂。

有人擔心從 APK 變為 AAB 格式會太複雜。但谷歌表示:“對於大多數應用而言,構建 AAB 檔案來替代 APK 檔案僅需要少量工作。”它指出 App Bundle 是一種受主流構建工具支援的開源格式,因此在 Play Core 原生 SDK、Play Core Java SDK 和 Play Core Kotlin SDK 的助力下,無論使用者偏好哪種編碼環境,都可以輕鬆開始使用可選的高階 App Bundle 功能。此外,AAB 的要求僅適用於新應用,現有應用及面向特定 Google Play 使用者的私人應用目前無需遵從此要求。

有人對與谷歌共享私人簽名金鑰表示擔憂(簽名金鑰是驗證 APK 完整性的重要資訊,谷歌從 ABB 中生成優化的 APK,因此簽名金鑰也將包含在 ABB 中),對此谷歌表示,所有“簽名金鑰都將儲存在谷歌用來儲存自己的金鑰的同一基礎設施上” ,因此開發者的私人簽名金鑰都會受到嚴密的安全保護。

還有人擔心因為 AAB 不能在 Google Play 以外的地方下載,會對如亞馬遜應用商店等第三方應用商店造成很大影響。但據瞭解谷歌已經開發了一個名為 bundletool 的開源工具,允許開發人員從 AAB 包中建立 APK,因此想在第三方商店中釋出 Android 應用程式的開發人員可以手動匯出其應用的 APK 版本。

那麼對於谷歌的這一決定,你有什麼看法嗎?


來源:CSDN
原文:https://mp.weixin.qq.com/s/MINFYEOOJQGyvEhB94VtWQ

相關文章