一種基于安卓系統(tǒng)的插件加載方法及其系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種基于安卓系統(tǒng)的插件加載方法,用以調用在dex文件中定義的四大組件,所述方法包括以下步驟:在主工程中自定義一個加載dex文件的類加載器;將自定義的類加載器通過反射的方式替換系統(tǒng)分配給主工程的類加載器,使得dex文件中的類和主工程本身的類處于同一類空間中,主工程通過反射技術調用dex文件中的代碼模塊,以正常使用四大組件的方式使用dex代碼文件中定義的四大組件,使dex文件中定義的四大組件具備正確的特性。本發(fā)明還提供了一種基于安卓系統(tǒng)的插件加載系統(tǒng)。
【專利說明】
一種基于安卓系統(tǒng)的插件加載方法及其系統(tǒng)
【技術領域】
[0001]本發(fā)明涉及安卓系統(tǒng)插件領域,尤其涉及一種基于安卓系統(tǒng)的插件加載方法及其系統(tǒng)。
【背景技術】
[0002]由于android對于應用的函數(shù)量進行了限制,3.0以下最大函數(shù)量不能超過48000, 3.0以上最大函數(shù)量不能超過65535,包括工程中自己編寫的代碼以及引用外部jar庫中的代碼。我們需要找到新的方式使用代碼,從而繞過android的編譯限制。android提供了 DexClassLoader,用于加載外部的dex文件,通過反射的方式使用其中的類,但是這種方式無法使用在外部dex文件中定義的四大組件。
【發(fā)明內容】
[0003]針對現(xiàn)有技術的不足,本發(fā)明的目的在于提供一種基于安卓系統(tǒng)的插件加載方法,以資源方式動態(tài)加載dex文件的代碼,并且可以正常調用在dex文件中定義的四大組件。
[0004]本發(fā)明的另外一個目的在于提供一種基于安卓系統(tǒng)的插件加載系統(tǒng)。
[0005]為實現(xiàn)上述目的,本發(fā)明米用的技術方案如下:一種基于安卓系統(tǒng)的插件加載方法,用以調用在dex文件中定義的四大組件=Activity顯示界面、Service服務、ContentProvider內容提供者、BroadcastReceiver廣播接收器,其特征在于,所述方法包括以下步驟:
[0006]在主工程中自定義一個加載dex文件的類加載器,支持以資源方式加載dex文件中的類;
[0007]將自定義的類加載器通過反射方式替換系統(tǒng)分配給主工程的類加載器,使得dex文件中的類和主工程本身的類處于同一類空間中;
[0008]主工程通過反射技術調用dex文件中的代碼模塊,以正常使用四大組件的方式使用dex代碼文件中定義的四大組件。
[0009]進一步,所述dex文件壓縮為zip格式的文件。
[0010]為實現(xiàn)本發(fā)明的另一目的,本發(fā)明還采用如下技術方案:一種基于安卓系統(tǒng)的插件加載系統(tǒng),用以調用在dex文件中定義的四大組件:Activity顯示界面、Service服務、Content Provider內容提供者、BroadcastReceiver廣播接收器,其特征在于,所述系統(tǒng)包括:
[0011]自定義模塊,用于在主工程中自定義一個加載dex文件的類加載器,支持以資源方式加載dex文件中的類;
[0012]替換模塊,將自定義的類加載器通過反射方式替換系統(tǒng)分配給主工程的類加載器,使得dex文件中的類和主工程本身的類處于同一類空間中;
[0013]調用模塊,主工程通過反射技術調用dex文件中的代碼模塊,以正常使用四大組件的方式使用dex代碼文件中定義的四大組件。
[0014]進一步,所述dex文件壓縮為zip格式的文件。
[0015]相對于現(xiàn)有技術,本發(fā)明所述的技術方案通過在主工程中自定義一個加載dex文件的類加載器,支持以資源方式加載dex文件中的類;將自定義的類加載器通過反射方式替換系統(tǒng)分配給主工程的類加載器,使得dex文件中的類和主工程本身的類處于同一類空間中;主工程通過反射技術調用dex文件中的代碼模塊,以正常使用四大組件的方式使用dex代碼文件中定義的四大組件。
[0016]為了充分地了解本發(fā)明的目的、特征和效果,以下將結合附圖對本發(fā)明的構思、具體結構及產生的技術效果作進一步說明。
【專利附圖】
【附圖說明】
[0017]圖1是本發(fā)明基于安卓系統(tǒng)的插件加載系統(tǒng)的模塊示意圖;
[0018]圖2是本發(fā)明基于安卓系統(tǒng)的插件加載方法的流程圖。
【具體實施方式】
[0019]下面將結合附圖以及具體實施方法來詳細說明本發(fā)明,在本發(fā)明的示意性實施及說明用來解釋本發(fā)明,但并不作為對本發(fā)明的限定。
[0020]如圖1所示,一種基于安卓系統(tǒng)的插件加載系統(tǒng),用以調用在dex文件中定義的四大組件:Activity顯示界面、Service服務、Content Provider內容提供者、BroadcastReceiver廣播接收器,所述Dex文件中定義的四大組件在主工程的AndroidMainfest.xml進行包名和類名顯式注冊,以便在主工程中進行調用,通過腳本將插件的jar包變成包含dex文件的文件,所述dex文件可壓縮為zip格式的文件,所述dex文件儲存于SD卡或設備內置存儲上。
[0021 ] 所述插件加載系統(tǒng)包括:
[0022]自定義模塊,用于在主工程中自定義一個加載dex文件的類加載器,支持以資源方式加載dex文件中的類;
[0023]替換模塊,將自定義的類加載器通過反射技術替換系統(tǒng)分配給主工程的類加載器,使得dex文件中的類和主工程本身的類處于同一類空間中;
[0024]調用模塊,主工程通過反射技術調用dex文件中的代碼模塊,以正常使用四大組件的方式使用dex代碼文件中定義的四大組件,所述主工程通過反射方式或構造類實例或者反射接口調用dex文件中的代碼模塊。
[0025]如圖2所示,一種基于安卓系統(tǒng)的插件加載方法,包括以下步驟:
[0026]SlOl:在主工程中自定義一個加載dex文件的類加載器,支持以資源方式加載dex文件中的類;
[0027]S102:將自定義的類加載器通過反射方式替換系統(tǒng)分配給主工程的類加載器,使得dex文件定義的類和主工程中定義的類處于同一類空間中;
[0028]S103:主工程通過反射技術調用dex文件中的代碼模塊,以正常使用四大組件的方式使用dex代碼文件中定義的四大組件。
[0029]本發(fā)明所述的技術方案通過在主工程中自定義一個加載dex文件的類加載器;將自定義的類加載器通過反射的方式替換系統(tǒng)分配給主工程的類加載器,使得dex文件中的類和主工程本身的類處于同一類空間中,主工程通過反射技術調用dex文件中的代碼模塊,以正常使用四大組件的方式使用dex代碼文件中定義的四大組件,使dex文件中定義的四大組件具備正確的特性。
[0030]本實施例所述的功能如果以軟件功能單元的形式實現(xiàn)并作為獨立的產品銷售或使用時,可以存儲在一個計算設備可讀取存儲介質中。基于這樣的理解,本發(fā)明實施例對現(xiàn)有技術做出貢獻的部分或者該技術方案的部分可以以軟件產品的形式體現(xiàn)出來,該軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算設備(可以是個人計算機,服務器,移動計算設備或者網(wǎng)絡設備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:u盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM, Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質。本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其它實施例的不同之處,各個實施例之間相同或相似部分互相參見即可。
[0031]對所公開的實施例的上述說明,使本領域專業(yè)技術人員能夠實現(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領域的專業(yè)技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。
【權利要求】
1.一種基于安卓系統(tǒng)的插件加載方法,用以調用在dex文件中定義的四大組件:Activity 顯不界面、Service 服務、Content Provider 內容提供者、BroadcastReceiver 廣播接收器,其特征在于,所述方法包括以下步驟: 在主工程中自定義一個加載dex文件的類加載器,支持以資源方式加載dex文件中的類; 將自定義的類加載器通過反射方式替換系統(tǒng)分配給主工程的類加載器,使得dex文件中的類和主工程本身的類處于同一類空間中; 主工程通過反射技術調用dex文件中的代碼模塊,以正常使用四大組件的方式使用dex代碼文件中定義的四大組件。
2.如權利要求1所述的插件加載方法,其特征在于,所述dex文件壓縮為zip格式的文件。
3.一種基于安卓系統(tǒng)的插件加載系統(tǒng),用以調用在dex文件中定義的四大組件:Activity 顯不界面、Service 服務、Content Provider 內容提供者、BroadcastReceiver 廣播接收器,其特征在于,所述系統(tǒng)包括: 自定義模塊,用于在主工程中自定義一個加載dex文件的類加載器,支持以資源方式加載dex文件中的類; 替換模塊,將自定義的類加載器通過反射方式替換系統(tǒng)分配給主工程的類加載器,使得dex文件中的類和主工程本身的類處于同一類空間中; 調用模塊,主工程通過反射技術調用dex文件中的代碼模塊,以正常使用四大組件的方式使用dex代碼文件中定義的四大組件。
4.如權利要求3所述的插件加載系統(tǒng),其特征在于,所述dex文件壓縮為zip格式的文件。
【文檔編號】G06F9/44GK104239054SQ201410467050
【公開日】2014年12月24日 申請日期:2014年9月12日 優(yōu)先權日:2014年9月12日
【發(fā)明者】鄧裕強, 梁國盛, 陳家煜, 潘國維, 巢子良 申請人:廣州市久邦數(shù)碼科技有限公司