android app bundle的Dynamic feature moudle

1.新建module(类似模块化)

as3.2 canary14+上面
new Module 选择Dynamic Feature Module
选择baseMoudle(apply plugin application那个)
enable on-demoand(“动态加载”)
fusing(兼容5.0之前)

2.简单测试

baseModule跳转到Dynamic Feature Module
(由于本模块访问不到其他模块,采用的是简单的隐式跳转,当然也可以用router)

3. 反编译分析

看一下加了dynamic feature module后的apks多了dynamci-feature相关的apk

《android app bundle的Dynamic feature moudle》 image.png

按照之前的方式生成aab apks 按照apk到手机上,然后点击跳转可以正常跳转,而且看现象像是baseModule的apk启动了dynamicModule的apk

导出对应手机配置apk:

《android app bundle的Dynamic feature moudle》 image.png

直接安装导出的apk只有base-master可以安装,而且跳转会闪退,这个可以理解因为已经没有dynamic-featuer-master.apk相关的代码了。
但是当反编译安装在手机上可以正常运行的apk时,得到的也只有base-master的代码

《android app bundle的Dynamic feature moudle》 image.png

所以dynamic-feature-module的大概意思是把独立业务的apk也放在手机里面,但是和主apk是分开的,等到要用的时候再调起dynamic-feature的apk?

而且由于没有服务器,不太清楚google Play的onDemond(用到再下载)是怎么个流程。可能是要用dynamic-feature-module了,再从服务器里面把对应的apk或者dex下载下来,再在本地执行上面说的流程。

emmmm…………
为了再确认下,我又写了个模块化的跳转,
就是apply plugin: ‘com.android.library’那种
然后运行发现没有其他apk调起的感觉
反编译运行的apk,也直接就是两个module代码都在,估计这就是dynamic-feature-module不一样的地方?

《android app bundle的Dynamic feature moudle》 image.png

其他:

总觉得要在google play上试试才放心,本地虽然可以通过bundleTool测试,但是onDemand的概念不好理解。

更新:

  • 在原有模块依赖关系上抽出dynamciFeatureModule
    demo上依赖关系比较简单,可以直接就把module替换成动态模块
    《android app bundle的Dynamic feature moudle》 image.png
  • bundle一个小缺陷
    因为bundle是以local(language) 、density 、abi来区分的,安装的时候也是根据这三个来下载配置apk。
    density和abi正常情况下,在手机上不可能变化的。
    但是语言可以切换,所以会造成下载的时候,观察手机的语言是中文就下载中文的配置,当切换到英文时,还是只能用中文的配置。
    因为是本地用bundleTool测试的,不知道gp上会不会在切换语言的时候,重新在服务器上把切换后的语言相关的apk下载下来,文档里面也没看到相关介绍
    类似切换系统语言时app监听系统发出的类似广播的消息,然后获取本机配置,重新在商店下载增量部分的apk??
    emmm……..难道是只有国人才会闲得把系统语言切来切去的?google就没有考虑这个问题
    原文作者:Dynamic_2018
    原文地址: https://www.jianshu.com/p/f49baedaa33e
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