一種插件的資源調(diào)用方法和裝置的制造方法
【專利說明】
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機應(yīng)用技術(shù)領(lǐng)域,特別涉及一種插件的資源調(diào)用方法和裝置?!尽颈尘凹夹g(shù)】】
[0002]隨著移動終端APP(應(yīng)用軟件)的用戶數(shù)量增長和體驗需求的提升,產(chǎn)品上需要不斷增加新的功能或進行功能的修復(fù),因此在開發(fā)上面臨代碼量變大的問題和動態(tài)發(fā)布功能的需求,于是出現(xiàn)了插件化,即將產(chǎn)品的功能打包成插件發(fā)布,由作為應(yīng)用主體的容器加載。然而,插件在執(zhí)行的過程中涉及到資源調(diào)用的問題,如何能夠方便的進行資源調(diào)用是目前要解決的問題。
[0003]由于插件執(zhí)行過程中除了調(diào)用插件資源之外,還可能會調(diào)用容器資源,如果將插件所依賴的容器資源復(fù)制一份到插件中,則會造成插件包體積變大,且確定依賴資源帶來開發(fā)成本較高。如果預(yù)先在容器上暴露資源的接口供插件調(diào)用,則開發(fā)人員需要知道插件所調(diào)用的資源哪些是插件的,哪些是容器的,開發(fā)維護成本較高。
【
【發(fā)明內(nèi)容】
】
[0004]有鑒于此,本發(fā)明提供了一種插件的資源調(diào)用方法和裝置,以便于方便地實現(xiàn)資源調(diào)用,降低開發(fā)成本。
[0005]具體技術(shù)方案如下:
[0006]本發(fā)明提供了一種插件的資源調(diào)用方法,該方法包括:
[0007]加載插件時,將插件資源的路徑信息注入包含容器資源的路徑信息的資源模塊;
[0008]遍歷插件所引用的資源,依據(jù)資源前綴信息從所述資源模塊所指向的資源對象集合中調(diào)用所述插件所引用的資源。
[0009]根據(jù)本發(fā)明一優(yōu)選實施方式,所述將插件資源的路徑信息注入包含容器資源的路徑信息的資源模塊包括:
[0010]通過反射調(diào)用機制,將所述插件資源的路徑信息添加至容器的資源模塊,該資源模塊包含容器資源的路徑信息;或者,
[0011]創(chuàng)建插件的資源模塊,通過反射調(diào)用機制,將所述插件資源的路徑信息和容器資源的路徑信息添加至所述插件的資源模塊。
[0012]根據(jù)本發(fā)明一優(yōu)選實施方式,在所述將插件資源的路徑信息注入包含容器資源的路徑信息的資源模塊之前,還包括:
[0013]判斷所述資源模塊中是否已經(jīng)存在所述插件資源的路徑信息,如果否,則繼續(xù)執(zhí)行所述將插件資源的路徑信息注入包含容器資源的路徑信息的資源模塊。
[0014]根據(jù)本發(fā)明一優(yōu)選實施方式,在所述將插件資源的路徑信息注入包含容器資源的路徑信息的資源模塊之前,還包括:
[0015]判斷所述插件是否包含插件資源,如果是,則繼續(xù)執(zhí)行所述將插件資源的路徑信息注入包含容器資源的路徑信息的資源模塊。
[0016]根據(jù)本發(fā)明一優(yōu)選實施方式,該方法還包括:
[0017]對所述插件進行編譯打包時,讀取應(yīng)用配置文件中的資源前綴信息,不同插件對應(yīng)不同的資源前綴信息,且插件與容器對應(yīng)不同的資源前綴信息。
[0018]根據(jù)本發(fā)明一優(yōu)選實施方式,該方法還包括:
[0019]在對所述插件進行編譯打包時,根據(jù)插件源碼中的依賴包包名,查找所述插件所引用的容器資源。
[0020]根據(jù)本發(fā)明一優(yōu)選實施方式,該方法還包括:
[0021]對所述插件進行編譯打包,生成插件的資源索引文件;
[0022]將所述插件的資源索引文件與容器的資源索引文件進行合并。
[0023]本發(fā)明還提供了一種插件的資源調(diào)用裝置,該裝置包括:
[0024]資源注入單元,用于加載插件時,將插件資源的路徑信息注入包含容器資源的路徑信息的資源模塊;
[0025]資源調(diào)用單元,用于遍歷插件所引用的資源,依據(jù)資源前綴信息從所述資源模塊所指向的資源對象集合中調(diào)用所述插件所引用的資源。
[0026]根據(jù)本發(fā)明一優(yōu)選實施方式,所述資源注入單元在將插件資源的路徑信息注入包含容器資源的路徑信息的資源模塊時,具體執(zhí)行:
[0027]通過反射調(diào)用機制,將所述插件資源的路徑信息添加至容器的資源模塊,該資源模塊包含容器資源的路徑信息;或者,
[0028]創(chuàng)建插件的資源模塊,通過反射調(diào)用機制,將所述插件資源的路徑信息和容器資源的路徑信息添加至所述插件的資源模塊。
[0029]根據(jù)本發(fā)明一優(yōu)選實施方式,該裝置還包括:
[0030]第一判斷單元,用于在加載所述插件時,判斷所述資源模塊中是否已經(jīng)存在所述插件資源的路徑信息,如果否,則觸發(fā)所述資源注入單元執(zhí)行所述將插件資源的路徑信息注入包含容器資源的路徑信息的資源模塊的操作。
[0031]根據(jù)本發(fā)明一優(yōu)選實施方式,該裝置還包括:
[0032]第二判斷單元,用于在加載所述插件時,判斷所述插件是否包含插件資源,如果是,則觸發(fā)所述資源注入單元執(zhí)行所述將插件資源的路徑信息注入包含容器資源的路徑信息的資源模塊的操作。
[0033]根據(jù)本發(fā)明一優(yōu)選實施方式,該裝置還包括:
[0034]前綴讀取單元,用于在對所述插件進行編譯打包時,讀取應(yīng)用配置文件中的資源前綴信息,不同插件對應(yīng)不同的資源前綴信息,且插件與容器對應(yīng)不同的資源前綴信息。
[0035]根據(jù)本發(fā)明一優(yōu)選實施方式,該裝置還包括:
[0036]資源查找單元,用于在對所述插件進行編譯打包時,根據(jù)插件源碼中的依賴包包名,查找所述插件所引用的容器資源。
[0037]根據(jù)本發(fā)明一優(yōu)選實施方式,該裝置還包括:
[0038]文件合并單元,用于在對所述插件進行編譯打包生成插件的資源索引文件后,將所述插件的資源索引文件與容器的資源索引文件進行合并。
[0039]由以上技術(shù)方案可以看出,在本發(fā)明中將插件資源注入包含容器資源的路徑信息的資源模塊,使得資源模塊統(tǒng)一維護插件資源和容器資源的路徑信息,使得插件加載過程中,能夠依據(jù)資源前綴信息從資源模塊所指向的資源對象集合中實現(xiàn)對插件資源和容器資源的無差別調(diào)用。無需在插件包中包含容器資源,也無需開發(fā)人員預(yù)先知道插件所引用的資源是插件的還是容器的,實現(xiàn)更方便也降低了開發(fā)成本。
【【附圖說明】】
[0040]圖1為本發(fā)明實施例提供的主要方法流程圖;
[0041]圖2為本本發(fā)明實施例提供的裝置結(jié)構(gòu)圖。
【【具體實施方式】】
[0042]為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖和具體實施例對本發(fā)明進行詳細(xì)描述。
[0043]本發(fā)明實施例中涉及的容器實際上是應(yīng)用程序的主體,負(fù)責(zé)容納應(yīng)用程序所提供服務(wù)的各種功能,容器對外提供插件接口,能夠通過加載插件的形式對應(yīng)用程序進行功能的補充和修復(fù)。
[0044]圖1為本發(fā)明實施例提供的主要方法流程圖,如圖1所示,該方法可以包括以下步驟:
[0045]在101中,加載插件時,將插件資源的路徑信息注入包含容器資源的路徑信息的資源模塊。
[0046]資源模塊主要用于維護資源路徑信息,每個插件在加載時,將自身的插件資源的路徑信息注入資源模塊,該資源模塊中同時包含容器資源的路徑信息。也就是說,將插件資源的路徑信息和容器資源的路徑信息進行融合,在同一個資源模塊中維護。
[0047]注入的過程實際上是通過反射調(diào)用機制添加資源對象接口的過程。首先針對插件創(chuàng)建資源模塊,在本發(fā)明實施例中可以針對所有插件創(chuàng)建統(tǒng)一的資源模塊,然后各插件將自身的插件資源的路徑信息添加至該資源模塊,并將容器資源的路徑信息也添加至該資源模塊。這樣,資源模塊中就包含容器資源的路徑信息和同一應(yīng)用的所有插件資源的路徑信息。
[0048]由于對于有些操作系統(tǒng)的底層資源支持資源的動態(tài)添加,諸如Android5.0之后的操作系統(tǒng),但是添加系統(tǒng)對象接口仍然是隱藏的,因此可以采用反射調(diào)用機制直接在容器的資源模塊中添加插件資源的路徑信息,無需額外創(chuàng)建插件的資源模塊。
[0049]在將插件資源的路徑信息注入資源模塊之前,可以首先判斷資源模塊中是否已經(jīng)存在該插件資源的路徑信息,如果否,則將插件資源的路徑信息注入包含容器資源的路徑信息的資源模塊;如果是,則不需要重復(fù)注入。
[0050