我系苍王,欢迎关注的源码分析的第二节。
欢迎浏览我之前的文章,有兴趣可以参考一下,可以给个喜欢或者关注我的文章,谢谢。
[Android]如何做一个崩溃率少于千分之三噶应用app(9)-Small插件化
这一节我们要说的热更的流程的源码
二.热更流程
1.在app.home里面的MainFragment,官方提供了checkUpgrade的函数
我们可以看到UpgradeManager里面会调用requestUrgradeInfo的函数
这里通过http下载需要更新的bundles.json,封装updateInfo的列表里面
可以看到json里面updates的关键字,包括pkg名字和url下载地址
之后再调用updateBundles的方法
(1)首先更新一线新的模块的列表,跳转到Bundle里面
并非强力更新force为false,会添加需要加载的Bundles到sUpdateBundles列表里面
(2)通过遍历updateInfo列表,通过用包名获取之前bundle的patch文件,然后http协议来下载url的so内容替换掉原来的那一个
最后ui调用bundle.update
最后会调用SharedPreferences记录需要更新的标志位
但是这时候还不会立刻生效,如果我们按home键,然后会调用InstrumentationWrapper(继承于Instrumenttation)的声明周期,会走stop的生命周期。
判断如果存在更新的标志位,会把后台的属于这个app的process全部kill掉
再重新启动后,跑到ApkBundleLauncher的postSetup的函数,调用删除apk的opDexFile,然后标志回去标志位
这一节热更流程的解说就到这里了
下一章介绍的内容,敬请期待!!!