[發明專利]一種宿主中插件加載方法及裝置在審
| 申請號: | 202010877570.4 | 申請日: | 2020-08-27 |
| 公開(公告)號: | CN112083968A | 公開(公告)日: | 2020-12-15 |
| 發明(設計)人: | 章勤杰;于達平;王杰 | 申請(專利權)人: | 騰訊科技(深圳)有限公司 |
| 主分類號: | G06F9/445 | 分類號: | G06F9/445;G06F16/14 |
| 代理公司: | 北京同達信恒知識產權代理有限公司 11291 | 代理人: | 李娟 |
| 地址: | 518044 廣東省深圳*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 宿主 插件 加載 方法 裝置 | ||
1.一種宿主中插件加載方法,其特征在于,包括:
在運行應用程序時,啟動所述應用程序的宿主可執行文件,其中,所述應用程序包括宿主可執行文件和插件可執行文件,所述宿主可執行文件中至少打包有宿主類加載器、插件類加載器以及插件的組件聲明代碼,所述宿主類加載器的結構中集成有用于加載宿主的類的第一類加載器和用于加載插件的類的第二類加載器;
若當前執行的功能所對應的資源位于插件可執行文件中,則在觸發所述應用程序所對應的操作系統的組件啟動程序時,基于所述第二類加載器和插件的組件聲明代碼,確定查找到所述當前執行的功能對應的組件聲明,并創建組件對象;
修改所述插件可執行文件中所述組件對象對應的組件,以使所述插件可執行文件中對應組件的資源賦值給所述組件對象;
運行所述組件對象,以執行所述插件可執行文件中對應組件的資源所實現的功能。
2.如權利要求1所述的方法,其特征在于,進一步包括:
針對當前觸發執行的類,基于所述宿主類加載器,通過所述第一類加載器從所述宿主可執行文件中進行查找所述類,若未查找到,則通過所述第二類加載器從所述插件可執行文件中查找,確定查找到后,加載所述插件可執行文件中的類,并執行所述類對應的功能。
3.如權利要求2所述的方法,其特征在于,所述插件類加載器的結構中集成有用于加載宿主的類的第一類加載器和用于加載插件的類的第二類加載器,則進一步包括:
加載所述插件可執行文件中的類,或執行插件可執行文件中對應組件的資源所實現的功能時,若觸發執行所述宿主可執行文件中的類,則通過所述插件類加載器從所述宿主可執行文件中查找,并確定查找到后,加載所述宿主可執行文件中的類。
4.如權利要求1所述的方法,其特征在于,修改所述插件可執行文件中所述組件對象對應的組件,以使所述插件可執行文件中對應組件的資源賦值給所述組件對象,具體包括:
通過反射機制,基于所述宿主類加載器中的所述第二類加載器,從所述插件可執行文件中加載所述組件對象對應的組件,并將所述插件可執行文件中對應組件的資源賦值給所述組件對象。
5.如權利要求1所述的方法,其特征在于,進一步包括:
在編譯時,獲取所述插件的程序源碼、所述插件的組件聲明代碼和所述宿主的代碼工程;
編譯所述插件的程序源碼,獲得所述插件的插件可執行文件;
并且在編譯時,基于宿主和所述插件的程序源碼的依賴關系,在所述宿主的代碼工程中編譯生成需調用所述插件的程序源碼中類的聲明代碼,并將基于所述插件的程序源碼編譯后的所述宿主的代碼工程,以及所述插件的組件聲明代碼和所述宿主類加載器、所述插件類加載器進行打包,獲得所述宿主的宿主可執行文件。
6.如權利要求1-5任一項所述的方法,其特征在于,進一步包括:
采用雙親委派模型,分別構建所述宿主類加載器和所述插件類加載器;
其中,所述宿主類加載器的結構為:所述操作系統的操作系統類加載器為第一組類加載器的父類加載器,所述第一組類加載器為所述第一類加載器的父類加載器,所述第一組類加載器中包含有復制后的所述第一類加載器和所述第二類加載器;
所述插件類加載器的結構為:所述操作系統的操作系統類加載器為第二組類加載器的父類加載器,所述第二組類加載器中包含有復制后的所述第一類加載器和所述第二類加載器。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于騰訊科技(深圳)有限公司,未經騰訊科技(深圳)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010877570.4/1.html,轉載請聲明來源鉆瓜專利網。





