打造您的首个 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

相关文章
相关标签/搜索