Android DynamicLoadApk代理Activity流程分析

1.1 DynamicLoadApk Activity相关框架

Android DynamicLoadApk代理Activity流程分析_第1张图片
DynamicLoadApk Activity相关类图
  • DLPluginManager:插件管理模块,负责插件的加载、管理以及启动插件组件;
  • DLPlugin:定义Activity的生命周期接口,是DLPluginActivityDLProxyImpl的引用接口;
  • DLProxyImpl:负责绑定DLPluginActivity DLProxyActivity
  • DLProxyActivity:是DLPluginActivity运行的容器,需要在AndroidManifest.xml注册;

1.2 插件Activity加载流程

Android DynamicLoadApk代理Activity流程分析_第2张图片
插件Activity加载流程

1.3 加载插件PackageInfo Resource

  1. PackageInfoPackageMS的接口getPackageArchiveInfo解析得到;
  2. 通过反射AssetManageraddAssetPath方法传入插件activity的路径得到插件的AssetManager,然后通过AssetManager创建插件的Resources对象
  3. DexClassLoader加载class
  4. so拷贝到宿主的NativeLib目录下

1.4 DLProxyActivity DLPluginActivity相互绑定

DLProxyActivityAMS启动管理,onCreate阶段,相互绑定DLProxyActivityDLPluginActivity
DLPluginActivity需要DLProxyActivity所在的环境;
DLProxyActivity代理执行DLPluginActivity业务;

你可能感兴趣的:(Android DynamicLoadApk代理Activity流程分析)