写点什么

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

用户头像
Android架构
关注
发布于: 1 小时前
  • 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 的时候,下图



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


  • 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 不知道你何时安装好模块从而会引发问题

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
Android App Bundle探索,android系统软件开发