Android App Bundle探索,android系统软件开发

  • Dynamic Feature Apk:
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

浏览器打开:qq.cn.hn/FTe 免费领取

动态特性Apk,这是组件化的一个好的新方案,通过动态下发模块来做到功能的动态更新

bundletool工具

当你选择将App打包成.aab(Android App Bundle)的后缀文件之后,如何测试你的Apk是否可用,bundletool工具正是用来处理这个aab文件的。

Github:https://github.com/google/bundletool

使用方法:https://developer.android.com/guide/app-bundle/test

bundletool是google推出的开源工具,使用方法十分简单,使用几行命令就可以获取出针对相应设备的Apk,也可以一键进行安装,签名等操作。Google Play也是使用bundletool来进行aab解包分发给不同的设备的。

兼容性问题

Api < 21的手机无法进行模块化,Google Play会对其进行Multiple Apks操作来进行下发操作。

当你创建一个Dynamic Module的时候,下图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WD6Y1SQG-1636343436459)(https://user-gold-cdn.xitu.io/2018/6/3/163c3bfe05490c11?imageView2/0/w/1280/h/960/ignore-error/1)]

上面有两个选项,一个文本框

  • Enable on-demand: 是否启用按需下载,如果不启用,会直接打进Apk
  • Fusing:熔断操作,是否安装到不支持按需下载的设备中
  • Module title: 模块标题

对于动态组件的一些使用场景

语言包的动态下发

当Split 针对语言进行划分时候,用户下载的Apk仅仅只能下载下来一个Base Apk,包含他的当前系统语言,你可以将其他语言包作为Dynamic feature下发给用户,做到语言包的动态下发

功能的动态下发

对于某些独立的feature,这其实跟之前的插件化方案有异曲同工之处,而且天然支持友好,动态下发业务需求能有效的减少包大小,增加启动速度,减少安装时间等等。

热修复场景

通过简单的逻辑判断,可以直接用下发下来的feature来进行对当前feature的替换使用,做到热修复的效果。而且无需考虑后期的版本升级问题。

关于动态模块的一些注意事项

  1. 当打开on-demand(按需加载)时,必须开启Fusing(熔断操作)才能正常的让Api21以下的手机使用module
  2. 一般情况下,动态模块下发之后需要重启App才能加载成功,但是如果你使用SplitCompat library,就可以立即生效,Access code and resources from downloaded modules
  3. 如果下载的模块太大,需要用户确认,GP要求大于10MB需要用户确认
  4. 国际上可以使用Google Play的Play Core Lib直接从gp后台下载我们上传好的dynamic module.
  5. module中的AndroidManifest中定义的Activity不能有exported:true因为别的app不知道你何时安装好模块从而会引发问题
    Activity不能有exported:true因为别的app不知道你何时安装好模块从而会引发问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值