2024年3月21日发(作者:)

Android全面插件化RePlugin流程与源码解析

Android全面插件化RePlugin流程与源码解析

作者

恋猫月亮

2017.07.24 07:11

字数 4003

阅读 405评论 6喜欢 13赞赏 1 RePlugin,360开源的全面插件化框架,按照

官网说的,其目的是“尽可能多的让模块变成插件”,并在很稳定的前提下,尽可能像开发

普通App那样灵活。那么下面就让我们一起深入♂了解它吧。 (ps :阅读本文请多参考

源码图片 ( ̄^ ̄)ゞ )

一、介绍

RePlugin对比其他插件化,它的强大和特色,在于它只Hook住了ClassLoader。

One Hook这个坚持,最大程度保证了稳定性、兼容性和可维护性,详见《全面插件化—

—RePlugin的使命》。当然,One Hook也极大的提高了实现复杂程度性,其中主要体现

在:

增加了Gradle插件脚本,实现开发中自动代码修改与生成。分割了插件库和宿主库的

代码实现。代码中存在很多不少@deprecated、TODO和临时修改。初始化、加载、启动

等逻辑比较复杂。图一 Replugin项目结构

本篇将竭尽所能,为各位介绍其流程和内部实现,如果存在一些地方存在纰漏,还请

指出。文章篇幅较长,需耐心阅读,阅读时可结合图片源码,同时欢迎收藏,或选择感兴

趣点阅读,下面主要涉及:

二、ClassLoader基础知识。

三、Replugin项目原理和结构分析。

四、Replugin的ClassLoader。

五、Replugin的相关类介绍。

六、Replugin的初始化。

七、Replugin启动Activity。此处应有图

二、ClassLoader基础知识

既然Replugin选择Hook住ClassLoader,那先简单介绍下ClassLoader的基本知

识吧,如熟悉者请略过。

ClassLoader又叫类加载器,是专门处理类加载,一个APP可以存在多个

ClassLoader,它使用的是双亲代理模型,如下图所示,创建一个ClassLoader,需要使用