Android插件化框架

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" />

......