打造您的首個 app bundle | MAD Skills

這是一個新的系列文章,咱們稱之爲 "Modern Android Development 技巧",簡稱爲 "MAD Skills"。本系列文章致力於幫助開發者們打造更好的現代 Android 開發體驗,敬請關注。android

今天爲你們發佈本系列文章中的第五篇: 打造您的首個 app bundle。若是您想回顧過去發佈的內容,請參考下面連接查看:編程

除了其餘特性,咱們建立的 Android App Bundle 格式解鎖了發佈更小尺寸應用的能力。應用尺寸越小意味着更可能被下載,也意味着在磁盤空間不足時可以更多地避免被卸載。另外,在 2021 年下半年,Google Play 將要求 新的應用和遊戲以 Android App Bundle 的格式發佈架構

在這篇文章中,咱們會詳細介紹如何構建您的第一個 app bundle、如何經過 Play Console 上傳 app bundle 以及深刻理解一些配置選項。app

使用 app bundle 並不須要改變現有的代碼庫。

您只須要經過命令行或者 Android Studio 便可構建一個 Android App Bundle。gradle

經過命令行構建優化

若是使用命令行,您須要像下面這樣運行其中一個 bundle 任務:ui

./gradlew bundleRelease

而後在您應用的 build 文件夾下找到 bundle 文件,其默認的路徑是 app/build/outputs/bundle/release。google

這個 bundle 文件須要先被簽名。若是使用 jarsigner 的話,您須要像下面這樣簽名 bundle 文件:spa

jarsigner -keystore $pathToKeystore app-release.aab $keyAlias

請使用您實際項目的配置來替換上面命令的參數。在輸入 keystore 密碼後,bundle 文件就會被簽名,以後就能夠隨時上傳了。命令行

經過 Android Studio 構建

在 Android Studio 中,選擇 "Build => Generate Signed Bundle / APK" 而且按照對話框提示完成構建。

不管您使用命令行仍是 Android Studio,整個處理過程完成後會幫您生成一個通過簽名而且能夠上傳 Play 商店的發行版 bundle。

經過 Play Console 上傳

爲了上傳應用 bundle 到 Play 商店,您首先須要選擇一個發行渠道建立一個新的發佈。您能夠拖放 bundle 文件到 "App bundles and APKs" 部分,或者使用 Google Play 開發者 API 上傳。

Play Console 中高亮的 (綠色) 部分是爲了上傳 app bundle 準備的

Play Console 中高亮的 (綠色) 部分是爲了上傳 app bundle 準備的

Bundle 文件上傳以後,Play 商店會根據用戶的設備配置來優化 APK 文件。同時這一步也會縮小下載和安裝的尺寸。

探索您的 Android App Bundle

若是想查看 Play 商店如何分發您的應用到用戶設備,您能夠點擊該 bundle 行末尾的 "Details" 按鈕。

高亮的 "Details" 按鈕截圖

高亮的 "Details" 按鈕截圖

在詳情頁中,您能夠看到關於該應用 bundle 的不少信息,包括版本號、minSdk 版本、目標 SDK、功能依賴、權限、屏幕尺寸、本地化以及其餘相關信息。

您也能夠直接下載該應用簽名後的 APK 文件,以此來查看 Play 商店分發給特定設備的具體內容。您能夠經過點擊 "Explore Bundle" 並打開 "Downloads" 標籤頁來訪問該頁面。

在這個頁面中您既能夠直接選擇一個具體型號的設備,也能夠經過 "Add filter" 下拉菜單添加一個甚至多個過濾條件匹配相應的設備。

在 app bundle explorer 中打開的過濾下拉菜單

在 app bundle explorer 中打開的過濾下拉菜單

下載應用 bundle 並在本地安裝

在 app bundle explorer 頁面的末尾有一個 "Download" 按鈕能夠下載一個 Zip 壓縮文件,該壓縮文件包含多個 APK,均針對上文中所討論的目標設備進行了量身定製。

下載並解壓這個文件後,其中包含的全部 APK 文件能夠在該文件夾路徑下使用 adb install — multiple *.apk 命令安裝到本地模擬器或設備。

在這裏全部的 apk 文件均和應用的正常運行相關,同時我想指出 base.apk 是必需要安裝的,它提供了您應用的核心功能。除了代碼和資源,base 模塊還包含了合併後的 AndroidManifest 文件以及整個應用的依賴項。

每個功能模塊或者不一樣配置的 apk 文件包含了其對應的資源及代碼,而 base 模塊會將全部的這些模塊集成到一塊兒。

取消優化

您能夠在每一個模塊的 build.gradle 中取消優化,只須要指定 languagedensity 或者 abi,而且設置 enableSplitfalse,這會告訴構建系統不須要針對指定的配置進行優化。

除非必須,否則我不建議修改這個部分,由於設置 enableSplit 爲 false 會極大地增長您應用在設備安裝時佔用空間的大小。
// 這個配置指定了一個應用 bundle 該如何根據
// 語言、屏幕像素密度以及 cpu 架構 (abi) 來分拆 apk。
// 默認值爲 true
// 這意味着每一個不一樣的相關配置會生成一個分解後的 apk。

bundle {
    language {
        enableSplit = true
    }
    density {
        enableSplit = true
    }
    abi {
        enableSplit = true
    }
}

固然存在例外,好比您的應用中內置了語言選項,並且您但願全部可能被用到的語言都一直被加載。即使如此,使用 Android App Bundle 還能夠提供給您按需加載功能模塊的方法,而這一方法能夠幫助您的應用避免安裝那些只有一小部分用戶可能使用的功能模塊。

爲了讓您能夠經過編程的方式下載和安裝功能模塊,咱們還提供了分拆的 API 以方便您使用。這個 API 是 PlayCore 庫的一部分,咱們會在 MAD Skills 系列的下一篇文章進行詳細介紹,敬請關注。

本文內容對應視頻: https://www.youtube.com/watch?v=IPLhLu0kvYw

相關文章
相關標籤/搜索