Android源码分析插件化&热更新Replugin学习

Replugin 全面解析(1)

2017-08-05  本文已影响4614人  蒋扬海

前言

Replugin 已经开源一个月了,最近几天终于抽出时间来研究研究,这里将我的一些心得体会写下来,分享给大家,希望能帮助后来者少走弯路。关于 Replugin 的基本介绍及起优缺点网上已经有一些不错的文章,大家可以搜索一下,很容易就能找到。这篇文章的主要目标是介绍 Replugin 的一些核心概念以及一些核心流程,让大家了解 Replugin 的运作原理。这其中包括 Host 的启动流程,插件的加载和启动流程,坑位的原理等。开发团队利用了一些非常巧妙的方法使得整个框架在只有一个 Hook 点的情况下支持 android 原生的大部分特性,不得不说这一点很厉害,无论系统如何升级,国内厂商如何定制系统,都不会影响这个框架的运行,除非他们连 ClassLoader 都能干掉。当然在阅读源码的过程中,也发现整个代码质量还有提高和优化的空间,另外有一些小设计上有点复杂,如果开发团队有时间能重构优化一下就好了。当然,瑕不掩瑜,这个框架值得大家学习和借鉴!!

阅读提示

  • 这个系列一共有5篇文章,对核心原理和四大组件分别进行讲解
  • 文章中的代码都是从 Replugin 源码中搬过来的,但省略了一些部分以便于讲解,代码中的注释大部分是作者本人所加,便于理解代码,也能缩减讲解的篇幅,在阅读时请不要忽略注释。
  • 由于代码分支较多,为了方便讲解,我在一些注释中标注了A,B,C等用于标记分支代码
  • 要完全了解Replugin的一些源码,你需要能够理解Binder通信机制的原理,android中ClassLoader的原理,以及对四大组件的启动流程有所了解。

目录

核心概念

Host启动流程

Host在启动的时候会先进行UI进程的初始化工作,但在进行到中途的时候会巧妙的将Persistent进程启动起来,以提供服务,不然UI进程将无法正常启动起来,因为有很多东西时运行在Persistent进程的。

上面我们顺着一条线走通了,接着我们来看看在前面的代码中标记过的代码分支A和B

以上是UI进程启动中的一些重要流程,接着我们来看看Persistent进程启动流程中的一些要点。

小结

RepluginClassLoader 和坑位机制是 Replugin 最重要的两个基本概念,对四大组件的支持基本都是在此基础上架构起来的!

另外Replugin中的进程关系也有一些复杂,在后面的文章中会详细讲解。

下一篇Replugin 全面解析(2) 会讲解插件Activity加载和启动流程!

上一篇 下一篇

猜你喜欢

热点阅读