插件框架代码已经开源,欢迎使用并反馈。https://github.com/cmguo/android-plugins
基本功能需求:
| 项目 | 子项目 | 说明 |
| 代码插入 | Java类 |
|
| Dex优化 |
| |
| 预置Dex | 支持系统预置ODEX库 | |
| 资源插入 | 数值资源 | 支持 |
| 图片资源 | 支持,当是图片资源需要share到主Context,具体机制还有待升入研究 | |
| 布局资源 | 支持,创建的View可以在Context之间共享 | |
|
| 不支持Activity、Service、Provider,他们需要在Manifest中注册 | |
| Native库 | CPU体系 | 支持多体系的SO库,但是需要与主程序一致 |
| 解压更新 | 插件APK更新时,更新从其解压出来的SO库 | |
| 系统预置 | 支持系统预置SO库,插件APK不包含SO库 | |
| 内置方式 | Android6.0以上支持内置Native库,不需要解压安装 | |
| 插件依赖 | 代码依赖 |
|
| 环境依赖 | 声明在特定主程序环境下被加载 | |
|
| 资源依赖需要静态分配资源ID空间,操作比较复杂,也不是Android公开支持的方式,Android使用AAR机制,不能用于插件,所以插件不支持资源依赖 | |
| 资源覆盖 | 覆盖目标 | 多目标同时覆盖 |
| 依赖关系 | 资源包也有依赖关系 | |
| 覆盖样式 | View、TextView,ListView,更多样式可以快速添加 | |
| 切换皮肤 | 同时选择多个皮肤,立即生效 | |
| 覆盖方式 | 覆盖Resource接口,覆盖LayoutFactory | |
| 插件管理 | 插件形式 | APK,JAR |
| 环境管理 | 对插件执行环境的组织管理 | |
| 集成方式 | 集成方式包括:系统预置,应用内置,外部存储和动态下载等 | |
| 动态更新 | 检测新版本,下载更新。 | |
|
| 不重启应用完成更新。插件已经暴露的类(class)不能回收,类的实例释放需要等待回收,多线程同步处理也有挑战,难度很大。 | |
| 其他项目 | SDK兼容性 | 支持兼容性检查。插件的SDK Level如果在目标平台不匹配,会加载失败 |
| 插件描述 | 插件名称,作者,描述,版本,图标 | |
|
| 不支持,插件不能声明特殊权限,需要主程序声明 | |
|
| 不支持,插件使用的共享库需要在主程序声明 |
本文详细介绍了一个开源插件框架的功能和特性,包括代码插入、Dex优化、资源管理、Native库支持、动态更新、热更新及插件依赖管理等。该框架支持多体系SO库、系统预置ODEX库和资源覆盖,同时提供了插件管理和环境管理功能。
1204

被折叠的 条评论
为什么被折叠?



