3.1 基本原理
-
合并宿主和插件的ClassLoader
需要注意的是,插件中的类不可以和宿主重复
-
合并插件和宿主的资源
重设插件资源的packageId,将插件资源和宿主资源合并
-
去除插件包对宿主的引用
构建时通过Gradle插件去除插件对宿主的代码以及资源的引用
3.2 四大组件的实现原理
-
Activity
采用宿主manifest中占坑的方式来绕过系统校验,然后再加载真正的activity;
-
Service
动态代理AMS,拦截service相关的请求,将其中转给Service Runtime
去处理,Service Runtime
会接管系统的所有操作;
-
Receiver
将插件中静态注册的receiver重新注册一遍;
-
ContentProvider
动态代理IContentProvider,拦截provider相关的请求,将其中转给Provider Runtime
去处理,Provider Runtime
会接管系统的所有操作。
VirtualAPK的整体架构图,更详细的内容请大家阅读源码。
3.3 VirtualAPK的整体架构
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)