加載插件中的類
1、創(chuàng)建插件的DexClassLoader類加載器,通過反射獲取插件的dexElements
2、獲取宿主pathClassLoader類加載器,然后通過反射獲取宿主的dexElements的值
3、合并宿主dexElements與插件的dexElements,生成新的Element[]
4、通過反射給新的element[]復(fù)制給宿主的dexElements
加載插件中的資源
1、創(chuàng)建AssetManager對象,調(diào)用addAssetPath方法,將插件apk的路徑作為參數(shù)傳入
2、將第一步創(chuàng)建的AssetManager對象作為參數(shù),創(chuàng)建一個新的Resources對象,并返回給插件使用
3、重寫getResoures方法
跳轉(zhuǎn)插件中的Activity
1、宿主中創(chuàng)建ProxyActivity extends Activity,在清單文件中注冊
2、Activity啟動時,檢測之前替換測ProxyActivity,檢測完畢之后換回插件Activity

插件化.png