占位式插件化方案
宿主启动插件 Activity 的流程
实现思路:
-
创建一个
DexClassLoader
类加载其用于加载插件包apk中的Activity
类 -
反射调用
AssetManager
的addAssetPath()
将插件包的路径添加,然后通过该AssetManager
的实例构造Resource
的实例用以加载插件中的布局 -
启动插件中的
Activity
时,先启动宿主中占位的Activity
,然后反射创建出目标Activity
的实例,为其注入Context
对象(占位Activity
自身),调用其onCreate
生命周期方法
其中占位的 Activity
是在宿主的 AndroidManifest.xml
中注册的,而插件中的 Activity
是没有在AndroidManifest.xml
中注册的,占位的 Activity
起到一