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

韩曙亮 韩曙亮     2022-12-09     212

关键词:

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


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

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


一、App Bundle 定制化分发




1、按条件分发


按条件分发 : 为不同类型的用户 , 分发不同的功能 ; 如 : 会员 和 非会员 , 选择设定偏好不同的用户 等用户分类 , 分发不同的内容 ;

开发者可以指定一些条件 , 只有在这些条件都满足的情况下 , 才触发安装某个功能模块 ; 如 : 用户充值 , 买了会员 , 则推送高级会员功能给用户 ;
普通会员 用户没有付费 , 不用提供高级功能 , 下载时只下载普通功能 , 这样可以优化安装包大小 ;


Google Play 支持的分发条件 :

  • 国家 / 地区 : 指定功能对应的国家或地区 ;
  • 最小支持 SDK 版本 : 只有高于指定版本的手机才会安装对应功能 ;
  • 设备功能 : 指定设备功能 , 如是否支持 VR , AR ;

配置按 最小支持 SDK 版本 / 设备功能 条件分发代码示例 : 下面的配置中配置了 , 设备功能 需要支持 AR 功能 , 最低 API 版本是 24 24 24 ;
如果 <dist:install-time> 为空 , 或者没有该节点 , 则该配置对应的模块将会无条件安装 ;

在这里插入图片描述

配置按 国家 / 地区 条件分发代码示例 : 可以指定排除某些国家或地区 , 也可以指定多个国家或地区 ; 用户的国家是根据用户填写的账单地址决定的 ;

在这里插入图片描述


上述的条件安装 , 可以非常灵活的组合使用不同的安装条件 , 所有 安装条件 都被满足时 , 才会安装相应功能模块 ;
在应用中 , 可以调用 SplitInstallManager.getInstalledModules() 获取当前用户安装了哪些模块 ;
开发者进而依据当前安装的模块 , 避免用户非法访问没有权限的模块 ;

SplitInstallManager.getInstalledModules()

应用安装完成后 , 在使用过程中可以再次请求继续安装满足条件的模块 , 不一定必须在应用初次安装时一次性安装完毕所有模块 ;


3、按需分发


按需分发 : 在用户需要的时候为用户分发 , 如 : 用户点击应用内某个按钮 , 启用一个功能 , 此时才触发更新 , 类似于组件化 ;

根据用户的使用偏好 或 使用频率 , 灵活的 安装 / 删除 某些模块 ;


按需分发示例 : 某些功能使用频率很低 , 大多数用户使用频率是 0 0 0 次 ~ 1 1 1 次 , 对于这种应用 , 默认初始不安装该模块 , 如果用户使用到该模块后 , 临时为该用户动态地下载安装该模块 , 用户使用完毕后 , 如果觉得空间紧张 , 可以再次删除该模块 ;

在这里插入图片描述

还有一种常用的情景就是新手入门 , 应用的新手入门中有大量的图片 , 视频资源等 , 非常占用空间 ;
用户在初次进入应用时 , 启动新手入门功能 , 等用户使用完毕后 , 将新手入门删除即可 , 不用继续占用如此多的控件 ;


按需分发代码示例 : 该模块在 AndroidManifest.xml 清单文件中 , 设置的安装条件是无条件安装 ;
当用户完成新手入门流程后 , 可以使用 SplitInstallManager.deferredUninstall(“onboarding”) 代码移除新手入门模块 ;

SplitInstallManager.deferredUninstall("onboarding")

在这里插入图片描述


4、资源分发


资源分发 : 将程序的代码 , 资源 打包到 aab 文件中 ;
在 Android 应用中 , 占用空间最多的就是资源文件 , 代码的占用空间一般都很少 ;
许多应用的资源达到数百 MB , 甚至 1GB , 初次下载时下载的很慢 ;


资源包 : 为了支持上述使用场景 , Google Play 引入了 Assets Pack 资源包工具 , 资源包中只能包含资源 , 不能包含代码 ; 资源包可以达到 1GB ;


资源包在打包时 , 与游戏的代码一起打包到 App Bundle 中 , 开发者只需要将该 AAB 上传到 Google Play 即可 ;
Google Play 会自动优化该 App Bundle ;

在这里插入图片描述

这样所有的资源可以一次性安装到设备上 , 不受 Android App Bundle 150MB 大小的限制 ;
也不需要再使用 APK 扩展文件 ;

在这里插入图片描述

googleplayappbundle使用详解(简介|应用内更新|即时更新|灵活更新)

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

搜索系统中所有以.repo结尾的文件并删除(find命令详解及xargs命令详解)(代码片段)

...:"-name",支持通配符"*"、"?"按文件大小查找:"-size",可使用"+"、"-"作为容量条件按文件属主查找:"-user"按文件类型查找:"type"注:“*”匹配多个字符,“?”匹配单个字符-si 查看详情

android中onkeydown()方法使用详解

