美文网首页
插件化原理

插件化原理

作者: 浪里_个郎 | 来源:发表于2020-04-30 17:13 被阅读0次

比较阿里开源组件化和插件化框架的区别

name 模块化开发 模块间路由 动态加载 热修复 兼容性问题
组件化ARouter 支持 支持
插件化Atlas 支持 支持 支持 支持

总的来说,组件化框架功能单一,专心于模块化开发,但没有黑科技,不存在Android版本的兼容问题。而插件化框架功能强大,最关键的是具备热修复、模块动态加载、删除的能力,但因为需要hook系统组件,所以存在可能的兼容性问题。
Atlas的热修复使用的是自家的Andfix,基于Native hook。

插件化实现原理

插件化是体现在功能拆分方面的,它将某个功能独立提取出来,独立开发,独立测试,再插入到主应用中动态加载。以此来规避主应用规模超限。通过代理或Hook来实现。

代理

打开插件中Activity需要的资源

要正常打开插件中的Activity,需要以下资源:
1,通过DexClassLoader加载插件apk
2,通过包管理器,获取当前已加载的类信息
3,通过AssetManager获取插件apk中的资源
4,通过壳app中的代理Activity,提供上下文Context和生命周期管理(插件中的四大组件因为并没有注册到壳app的AndroidManifest.xml,所以并不具备生命周期)

插件生命周期管理

通过代理Activity启动和同步插件Activity的生命周期

Hook

hook方式实现插件化

Hook其中的第一步或第十步实现插件Activity启动。

通过hook的方式启动插件Activity需要解决如下问题:
a、插件Activity如何绕开Manifest中注册的检测
b、如何创建Activity实例,并同步生命周期
我们通过VirtualApk插件化框架来看其实现方案:
a、预先在Manifest中注册各种启动模式的Activity占坑,启动时hook第1步,将Intent根据启动模式替换成预先在Manifest占坑的Activity,这样就解决了Manifest中注册的检测
b、hook第10步,使用插件的ClassLoader反射创建插件Activity,之后Activity的生命周期回调都通知给插件Activity,这样就解决了创建Activity并同步生命周期的问题

动态加载小tips

1,关于dex的生成
我们可以用dx工具,将jar包转成dex文件
2,dex的加载过程
通过DexClassLoader加载dex文件,然后解析其中的class、method等

参考:
https://www.jianshu.com/p/7e4958d02094

相关文章

  • 代理模式

    Android插件化原理解析——Hook机制之动态代理 Android插件化原理解析——概要 Retrofit2 ...

  • android插件化研究与实践

    wengyiming.cn 原文- 插件化研究与实践 why——插件化需求背景 带着目的看源码——插件化实现原理 ...

  • Android插件化

    插件化涉及的东西很多,下面从基础知识、插件化技术和主流的插件化框架来介绍 基础知识 类加载器原理 反射原理 代理模...

  • Android插件化原理(Small)

    插件化原理(small) ClassLoader DexClassLoader 和 PathClassLoader...

  • 插件化原理

    比较阿里开源组件化和插件化框架的区别 name模块化开发模块间路由动态加载热修复兼容性问题组件化ARouter支持...

  • 插件化-Activity实现

    1.插件化 关于插件化的原理和插件化框架之前的优缺点对比,已经有很多的文章,这里不再赘述。 2.Activity的...

  • 插件化学习

    atlas学习传送门github demo地址atlas插件化源码解析atlas插件化官方文档atlas原理细节解析

  • 插件化、模块化、组件化、热修复、增量更新、Gradle

    对热修复和插件化的理解 插件化原理分析 模块化实现(好处,原因) 描述清点击 Android Studio 的 b...

  • Android插件化进阶——插件化原理和插件管理器(一)

    之前已经对我们学习插件化原理需要的预备知识进行了比较详细的讲解了,从这篇文章开始,我们将具体介绍插件化原理,同时会...

  • Android插件化之Small框架原理解析

    Small框架原理简介 Small是Github上一款开源的插件化框架。实现Android插件化的核心技术是:动态...

网友评论

      本文标题:插件化原理

      本文链接:https://www.haomeiwen.com/subject/bxltghtx.html