借助功能模块,您可以从应用的基本模块中分离某些功能和资源,并将其纳入到 App Bundle 中。然后,用户在安装应用的基本 APK 后,便可以通过 Play Feature Delivery 按需下载和安装这些组件。
例如,假设某个短信应用包含拍摄和发送图片消息的功能,但只有一小部分用户发送图片消息。合理的做法是,将图片消息功能添加为可下载的功能模块。这样,所有用户的初始应用下载大小都更小,只有那些发送图片消息的用户才需要下载该附加组件。
请注意,这种类型的模块化所需的工作量更大,并且可能需要重构应用的现有代码,因此请仔细考虑按需提供给用户对应用的哪些功能益处最大。如需更好地了解有关按需功能的最佳用例和准则,请阅读有关按需分发的用户体验最佳做法。
如果您想逐步对应用功能进行模块化处理,而不启用按需分发等高级分发选项,请改为配置安装时分发。
本页旨在帮助您向应用项目中添加功能模块,并将其配置为按需分发。开始前,请确保您使用的是 Android Studio 3.5 或更高版本以及 Android Gradle 插件 3.5.0 或更高版本。
将新模块配置为按需分发
如需创建新功能模块,最简单的方法是使用 Android Studio 3.5 或更高版本。由于功能模块本身依赖于基本应用模块,因此您只能在创建好应用项目之后再向其中添加功能模块。
如需使用 Android Studio 向应用项目中添加功能模块,请按以下步骤操作:
- 在 IDE 中打开您的应用项目(如果您尚未打开)。
- 从菜单栏中依次选择 File > New > New Module。
- 在 Create New Module 对话框中,选择 Dynamic Feature Module,然后点击 Next。
- 在 Configure your new module 部分中,完成以下操作:
- 从下拉菜单中选择应用项目的 Base application module。
- 指定 Module name。IDE 会使用此名称在 Gradle 设置文件中将该模块标识为 Gradle 子项目。当您构建 App Bundle 时,Gradle 会使用子项目名称的最后一个元素在功能模块的清单中注入
<manifest split>
属性。 - 指定该模块的 package name。默认情况下,Android Studio 会给出一个软件包名称建议,该名称由基本模块的根软件包名称和您在上一步中指定的模块名称组合而成。
- 选择您希望该模块支持的 Minimum API level。此值应与基本模块的值一致。
- 点击 Next。
在 Module Download Options 部分中,完成以下操作:
指定最多包含 50 个字符的 Module title。例如,平台会在确认用户是否要下载模块时,使用此标题向用户标识该模块。因此,应用的基本模块必须将模块标题作为您能读懂的字符串资源纳入其中。使用 Android Studio 创建模块时,IDE 会为您将字符串资源添加到基本模块中,并在功能模块的清单中注入以下条目:
<dist:module ... dist:title="@string/feature_title"> </dist:module>
在 Install-time inclusion 下的下拉菜单中,选择 Do not include module at install-time。Android Studio 会在该模块的清单中注入以下内容来反映您的选择:
<dist:module ... > <dist:delivery> <dist:on-demand/> </dist:delivery> </dist:module>
如果您希望此模块可提供给搭载 Android 4.4(API 级别 20)及更低版本的设备并包含在多 APK 中,请选中 Fusing 旁边的复选框。这意味着,您可以为此模块启用按需行为,也可以停用融合功能,以便从不支持下载和安装拆分 APK 的设备上将其省略。Android Studio 会在该模块的清单中注入以下内容来反映您的选择:
<dist:module ...> <dist:fusing dist:include="true | false" /> </dist:module>
点击 Finish。
在 Android Studio 完成模块创建后,从 Project 窗格中自行检查其内容(从菜单栏中依次选择 View > Tool Windows > Project)。默认代码、资源和组织应与标准应用模块类似。
在实现要按需下载的功能后,请了解如何使用 Play Core 库请求该功能。
部署应用
在开发支持 Play Feature Delivery 的应用时,您可以像往常一样,从菜单栏中依次选择 Run > Run(或点击工具栏中的 Run 图标 ),将该应用部署到连接的设备。
如果您的应用项目包含一个或多个功能模块,您可以通过修改现有的运行/调试配置选择需要在部署应用时包含的功能模块,具体操作步骤如下:
- 从菜单栏中依次选择 Run > Edit Configurations。
- 在 Run/Debug Configurations 对话框的左侧面板中,选择所需的 Android App 配置。
- 在 General 标签页中的 Dynamic features to deploy 下,选中需要在部署应用时包含的每个功能模块旁边的复选框。
- 点击确定。
默认情况下,Android Studio 不会使用 App Bundle 部署您的应用,而是由 IDE 构建针对部署速度(而非 APK 大小)进行了优化的 APK,并将其安装到设备中。如需将 Android Studio 配置为通过 App Bundle 构建和部署 APK 以及免安装体验,请修改运行/调试配置。
其他资源
如需详细了解如何使用 Play Feature Delivery,请使用以下资源。
示例
- PlayCore API 示例:该示例应用演示了如何使用 PlayCore API 请求和下载按需功能。
- 动态代码加载示例:演示了从安装的功能模块安全访问代码的三种不同方法。
Codelab
- 按需模块:可帮助您打造按需下载和安装功能的应用。
博文
- 能够助力您在 Google Play 上开发和发布产品并拓展业务的新功能
- 最新的 Android App Bundle 更新,包括针对其他语言的 API
- Patchwork Plaid - 模块化故事