googleplayappbundle使用详解(应用模块化)

韩曙亮 韩曙亮     2022-12-09     677

关键词:

Google Play 上架完整流程 系列文章目录


【Google Play】创建 Google 开发者账号 ( 注册邮箱账号 | 创建开发者账号 )
【Google Play】创建并设置应用 ( 访问权限 | 内容分级 | 受众群体 | 类别及联系方式 | 商品详情 )

【Google Play】App Bundle 使用详解 ( 简介 | 应用内更新 | 即时更新 | 灵活更新 )
【Google Play】App Bundle 使用详解 ( 按条件分发 | 国家地区 | SDK 版本 | 设备功能 | 按需分发 | 资源分发 )
【Google Play】App Bundle 使用详解 ( 应用模块化 )






一、单个应用模块化



将一个独立的应用 , 分为若干功能模块 , 为不同的模块设置不同的分发策略 ;

应用组成 : 代码 , 资源 , 可绘制资源 , 依赖库 组成 ; 这些组件之间的边界很模糊 , 但是实行应用模块化后 , 这些组件之间就会产生清晰的边界 ;

在这里插入图片描述

代码层面 : 不同的功能 , 要放置在不同的模块中 ;
代码组织逻辑中 , 将不同的功能 , 放在不同的包中 ;

资源层面 :

  • 字符串文件 : 将模块名称添加到资源名称前面 , 可以清晰的区分出不同模块各自包含哪些资源 ;

在这里插入图片描述

  • 布局文件 : 将模块名称放在布局文件的前面 ;

在这里插入图片描述

依赖库层面 : 将外部的依赖库放在基础模块中 , 所有的模块都可以使用依赖库 ;





二、Android Studio 新模块向导



在 Android Studio 中的新模块向导中 , 输入模块名 , 包名 , Android Studio 会帮助开发者自动生成代码 ;

在这里插入图片描述

将应用模块化之后的效果 :

降低了应用编译时间 , 大约能缩短 2 3 \\cfrac23 32 的时间 , 这是因为完成模块化后 , 可以使用并行编译 , 加快编译速度 ;

模块化之后 , 应用瘦身效果明显 , 用户下载更快 , 更节省空间 ;

在这里插入图片描述

模块化完成后 , 通过 Google Play 的核心库 , 完成相应的模块 ;

在这里插入图片描述

按照需求请求模块 :

在这里插入图片描述

按需删除模块 :

在这里插入图片描述





三、博客资源



博客资源 :

googleplayappbundle使用详解(按条件分发|国家地区|sdk版本|设备功能|按需分发|资源分发)(代码片段)

GooglePlay上架完整流程系列文章目录【GooglePlay】创建Google开发者账号(注册邮箱账号|创建开发者账号)【GooglePlay】创建并设置应用(访问权限|内容分级|受众群体|类别及联系方式|商品详情)【GooglePlay】AppBundle使用详解(简介|应用内更... 查看详情

30个mysql千万级大数据sql查询优化技巧详解

...sql千万级大数据SQL查询优化技巧,特别适合大数据里的MYSQL使用。1.对查询进行优化,应尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索引。2.应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使... 查看详情

详解opencv中的lucaskanade稀疏光流单应追踪器(代码片段)

详解OpenCV中的LucasKanade稀疏光流单应追踪器1.效果图2.源码参考这篇博客将详细介绍OpenCV中的LucasKanade稀疏光流单应追踪器。光流是由物体或相机的运动引起的图像物体在连续两帧之间的明显运动的模式。LucasKanade是一个算法,... 查看详情

selinux使用详解(代码片段)

...问控制(MAC,MandatoryAccessControl)的安全子系统。Linux系统使用SELinux技术的目的是为了让各个服务进程都受到约束,使其仅能获取到本应获取的资源。例如,你在电脑上安装了一个美图软件,当你在全神贯注地使用它给照片进行... 查看详情

elementui中backtop使用详解

参考技术A注意:target属性是为了获取产生滚动条的dom元素,所以target属性里面的类,应该要精准指向产生滚动条的dom对象,要不然就无法生效,参考el-backtop组件源码:根据源码中init()函数可知,当target未设置时,当前滚动操作... 查看详情

详解对象-关系映射文件

...有属性必须提供public访问控制符的setget方法-属性应尽量使用基本数据类型的包装类型(如Integer)基本数据类型无法表达null值,所有基本数据类型的默认值都不是null,这样就有很大的缺陷。例如有一个score属性,表示 查看详情

求fotmat命令详解!

.../N仅用于磁盘驱动器。不能用于硬盘,不能与参数/F同时使用/U:执行无条件的格式化,也就是重划磁道和扇区注意:使用/U后,就无法再使用UNFORMAT命令将磁盘原有数据挽回/F:n:指定要格式化磁道的容量n,应尽可能用引参数代替/T... 查看详情

30个mysql千万级大数据sql查询优化技巧详解(代码片段)

...sql千万级大数据SQL查询优化技巧,特别适合大数据里的MYSQL使用1.对查询进行优化,应尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索 查看详情

2013年上半年网络工程师试卷答案及详解

2013年上半年网络工程师上午试卷● 计算机指令一般包括操作码和地址码两部分,为分析执行一条指令,其 (1) 。(1)A.操作码应存入指令寄存器(IR),地址码应存入程序计数器(PC)。... 查看详情

2013年上半年网络工程师试卷答案及详解

2013年上半年网络工程师上午试卷● 计算机指令一般包括操作码和地址码两部分,为分析执行一条指令,其 (1) 。(1)A.操作码应存入指令寄存器(IR),地址码应存入程序计数器(PC)。... 查看详情

bootstrap中常用的元素类名详解

...containerclass类下,以此来获得内边距和适当的对齐。(2)使用行来创建水平组(3)内容应放置 查看详情

生产者-消费者问题详解(代码片段)

1.前言  生产者-消费者问题是经典的线程同步问题(我会用java和c分别实现),主要牵扯到三个点: 一:能否互斥访问共享资源(不能同时访问共享数据); 二:当公共容器满时,生产者能否继续生产(生产者应阻塞并... 查看详情

linux命令详解之at

...术ALinux下,有两个命令可以用来作为计划任务而执行,要使用一次性任务计划,linux必须要有负责这个计划任务的服务,那就是atd服务但是并非所有的linuxdistribution都默认会打开,我们需要手动激活爱听的任务如果服务未安装,... 查看详情

小白学python:详解python里的命名规范

...篇文章主要介绍了详解python里的命名规范,命名应当尽量使用全拼写的单词,缩写的情况文章中也给大家提到,需要的朋友参考下吧文件名全小写,可使用下划线包应该是简短的、小写的名字。如果下划线可以改善可读性可以加... 查看详情

小白学python:详解python里的命名规范(代码片段)

...篇文章主要介绍了详解python里的命名规范,命名应当尽量使用全拼写的单词,缩写的情况文章中也给大家提到,需要的朋友参考下吧文件名全小写,可使用下划线包应该是简短的、小写的名字。如果下划线可以改善可读性可以加... 查看详情

聚合对象应使用“...”进行初始化

】聚合对象应使用“...”进行初始化【英文标题】:initializationwith\'...\'expectedforaggregateobject聚合对象应使用“...”进行初始化【发布时间】:2013-12-0814:30:19【问题描述】:我正在尝试进行字符串解析(事实证明这是一个巨大的痛... 查看详情

详解struts中validator验证框架的使用

参考技术A  Validator框架已成为Jakarta的公共项目的一部分可以从下载单独的Validator框架在Struts中已经带了这个框架  Validator主要依赖两个jar包  Jakartaorojar-提供一组处理文本的类具有文本替换过滤和分割功能  Commonsvalid... 查看详情

spring详解-------依赖注入的三种方式实例详解(代码片段)

...ency)1.1.2聚合(Aggregation)1.2关系强度2为什么使用依赖注入2.1开闭原则2.1.1定义2.1.2开闭原则优点2.2高内聚,低耦合3依赖注入的方式3.1通过Set方法注入1、什么是依赖注入    DI(DependencyInjection):依赖注入是指... 查看详情