xPluginAndroid 消息化插件框架
一. 介紹
Android消息化插件框架 利用消息最大化解耦, 使插件在啟動時可異步加載, 提高應(yīng)用啟動效率. 目前所有接口通過Android API [19, 30] 各版本兼容測試.
特性:
-
資源共享: 可指定Runtime Module, 其他Module可使用其提供的類型和資源. -
資源隔離: 每個插件模塊盡量使用自己內(nèi)部的類型和資源, 避免類型和資源沖突問題. -
消息通信: 模塊間通過消息通信實(shí)現(xiàn)相互調(diào)用, 最大化的解耦, 延遲加載依賴, 在模塊被調(diào)用時加載(可設(shè)置自動異步加載依賴模塊). -
接近原生: 接近原生方式使用系統(tǒng)API, 部分限制及解決方法參考如下信息.
限制:
-
Activity: 不支持外部應(yīng)用直接啟動, 如有需要建議在宿主中注冊 或 實(shí)現(xiàn)自定義Activity進(jìn)行跳轉(zhuǎn). -
Service: 不支持外部應(yīng)用直接啟動, 使用場景有限, 更新不頻繁, 如有需要建議在宿主中注冊. -
Broadcast: 使用動態(tài)注冊實(shí)現(xiàn), 需要應(yīng)用處于運(yùn)行狀態(tài), 如需實(shí)現(xiàn)靜態(tài)注冊建議在宿主中注冊. -
ContentProvider: 不支持外部應(yīng)用直接啟動, 如有需要建議在宿主中注冊. -
系統(tǒng)進(jìn)程資源問題: Notification等需要系統(tǒng)進(jìn)程加載應(yīng)用內(nèi)資源的情況, 建議由應(yīng)用包裝包接口供插件使用. -
overridePendingTransition動畫資源問題: 類似系統(tǒng)進(jìn)程資源問題, 但可以在宿主中添加同名資源, 或通過 ActivityHelper#registerOverridePendingTransitionAnimId 設(shè)置映射關(guān)系, 框架將自動處理加載過程.
二. 軟件架構(gòu)
注意: Demo工程中main模塊編譯完成后會在runtime目錄輸出其他Module依賴的資源文件, 使得其他Module可以使用Runtime Module提供的類型和資源.
三. 常用接口
-
PluginRuntime: 插件初始化入口類, 在Application初始化時使用. -
Installer: 插件安裝及加載的工具類, 從這里可以獲取已安裝和已加載的插件的信息. -
PluginMsg: 插件消息, 插件之間通信. -
PluginEntry: 消息注冊的入口. -
Plugin: 宿主(Host)和子模塊(Module)的父類, 通過 Plugin.getPlugin(插件中的類型或其實(shí)例) 可以獲取對應(yīng)插件的信息.
更多信息見: https://gitee.com/juefeng_com/xPlugin
評論
圖片
表情