onKeyDown():监听手机屏幕上的按键比如我们经常退出某款程序时,按back键后,会提示,再按一次退出!这样的提示字样,就是用这个方法去实现的。就是这种效果:代码实现:privatelongclickTime=0L;@OverridepublicbooleanonKeyDown(intkeyCode,KeyE... 查看详情

arcgis微课1000例0011:arcgis空间查询(按位置选择selectbylocation)完全案例详解

...多少家庭,那么可以选择该洪水边界内的所有家庭。您可使用多种选择方法,选择与同一图层或其他图层中的要素接近或重叠的点、线或面要素。文章目录1、点—点查询2、线—点查询3、面—点查询4、点—线查询5、线—线查询6... 查看详情

arcgis微课1000例0011:arcgis空间查询(按位置选择selectbylocation)完全案例详解

...多少家庭,那么可以选择该洪水边界内的所有家庭。您可使用多种选择方法,选择与同一图层或其他图层中的要素接近或重叠的点、线或面要素。文章目录1、点—点查询2、线—点查询3、面—点查询4、点—线查询5、线—线查询6... 查看详情

python解析excel中使用xlrd库xlwt库操作,读取excel文件详解

上文提供了Excel文件读写操作的基本模板,本文进一步详解这两个模块的功能。一、Book(class)由xlrd.open_work(“example.xls”)返回nsheets:sheets数sheet_names:sheet名称列表sheets:sheet列表sheet_by_index(sheetx):按序号提取sheetsheet_by_name(sheet_name):按... 查看详情

namedparameterjdbctemplate使用详解(代码片段)

一、什么是NamedParameterJdbcTemplateNamedParameterJdbcTemplate类拓展了JdbcTemplate类,对JdbcTemplate类进行了封装从而支持**具名参数特性**。什么是具名参数?SQL按名称(以冒号开头)⽽不是按位置进⾏指定。例如:传统的jdbcTemplate... 查看详情

sort命令详解

参考技术A在linux系统使用过程中,提供了sort排序命令,支持常用的排序功能。sort命令支持很多参数,常用参数如下:默认情况下,sort命令,以字母序进行文本排序。如下:如果想对数字进行排序,可以使用-n参数sort排序的时候... 查看详情

autowirecapablebeanfactory源码详解

...部应用BeanFactory类需要实现此接口。  正常情况下不要使用此接口,应该更倾向于使用BeanFactory或者ListableBeanFactory接口。  此接口主要是针对框架之外,没有向Spring托管的Bean的应用。通过暴露此功能,Spring框架之外的程序,... 查看详情

每日一模块-python字典按keyvalue排序问题详解(代码片段)

现有字典d=‘a‘:24,‘b‘:32,"c":12请分别按字典只中的key、value排序?sorted(iterable,key,reverse)三个参数,iterable是可迭代对象,key是一个函数,用来选取参与比较的元素,reverse则是用来指定排序是倒序还是正序,默认reverse=Fal... 查看详情

nginx日志按日期切割详解(按天切割)

由于nginx的日志本身只是支持按照server_name或者大小进行划分,对于习惯了apache的按照一个网站每天一个日志的我来说是不可以接受的,所以就实现了按天切割的功能,这篇文章主要介绍了关于Nginx日志按日期切割的相关资料,需... 查看详情

android中onkeydown()方法使用详解(代码片段)

onKeyDown():监听手机屏幕上的按键比如我们经常退出某款程序时,按back键后,会提示,再按一次退出!这样的提示字样,就是用这个方法去实现的。就是这种效果:代码实现:@OverridepublicbooleanonKeyDown(... 查看详情

more和less命令详解(代码片段)

...上到下显示在屏幕上。 more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b&nbs 查看详情

操作符详解

一、按位取反的应用场景1、如何将一个二进制数其中的某一位改为1可以进行按位或(若有一个为真1,输出结果就为真),或上一个1TIP:如何定位二进制中的某一位数?可以左移n个字符。2、将第一题的数再还原还回去可以按位... 查看详情

log4j配置参数详解——按日志文件大小日期切分日志文件

 项目中尽管对log4j有基本的配置,例如按天生成日志文件以作区分,但如果系统日志文件过大,则就需要考虑以更小的单位切分或者其他切分方式。下面就总结一下log4j常用的配置参数以及切分日志的不同方式。一、基本配... 查看详情

java命令行参数详解

...完本篇文章你会了解到java命令参数的含义,并可初步使用java命令来更好的启动和创建我们的应用。一.创建和编译应用这里可以看到一些内置命令工具,我按使用程度对他们进行了排序:java:LaunchesaJavaapplication.&#... 查看详情

详解bootstrap实现基本布局的方法

...了一篇20分钟打造Bootstrap站点的文章,内容有点老,重新使用Bootstrap3实现一下,将涉及的内容也尽可能详细说明。 1.创建基本的页面我们先创建一个基本的HTML模板页面,使用sublime+emmet可以直接创建这个页面。1.1新建一个文... 查看详情

位算符详解按位与或异或取反左移右移

1.按位与(&)inta=3,b=-2,c=a&b;3&-2结果:22.按位或(|)inta=3,b=-2,3|-2结果:-13.按位异或(^)inta=3,b=-2,c=a^b;3^-2结果:-34.按位取反(~)inta=18,b=~a;~2结果:-35.左移(<<)<< :左移 左边最高位丢弃,右边补... 查看详情