《Android 插件化框架VirtualAPK :(二)原理分析》

一、探究原理
1. 基本原理

* 合併宿主和插件的ClassLoader:需要注意的是,插件中的類不可以和宿主重複;
* 合併插件和宿主的資源:重設插件資源的packageId,將插件資源和宿主資源合併;
* 去除插件包對宿主的引用:構建時通過 Gradle 插件去除插件對宿主的代碼以及資源的引用。
  1. 四大組件的實現原理

    • Activity:採用宿主 manifest 中佔坑的方式來繞過系統校驗,然後再加載真正的 Activity;
    • Service:動態代理 AMS,攔截 Service 相關的請求,將其中轉給一個虛擬空間(Matrix)去處理,Matrix 會接管系統的所有操作;
    • Receiver:將插件中靜態註冊的 Receiver 重新註冊一遍;
    • ContentProvider:動態代理 IContentProvider,攔截 Provider 相關的請求,將其中轉給一個虛擬空間(Matrix)去處理,Matrix 會接管系統的所有操作。

二、代碼
1、初始化過程:

1.1、創建 PluginManager.java對象

PluginManager pluginManager = PluginManager.getInstance(base);

private Map

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章