基於APK動態加載的Android插件化實現方法、裝置及交互方法
2023-10-29 12:57:12 3
基於APK動態加載的Android插件化實現方法、裝置及交互方法
【專利摘要】一種基於APK動態加載的Android插件化實現方法、裝置及交互方法,涉及移動網際網路【技術領域】,該裝置包括主程序模塊、代理器、至少一個插件;主程序模塊為APK文件,用於創建沙箱環境,在沙箱環境中啟動代理器,對插件的合法性進行校驗;插件為APK文件,用於執行具體的業務功能,分別運行於獨立的沙箱環境中;代理器用於生成Android系統中的主題管理器及資源管理器,執行插件的所有操作。本發明降低了對系統資源的消耗,為應用的運行提供穩定高效的環境,給用戶始終在使用同一個應用的體驗。
【專利說明】基於APK動態加載的Andro i d插件化實現方法、裝置及交互 方法
【技術領域】
[0001] 本發明涉及移動網際網路【技術領域】,具體來講是一種基於APK(AndroidPackage, Android安裝包)動態加載的Android插件化實現方法、裝置及交互方法。
【背景技術】
[0002] 隨著移動網際網路的快速發展,越來越多的行業將業務系統引入到移動網際網路終 端,受限於移動終端設備的電池電量、內存、CPU等資源短缺的因素,越發龐大的業務量使得 應用程式無法正常在移動終端上運行。因此,插件化方案的引入是很有必要的。通過插件 化方案將應用主框架和業務分離,在需要使用的時候加載業務插件即可。
[0003] 現有插件化方案是將插件應用做成屏蔽了應用啟動入口的獨立安裝包並安裝到 終端設備上,在主程序中通過Intent (意圖)調起插件程序。這種方案需要對每一個插件 進行安裝操作,且安裝操作均需用戶幹預方可完成,給用戶的感覺是在使用多個應用而不 是同一個應用,影響用戶體驗;且隨著啟動插件數量的增加,系統需要運行管理的應用數量 越來越多,大量佔用系統資源,影響系統正常運行。
【發明內容】
[0004] 針對現有技術中存在的缺陷,本發明的目的在於提供一種基於APK動態加載的 Android插件化實現方法、裝置及交互方法,本發明降低了對系統資源的消耗,為應用的運 行提供穩定高效的環境,給用戶始終在使用同一個應用的體驗。
[0005] 為達到以上目的,本發明採取的技術方案是:一種基於APK動態加載的Android插 件化實現裝置,包括主程序模塊、代理器、至少一個插件;主程序模塊為APK文件,用於創建 沙箱環境,在沙箱環境中啟動代理器,對插件的合法性進行校驗;插件為APK文件,用於執 行具體的業務功能,分別運行於獨立的沙箱環境中;代理器用於生成Android系統中的主 題管理器及資源管理器,執行插件的所有操作。
[0006] 在上述技術方案的基礎上,所述插件獨立安裝運行或者通過主程序模塊動態加載 運行。
[0007] 在上述技術方案的基礎上,所述插件使用統一的籤名規則進行籤名。
[0008] 基於上述裝置的基於APK動態加載的Andro id插件化實現方法,包括以下步驟:主 程序模塊在用戶的存儲設備上加載插件,並對插件的合法性進行校驗;主程序模塊創建沙 箱環境,並在沙箱環境中啟動代理器,為插件的運行提供獨立的沙箱環境;主程序模塊控制 代理器通過反射生成Android系統中的主題管理器及資源管理器;代理器通過反射調用插 件中的程序及其方法,啟動插件。
[0009] 在上述技術方案的基礎上,所述創建沙箱環境前,主程序模塊解析插件。
[0010] 在上述技術方案的基礎上,所述插件作為主程序模塊的一個文件隨主程序模塊一 起打包發布;且主程序模塊首次啟動時,在用戶的存儲設備上創建插件目錄,讀取主程序模 塊內部附帶的插件,並把插件添加至插件目錄。
[0011] 基於上述裝置的基於APK動態加載的Android插件化交互方法,包括主程序模塊 與外置伺服器的交互,其具體步驟為:主程序模塊啟動後從伺服器獲取當前應用列表數據; 伺服器提取應用列表數據並進行數據封裝;伺服器將封裝好的應用列表數據返回給主程序 模塊;主程序模塊向伺服器獲取插件並保存到用戶的存儲設備上;主程序模塊將已保存的 插件添加至插件目錄。
[0012] 在上述技術方案的基礎上,所述應用列表數據通過管理員在管理後臺配置。
[0013] 在上述技術方案的基礎上,所述伺服器用於提供應用列表數據管理及為主程序模 塊提供應用列表接口。
[0014] 本發明的有益效果在於:
[0015] 1、本發明的插件程序是在沙箱環境中運行的,插件隨沙箱的銷毀而退出,不會在 系統中增加運行應用數量,因此降低了對系統資源的消耗,為應用的運行提供穩定高效的 環境。
[0016] 2、本發明通過代理器啟動插件,插件程序無需安裝即可加載,避免了安裝過程,給 用戶始終在使用同一個應用的體驗。
[0017] 3、本發明中的主程序模塊與插件程序相分離,因此插件程序的更新不會對主程序 模塊產生影響,避免了一個業務更新需要更新整個應用的情況。
[0018] 4、本發明的插件使用統一的籤名機制,未使用統一籤名的插件應用無法通過主程 序模塊的合法性校驗,因此避免了非法插件的運行,具有較高的安全性。
【專利附圖】
【附圖說明】
[0019] 圖1為本發明實施例中基於APK動態加載的Android插件化實現方法的流程圖;
[0020] 圖2為本發明實施例中主程序模塊與伺服器交互的流程圖。
【具體實施方式】
[0021] 以下結合附圖及實施例對本發明作進一步詳細說明。
[0022] 一種基於APK動態加載的Android插件化實現裝置,包括主程序模塊、代理器、至 少一個插件;主程序模塊為APK文件,用於創建沙箱環境,在沙箱環境中啟動代理器,對插 件的合法性進行校驗;插件為APK文件,用於執行具體的業務功能,分別運行於獨立的沙箱 環境中;獨立安裝運行或者通過主程序模塊動態加載運行;所述插件使用統一的籤名規則 進行籤名。代理器用於為插件提供運行環境,生成Android系統中的主題管理器及資源管 理器,執行插件的所有操作。
[0023] 參見圖1所示,基於上述裝置的基於APK動態加載的Android插件化實現方法,包 括以下步驟:
[0024] 步驟S101.主程序模塊在用戶的存儲設備上創建插件目錄,主程序模塊讀取其應 用內部附帶的插件,並將該插件添加至插件目錄,從插件目錄中加載插件並對插件的合法 性進行校驗,其作用在於對未經安裝的插件執行初始化加載並校驗其合法性,確保通過主 程序模塊調起的插件均是合法應用,避免非法插件損害用戶權益。所述插件作為主程序模 塊的一個文件隨主程序模塊一起打包發布;且主程序模塊首次啟動時,在用戶的存儲設備 上創建插件目錄並把插件添加至插件目錄中,其作用在於移動插件至固定的插件目錄,便 於插件的加載管理。
[0025] 步驟S102.主程序模塊解析插件,其作用在於通過解析插件的配置文件,建立插 件的維護體系,確保插件能夠正常執行。
[0026] 步驟S103.創建沙箱環境,並在沙箱環境中啟動代理器,為插件的運行提供獨立 的沙箱環境,其作用在於建立一個插件運行的沙箱環境,為插件的運行提供獨立的運行沙 箱環境,避免影響主程序模塊及其他插件。
[0027] 步驟S104.主程序模塊控制代理器通過反射生成Android系統中的主題管理器及 資源管理器,其作用在於模擬系統啟動APK的方式通過反射調用系統方法建立插件應用的 主題管理器及資源管理器,為插件的主題及資源加載提供保障。
[0028] 步驟S105.代理器通過反射調用插件中的程序及其方法,啟動插件,其作用在於 通過反射機制啟動未安裝的插件,避免用戶對每個插件的安裝過程。同時,代理器在啟動插 件的同時會通過主題和資源管理器加載插件的資源,確保插件可以正常運行。
[0029] 參見圖2所示,基於APK動態加載的Android插件化交互方法,包括主程序模塊與 外置伺服器的交互,用於管理插件的網絡加載,方便進行版本升級控制,所述伺服器用於提 供應用列表數據管理及為主程序模塊提供應用列表接口。其具體步驟為:
[0030] 步驟S201.主程序模塊啟動後從伺服器獲取當前應用列表數據,所述應用列表數 據通過管理員在管理後臺配置。
[0031] 步驟S202.伺服器提取應用列表數據並進行數據封裝。
[0032] 步驟S203.伺服器將封裝好的應用列表數據返回給主程序模塊。
[0033] 步驟S204.主程序模塊發出插件下載請求,向伺服器獲取插件。
[0034] 步驟S205.伺服器返回插件給主程序模塊,主程序模塊接收插件保存到用戶的存 儲設備上。
[0035] 步驟S206.主程序模塊將已保存的插件添加至插件目錄。
[0036] 本發明不局限於上述實施方式,對於本【技術領域】的普通技術人員來說,在不脫離 本發明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也視為本發明的保護 範圍之內。本說明書中未作詳細描述的內容屬於本領域專業技術人員公知的現有技術。
【權利要求】
1. 一種基於APK動態加載的Android插件化實現裝置,其特徵在於:包括主程序模塊、 代理器、至少一個插件; 主程序模塊為APK文件,用於創建沙箱環境,在沙箱環境中啟動代理器,對插件的合法 性進行校驗; 插件為APK文件,用於執行具體的業務功能,分別運行於獨立的沙箱環境中; 代理器用於生成Android系統中的主題管理器及資源管理器,執行插件的所有操作。
2. 如權利要求1所述的基於APK動態加載的Android插件化實現裝置,其特徵在於: 所述插件獨立安裝運行或者通過主程序模塊動態加載運行。
3. 如權利要求1所述的基於APK動態加載的Android插件化實現裝置,其特徵在於: 所述插件使用統一的籤名規則進行籤名。
4. 基於權利要求1所述裝置的基於APK動態加載的Android插件化實現方法,其特徵 在於,包括以下步驟: 主程序模塊在用戶的存儲設備上加載插件,並對插件的合法性進行校驗; 主程序模塊創建沙箱環境,並在沙箱環境中啟動代理器,為插件的運行提供獨立的沙 箱環境; 主程序模塊控制代理器通過反射生成Android系統中的主題管理器及資源管理器; 代理器通過反射調用插件中的程序及其方法,啟動插件。
5. 如權利要求4所述的基於APK動態加載的Android插件化實現方法,其特徵在於,所 述創建沙箱環境前,主程序模塊解析插件。
6. 如權利要求4所述的基於APK動態加載的Android插件化實現方法,其特徵在於, 所述插件作為主程序模塊的一個文件隨主程序模塊一起打包發布;且主程序模塊首次啟動 時,在用戶的存儲設備上創建插件目錄,讀取主程序模塊內部附帶的插件,並把插件添加至 插件目錄。
7. 基於權利要求1所述裝置的基於APK動態加載的Android插件化交互方法,其特徵 在於,包括主程序模塊與外置伺服器的交互,其具體步驟為:主程序模塊啟動後從伺服器獲 取當前應用列表數據;伺服器提取應用列表數據並進行數據封裝;伺服器將封裝好的應用 列表數據返回給主程序模塊;主程序模塊向伺服器獲取插件並保存到用戶的存儲設備上; 主程序模塊將已保存的插件添加至插件目錄。
8. 如權利要求7所述的基於APK動態加載的Android插件化實現方法,其特徵在於: 所述應用列表數據通過管理員在管理後臺配置。
9. 如權利要求7所述的基於APK動態加載的Android插件化實現方法,其特徵在於: 所述伺服器用於提供應用列表數據管理及為主程序模塊提供應用列表接口。
【文檔編號】G06F21/53GK104216741SQ201410420786
【公開日】2014年12月17日 申請日期:2014年8月25日 優先權日:2014年8月25日
【發明者】王中玉, 金鑫 申請人:華中科技大學