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

韩曙亮 韩曙亮     2022-12-09     277

关键词:

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


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

【Google Play】App Bundle 使用详解 ( 简介 | 应用内更新 | 即时更新 | 灵活更新 )


参考 Create and set up your app 文档 , 创建 Google Play 中要上架的应用 ;





一、App Bundle 简介



App Bundle 是 Android 提供的新的应用分发格式 , 用于取代之前传统的 APK 分发格式 ;

Android App Bundle 文件不能直接用于下载 , Google Play 会从该 App Bundle 中提取必要文件 , 自动生成一个匹配用户的 APK 文件 ; 这些优化的 APK 文件 , 比传统的单一 APK 文件体积小很多 ;

如 : 用户使用的是 arm64 芯片的 xxhdpi 手机 , 当前语言环境是英文的 , Google Play 就会按照如下要求生成新的 APK 文件 ;

  • 动态库方面 : 删除 armeabi-v7a , x86 , x86_64 的动态库 , 只保留 arm64-v8a 动态库 ;
  • 资源文件方面 : 删除除 xxhdpi 之外的资源文件 , 只保留 xxhdpi 资源文件 ;
  • 国际化资源方面 : 只保留英文国际化资源 ;

APK 进行了上述优化 , 肯定会一定程度上减少了应用体积 ;

开发者上传 单一的 App Bundle , 由 Google Play 进行 动态分发 , 比上传多个 APK 更易于维护 ;


下图是官方提供的演示效果 , 左侧是传统 APK 打包过程 , 将所有资源打包到 APK 文件中 ; 右侧是使用 App Bundle 后 , Google Play 为下载应用的用户生成的定制 APK 包 , 删减了很多不必要的资源 ;

在这里插入图片描述

使用 App Bundle 可以实现定制化的灵活的分发 , 可以灵活的决定 分发内容 , 分发目标群体 , 分发时间 等分发要素 ;





二、App Bundle 定制化分发




1、应用内更新


应用内更新 : 可以在应用内直接启用更新机制 ; 类似于热修复 ;

Google Play 自带自动更新功能 , 不是所有的用户都会自动更新 , 如果 用户没有联网 , 连接的是运营商 3/4/5G 按流量收费网络 , 用户设置不自动更新 , 则该用户不会收到 App Bundle 推送的 自动更新 ;

对于开发者来说 , 用户无法更新到最新功能 , 可能会带来一些问题 ; 如 : 修复了重大 BUG , 添加了重要功能 , 都无法推送给用户 ; 多人游戏中 , 所有用户的使用版本必须一致 , 如果用户没有更新 , 则带来各种问题 ;


应用内更新的更新时机 :

  • 即时更新 : 马上触发更新流程 , 不需要开发者有大量的开发 , 整个更新过程由 Google Play 实现 ;
  • 灵活更新 : 开发者需要开发细粒度的更新流程 , 收到 Google Play 的更新推送后 , 选择一个合适的时机进行更新 ;

①、即时更新


即时更新示例 : 用户进入应用后 , 收到 Google Play 推送的更新 , 并显示本次更新内容 , 下载的更新包大小 ; 用户点击更新后 , 开始下载更新 , 并实时显示更新进度条 , 更新完成之后 , 扔留在应用中 , 继续使用 ;

整个下载流程都由 Google Play 控制 ;

开发者只需要触发更新 , 之后的工作都是 Google Play 负责 ;

在这里插入图片描述


即时更新代码示例 : 先创建 AppUpdateManager 对象 , 检查是否有更新 , 如果有则触发即时更新 , 或者像上面的示例一样 , 弹出一个界面 , 显示是否更新按钮 , 让用户触发即时更新 ;
在这里插入图片描述


②、灵活更新


灵活更新示例 : 用户使用应用时 , 提示用户当前有最新软件可用 ; 在界面中显示一个更新图标 ;
用户点击图标后 , 弹出对话框 , 让用户选择是否更新 ;

  • 如果用户选择否 , 则直接退出当前界面 , 继续使用 ;
  • 如果用户选择更新 , 则开始更新 , 更新的同时 , 用户可以继续使用该应用 ;

下载更新包并安装完成后 , 提示用户重启 , 并使用最新的应用功能 ;
在这里插入图片描述

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

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

clickhouse极简教程-图文详解原理系列clickhouse主键索引的存储结构与查询性能优化...(代码片段)

概述这是AlexeyMilovidov(ClickHouse的创建者)给出的关于复合主键的答案的翻译。原文:https://groups.google.com/g/clickhouse/c/eUrsP30VtSU/m/p4-pxgdXAgAJ问题:主键可以有多少列?存储驱动器上的数据布局是什么?有任何理论/实践... 查看详情

详解支持向量机

