https://chat.deepseek.com/share/w6duumv7aglpslahak
Android插件化框架Shadow深度解析
1. 什么是Android插件化?
1.1 基本概念
Android插件化是一种技术,允许一个已安装的APP(称为宿主)动态加载并运行另一个完整的APP(称为插件),而不需要安装这个插件APP。
1.2 为什么要使用插件化?
- 模块化开发:将大型应用拆分为多个独立模块
- 动态更新:修复bug或发布新功能无需重新安装整个应用
- 减小包体积:用户按需下载功能模块
- 快速迭代:不同团队可独立开发不同插件
1.3 Shadow框架简介
Shadow是腾讯开源的一个Android插件框架,其核心特点是:
- ✅ 零反射、无Hack - 遵循Google规范
- ✅ 全动态框架 - 框架自身也可动态更新
- ✅ 功能完整 - 支持四大组件、Fragment等
2. 早期插件化框架:基于反射的Hack方案
2.1 核心矛盾
系统(ActivityManagerService)只认识和管理在AndroidManifest.xml
中注册过的组件。插件组件没有注册,系统无法识别。
2.2 解决方案:欺骗系统
通过反射篡改系统内部对象,让系统误以为插件组件是宿主中已注册的组件。
2.2.1 关键技术点
1. 提前占坑
<!-- 在宿主Manifest中声明空壳Activity -->
<activity android:name=".StubActivity01" />
<activity android:name=".StubActivity02" />
......