1.1 DynamicLoadApk Activity相关框架
-
DLPluginManager
:插件管理模块,负责插件的加载、管理以及启动插件组件; -
DLPlugin
:定义Activity
的生命周期接口,是DLPluginActivity
在DLProxyImpl
的引用接口; -
DLProxyImpl
:负责绑定DLPluginActivity
DLProxyActivity
-
DLProxyActivity
:是DLPluginActivity
运行的容器,需要在AndroidManifest.xml
注册;
1.2 插件Activity加载流程
1.3 加载插件PackageInfo Resource
-
PackageInfo
由PackageMS
的接口getPackageArchiveInfo
解析得到; - 通过反射
AssetManager
的addAssetPath
方法传入插件activity
的路径得到插件的AssetManager
,然后通过AssetManager
创建插件的Resources
对象 -
DexClassLoader
加载class
-
so
拷贝到宿主的NativeLib
目录下
1.4 DLProxyActivity DLPluginActivity相互绑定
DLProxyActivity
有AMS
启动管理,onCreate
阶段,相互绑定DLProxyActivity
、DLPluginActivity
;
DLPluginActivity
需要DLProxyActivity
所在的环境;
DLProxyActivity
代理执行DLPluginActivity
业务;