| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Android App Bundle:动态功能模块 -> 正文阅读 |
|
[移动开发]Android App Bundle:动态功能模块 |
目录 自 2021 年 8 月起,Google Play 将开始要求新应用使用 Android App Bundle 进行发布。该格式将取代 APK 作为标准发布格式。虽然这个政策目前还无法影响到国内应用,但是作为Android开发者,对于新的动态还是要有一定的认识。本文并不是介绍Android App Bundle,因为它不是新的事物,相关的文章也有很多了,本文重点介绍的是Android App Bundle中“动态功能模块”的实际应用。 Android App BundleAndroid App Bundle是基于google play的分发技术,可以有效的减少apk的大小。 Android App Bundle可以自动将不同的分辨率、语言、平台(CPU)的资源分别打包,这样当安装时只根据当前设备安装对应的资源,这样大大的节省了内存空间。 除了这些资源,Android App Bundle还支持动态功能模块(Dynamic Feature Module),这样如果用户不需要这部分功能,则不安装这个模块,这样就更加高度优化了下载和安装。 创建动态功能模块下面就来看看如何创建动态功能模块: 1、从菜单栏中依次选择 File > New > New Module。这一步与创建普通模块一样。 2、在 Create New Module 对话框中,选择 Dynamic Feature Module,然后点击 Next。 3、在 Configure your new module 部分中,完成以下操作:
4、在 Module Download Options 部分中,完成以下操作: 1)指定最多包含 50 个字符的 Module title。(这个会展示给用户) 2)在 Install-time inclusion 下的下拉菜单中,选择分发时机,有下面三种:
?????按条件分发还需要配置条件,如下图 ????????点击“+ device-feature”可以添加一个条件(可以添加多个条件)。在 每个device-feature 旁边,从下拉菜单中选择以下选项之一,然后为其指定值:
3)如果您希望此模块可提供给搭载 Android 4.4(API 级别 20)及更低版本的设备并包含在多 APK 中,请选中 Fusing 旁边的复选框。这意味着,您可以从不支持下载和安装拆分 APK 的设备上将其省略。 (这部分的配置最终会在模块下的Manifest中体现,下面会提到) 5、点击 Finish即可创建模块 ? 动态功能模块?创建出的模块目录如下: 可以看到与正常模块一样,但是这里的Manifest内容有差异,如下:
?可以看到这里出现了一个dist标签,这个标签下就是动态功能模块的一些配置。比如dist:instant="false"就是不支持免安装(免安装后面会细说),而title就是上面4步中设置的module title。而
就是分发时机,on-demand就是Do not include module at install-time即按需分发(后面单独说),如果改成install-time就是Include module at install-time即安装时分发,按条件分发则不太一样,如下:
模块创建后可以在这里添加新的分发条件。 这里也可以根据国家/地区指定条件
根据 API 级别指定条件
与主模块建立关联当 Android Studio 创建功能模块时,它会自动在基本模块的?build.gradle?文件添加?android.dynamicFeatures?属性,以使该功能模块对基本模块可见,如下所示:
此外,Android Studio 还会将基本模块添加为功能模块的依赖项,如下所示:
部署应用在开发支持功能模块的应用时,您可以像往常一样,从菜单栏中依次选择 Run > Run(或点击工具栏中的 Run 图标 ),将该应用部署到连接的设备。 如果您的应用项目包含一个或多个功能模块,您可以通过修改现有的运行/调试配置以选择需要在部署应用时包含的功能,具体操作步骤如下:
默认情况下,Android Studio 不会使用 app bundle 部署您的应用,而是由 IDE 构建针对部署速度(而非 APK 大小)进行了优化的 APK,并将其安装到设备中。如需将 Android Studio 配置为通过 app bundle 构建和部署 APK 以及免安装体验,请修改运行/调试配置。 按需分发On-Demand?上面我们提到了三种分法模式:安装时分发,按需分发和按条件分发。 安装时分发比较好理解,即在google play下载安装应用的时候就会下载该模块;按条件分发也比较好理解,下载安装应用时,如果当前设备满足条件才会下载该模块;只有按需分发,并不是很容易理解。 按需分发与国内很多应用的插件化类似,就是在功能被使用的时候才会去下载那部分代码和资源。官方描述是这样的:
但是通过上面创建部署动态模块的流程,我们发现没有关于按需下载的这部分逻辑。这是因为如果要使用动态模块,还需要配合google的play core?library才可以:
?通过这个library中的SplitInstallManager这个类来实现判断模块是否安装,如果没有安装则下载安装等逻辑。 这部分内容很多,受本文篇幅所限就不展开了,官方有一篇很详细的教程:https://developer.android.com/codelabs/on-demand-dynamic-delivery#0,有兴趣的同学可以自行阅读(需要梯子)。以后有时间我会单独出一篇中文教程,请大家留意我的公众号更新。 免安装分发还有一种动态功能模块,即免安装分发。Google Play 免安装体验让用户无需在设备上安装 APK 即可与您的应用互动。用户可以通过 Google Play 商店中的“立即体验”按钮或您创建的网址体验您的应用。这种内容分发形式可让您更轻松地提高用户与应用的互动度。 仅当应用的基本模块也支持免安装体验时,您才能使功能支持免安装体验。这是因为,如果用户想要体验您的应用中某个支持免安装体验的功能模块,他们的设备还必须下载应用的基本模块以获取通用代码和资源。请注意,为了支持 Google Play 免安装体验,基本模块和功能的下载必须满足几个条件: 最大大小:支持免安装体验的基本模块和支持免安装体验的功能模块的总大小不得超过 10 MB。如需了解详情,请阅读通过缩减应用或游戏大小支持免安装体验。 后台活动:支持免安装体验的模块无法使用后台服务。此外,此类模块在后台运行时无法发送通知。 如果您使用 Android Studio 3.5 或更高版本创建支持免安装体验的功能模块(如本部分所述),IDE 会在每个模块的清单中添加以下内容,从而自动使基本模块和功能模块支持免安装体验:
此外,在下载并安装您的应用时,系统会随该应用的基本 APK 自动下载并安装支持免安装体验的功能模块。因此,IDE 还会在支持免安装体验的功能模块中添加以下内容。 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/28 11:59:04- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |