前言:
开源盛行的插件化框架有很多,实现方式也有很多种。本项目是介绍如何加载dex文件(java代码)、so库(c++代码)、资源文件(resource)到虚拟机,围绕Android Framework源码,如何启动插件中Activity、Service、BroadcastReceiver、ContentProvider四大组件,从而了解到插件化中核心知识点。
注意点:若是实际项目中使用,推举使用成熟的插件化框架,存在的bug较少。
插件化教程核心点: 围绕Android 7.0 framewok层讲解相应的源码
- Android 插件化之ClassLoader加载Dex文件
- Android 插件化之ClassLoader加载so库
- Android 插件化之aapt修改资源前缀
- Android 插件化之加载插件资源
- Android插件化之动态替换Application
- Android 插件化之启动Activity
- Android 插件化之加载Service
- Android 插件化之加载BroadcastReceiver
- Android 插件化之加载ContentProvider
- Android 插件化之Fragment重建问题
备注点:以上插件化核心点的代码已经全部实现,详细介绍正在完善。
项目特别说明:
- 需要先阅读Android 插件化之aapt修改资源前缀,接着,配置好aapt。
- 在导入项目,进行调试。
Android P以上非公开API限制问题
android官方在9.0以上版本,限制反射调用hide隐藏api,给插件化带来一片阴影。
不过,国内大牛厉害,针对该问题已经有过墙梯。详细方案,请阅读另一种绕过 Android P以上非公开API限制的办法, 使用FreeReflection 库便可解决。
目前在android 12 以上机型,存在反射问题。请在android 11以下运行本案例,若有其他crash 问题,欢迎提交Issues。
资源参考: