一、发展历史
- 2012年:AndroidDynamicLoader 给予 Fragment 实现了插件化框架,可以动态加载插件中的 Fragment 实现页面的切换。
- 2013年:阿里技术沙龙上,伯奎做了 Atlas 插件化框架的分享,说明那时候阿里已经在做插件化的运用和开发了。
- 2014年:任玉刚开源了 dynamic-load-apk,通过代理分发的方式实现了动态化
- 2015年:张勇 发布了 DroidPlugin,使用 hook 系统方式实现插件化。
- 2017年:阿里推出 Atlas
- 2019年:腾讯推出了 Shadow,号称是零反射,并且框架自身也可实现动态化,看了代码以后发现,其实本质上还是使用了代理分发生命周期实现四大组件动态化,然后抽象接口来实现框架的动态化。后面有机会可以对其做一下分析。
从2012至今,可以说插件化技术基本成型了,主要是代理和 hook 系统两种方式。
二、常用名词
在插件化中有一些专有名词,如果是第一次接触可能不太了解,这里解释一下。
- 宿主:负责加载插件的 apk,一般来说就是已经安装的应用本身。
- StubActivity:宿主中的占位 Activity,注册在宿主 Manifest 文件中,负责加载插件 Activity。
- PluginActivity:插件 Activity,在插件 apk 中,没有注册在 Manifest 文件中,需要 StubActivity 来加载。
插件化是一门很有意思的学问,网上已经有很多“入门知识”和“实现原理”之类的文章,但是关于插件化的实战却没有一个系统、全面的分享,下面我要分享的是最近小编有幸在腾讯高工手里扒到这份《插件化实战学习手册》,这位大佬主导开发过多个采用插件化架构的APP项目。手册中收录了各互联网大厂热门的插件化项目实战,从新手到架构师,这份学习手册足以。

第一章、插件化技术的前世今生
- 插件化提要
- 插件化发展历史
第二章 插件化原理
- 类加载
- 双亲委托机制
- 资源加载
- 四大组件支持
- Proxy Activity代理
- hook方式
第三章 Android插件化初探
- 从零开始实现一个插件化框架
- Activity的启动流程
- 寻找Hook点
- 撸码阶段
- 代理对象
- 偷天换日,替换原来的Intent
- ActivityThread
- 将代理的intent替换回来
第四章 架构演化(大厂篇)
- 360插件开发之DroidPlugin
插件开发之360 DroidPlugin源码分析
插件开发之360 DroidPlugin源码分析之Hook机制
Hook机制的包结构关系
Hook机制类图关系
Hook机制的时序图关系
Manifest权限申请
基类Hook做了什么?
…
- 滴滴VirtualApk实战
配置
应用
原理
总结
问题
- 基于VirtualAPK Android重构之插件化
Plug-in Hello World
插件化框架的选择
插件化原理
引入插件化之痛
- 爱奇艺插件化原理分析之 Neptune框架
插件化基础知识点
类加载
插件化中资源使用限制
Apk打包流程
四大组件的插件化
插件Activity任务栈
处理插件中的广播
处理插件中的Service
- 腾讯插件化框架 Shadow项目解析
sample示例代码AndroidManifest.xml分析
Activity 实现
替换插件 Activity 的父类
Service 实现
BroadcastReceiver 实现
ContentProvider 实现
框架自身动态化
以上就是腾讯内部强势推出的“插件化实战学习手册”,有需要的朋友直接点击文末优快云官方认证微信卡片免费领取。↓↓↓
