插件开发Android知识Android开发

Small插件化源码分析--热更流程

2016-11-16  本文已影响331人  CangWang

我系苍王,欢迎关注的源码分析的第二节。

欢迎浏览我之前的文章,有兴趣可以参考一下,可以给个喜欢或者关注我的文章,谢谢。

[Android]如何做一个崩溃率少于千分之三噶应用app(9)-Small插件化

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,然后标志回去标志位

这一节热更流程的解说就到这里了

下一章介绍的内容,敬请期待!!!

上一篇下一篇

猜你喜欢

热点阅读