...astav编译|VK来源|Medium介绍监督学习描述了一类问题,涉及使用模型来学习输入示例和目标变量之间的映射。如果存在分类问题,则目标变量可以是类标签,如果存在回归问题,则目标变量是连续值。一些模型可用于回归和分类。... 查看详情

暴力破解及端口扫描详解

...测JR)JohntheRipper是一款开源的密码破解工具,可使用密码字典(包含各种密码组合的列表文件)来进行暴力破解1、JR概述JoththeRipper,简称为JR•一款密码分析工具,支持字典式的暴力破解•通过对shadow文件的口令分析࿰... 查看详情

暴力破解及端口扫描详解

...测JR)JohntheRipper是一款开源的密码破解工具,可使用密码字典(包含各种密码组合的列表文件)来进行暴力破解1、JR概述JoththeRipper,简称为JR•一款密码分析工具,支持字典式的暴力破解•通过对shadow文件的口令分析࿰... 查看详情

linux搭建vsftpd服务详解(代码片段)

...所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传" 查看详情

大道至简机器学习算法之隐马尔科夫模型(hiddenmarkovmodel,hmm)详解---预测问题:维特比算法(viterbialgorithm)详解

❤️本篇相关往期文章汇总:(1)HMM开篇:基本概念和几个要素(2)HMM计算问题:前后向算法(3)HMM学习问题:Baum-Welch算法❤️本文隶属专栏:大道至简之机器学习系列❤️更多精彩... 查看详情

iptables详解

iptables简介      netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向... 查看详情

禅道的最简使用

1.禅道最简使用1.1.使用禅道来进行项目任务管理1.1.1.创建项目1.进入项目视图,点击右侧的”添加项目“链接。2.出现项目添加的页面在这个页面设置项目名称、代号、起止时间、可用工作日、团队名称、和项目描述等字段。其... 查看详情

urllib模块使用简例

一、最简单的使用importurllib,urllib2response=urllib2.urlopen("https://www.baidu.com")printresponse.read()ViewCode二、构造Request对象request=urllib2.Request("https://www.baidu.com")response=urllib2.urlopen(request)p 查看详情

大道至简机器学习算法之隐马尔科夫模型(hiddenmarkovmodel,hmm)详解---学习问题:baum-welch算法推导

...至简】机器学习算法之隐马尔科夫模型(HiddenMarkovModel,HMM)详解(1)---开篇:基本概念和几个要素_尚拙谨言的博客-CSDN博客【大道至简】机器学习算法之隐马尔科夫模型(HiddenMarkovModel,HMM)详解(2)---计算问题ÿ... 查看详情

ambarimetrics详解(代码片段)

AmbariMetrics原理AmbariMetricsSystem简称为AMS,它主要为系统管理员提供了集群性能的监察功能。Metrics一般分为Cluster、Host以及Service三个层级。Cluster和Host级主要负责监察集群机器相关的性能,而Service级别则负责HostComponent的性能。AMS... 查看详情

elk架构和filebeat工作原理详解(代码片段)

...产品的首字母缩写。这三者都是开源软件,通常配合使用,而且又先后归于Elastic.co公司名下,所以被简称为ELKStack。根据GoogleTrend的信息显示,ELKStack已经成为目前最流行的集中式日志解决方案。 查看详情

使用docker构建部署运行springboot应用《springboot2.0极简教程》

使用Docker构建部署运行SpringBoot应用《SpringBoot2.0极简教程》image.pngimage.pngimage.pngimage.png。。。image.pngimage.pngimage.png。。。image.pngimage.pngimage.pngimage.png 查看详情

python使用async/await极简例子

参考技术A很多协程教程都用asyncio.sleep()来模拟耗时的IO操作,但是却没说真实的应用怎么写。运行结果很简单:还有什么ensure_future,create_task,可自行研究。 查看详情

17.scrapy框架简例使用(代码片段)

目标:创建scrapy项目   创建一个spider来抓取站点和处理数据   通过命令行将抓取内容导出 1.创建项目scrapystartprojecttutorial2.创建spidercdtutorialscrapygenspiderquotesquotes.toscrape.com3.创建item4.解析response,获取网页内容  5.... 查看详情

极简原型(js框架)

...script框架用于其“类”和继承功能。对于其他一切,我将使用jQuery。是否有一个极简版本的原型可以给我这个功能?如果我不会全部使用它,我不想要整个库的额外开销。具体来说,我想要类和继承功能,使我能够按如下方式定... 查看详情

最简实例说明waitnotifynotifyall的使用方法

 博客分类: java基础多线程JVMthreadIDEA /*** 转载请注明作者longdick  http://longdick.iteye.com**/ wait()、notify()、notifyAll()是三个定义在Object类里的方法,可以用来控制线程的状态。这三个方法最终调用的都是jvm... 查看详情