共计 2426 个字符,预计需要花费 7 分钟才能阅读完成。
这是一个新的系列文章,咱们称之为 “Modern Android Development 技巧 ”,简称为 “MAD Skills”。本系列文章致力于帮忙开发者们打造更好的古代 Android 开发体验,敬请关注。
明天为大家公布本系列文章中的第五篇: 打造您的首个 app bundle。如果您想回顾过去公布的内容,请参考上面链接查看:
- 导航组件概览
- 导航到对话框
- 在利用中导航时应用 SafeArgs
- 应用深层链接导航
除了其余个性,咱们创立的 Android App Bundle 格局解锁了公布更小尺寸利用的能力。利用尺寸越小 意味着更可能被下载,也意味着在磁盘空间有余时可能更多地防止被卸载。另外,在 2021 年下半年,Google Play 将要求 新的利用和游戏以 Android App Bundle 的格局公布。
在这篇文章中,咱们会具体介绍如何构建您的第一个 app bundle、如何通过 Play Console 上传 app bundle 以及深刻了解一些配置选项。
应用 app bundle 并不需要扭转现有的代码库。
您只须要通过命令行或者 Android Studio 即可构建一个 Android App Bundle。
通过命令行构建
如果应用命令行,您须要像上面这样运行其中一个 bundle 工作:
./gradlew bundleRelease
而后在您利用的 build 文件夹下找到 bundle 文件,其默认的门路是 app/build/outputs/bundle/release。
这个 bundle 文件须要先被签名。如果应用 jarsigner 的话,您须要像上面这样签名 bundle 文件:
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 筹备的
Bundle 文件上传之后,Play 商店会依据用户的设施配置来优化 APK 文件。同时这一步也会放大下载和装置的尺寸。
摸索您的 Android App Bundle
如果想查看 Play 商店如何散发您的利用到用户设施,您能够点击该 bundle 行开端的 “Details” 按钮。
高亮的 “Details” 按钮截图
在详情页中,您能够看到对于该利用 bundle 的很多信息,包含版本号、minSdk 版本、指标 SDK、性能依赖、权限、屏幕尺寸、本地化以及其余相干信息。
您也能够间接下载该利用签名后的 APK 文件,以此来查看 Play 商店分发给特定设施的具体内容。您能够通过点击 “Explore Bundle” 并关上 “Downloads” 标签页来拜访该页面。
在这个页面中您既能够间接抉择一个具体型号的设施,也能够通过 “Add filter” 下拉菜单增加一个甚至多个过滤条件匹配相应的设施。
在 app bundle explorer 中关上的过滤下拉菜单
下载利用 bundle 并在本地装置
在 app bundle explorer 页面的开端有一个 “Download” 按钮能够下载一个 Zip 压缩文件,该压缩文件蕴含多个 APK,均针对上文中所探讨的指标设施进行了量身定制。
下载并解压这个文件后,其中蕴含的所有 APK 文件能够在该文件夹门路下应用 adb install — multiple *.apk 命令装置到本地模拟器或设施。
在这里所有的 apk 文件均和利用的失常运行相干,同时我想指出 base.apk 是必须要装置的,它提供了您利用的外围性能。除了代码和资源,base 模块还蕴含了合并后的 AndroidManifest 文件以及整个利用的依赖项。
每一个功能模块或者不同配置的 apk 文件蕴含了其对应的资源及代码,而 base 模块会将所有的这些模块集成到一起。
勾销优化
您能够在每个模块的 build.gradle
中勾销优化,只须要指定 language
、density
或者 abi
,并且设置 enableSplit
为 false
,这会通知构建零碎不须要针对指定的配置进行优化。
除非必须,不然我不倡议批改这个局部,因为设置 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