一種動態(tài)加載廣告sdk的實現(xiàn)方法及其實現(xiàn)系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種動態(tài)加載廣告SDK的實現(xiàn)方法,所述方法包括:與服務(wù)器連接下載廣告SDK的class.dex類文件和資源文件;通過主程序中廣告SDK的代理接口,利用DexClassLoader類加載廣告SDK的class.dex類文件,并且使用反射的方式調(diào)用Android系統(tǒng)AssertManager資源管理器中addAssetPath方法,將下載好的資源文件加載到主程序的資源文件內(nèi);通過主程序中廣告SDK的代理,對廣告SDK中的類、接口以及方法進行管理;本發(fā)明實現(xiàn)不論需要使用多少個廣告SDK,都不會使初始包體增大的目的。本發(fā)明還提供了一種實現(xiàn)動態(tài)加載廣告SDK的系統(tǒng)。
【專利說明】
一種動態(tài)加載廣告SDK的實現(xiàn)方法及其實現(xiàn)系統(tǒng)
技術(shù)領(lǐng)域
[0001 ]本發(fā)明涉及移動終端廣告SDK加載技術(shù)領(lǐng)域,尤其涉及一種動態(tài)加載廣告SDK的實現(xiàn)方法及其實現(xiàn)系統(tǒng)。
【背景技術(shù)】
[0002]一般情況下,如果APP需要接入第三方的廣告SDK,需要將其作為工程的資源導入,然后進行編碼,再調(diào)用外部SDK的接口,以實現(xiàn)外部廣告的植入。這樣的實現(xiàn)方式,會給APP的包體大小帶來沖擊,并且隨著接入的廣告SDK的數(shù)量越多,APP的包體就會越大,不利于APP的推廣和留存率。
【發(fā)明內(nèi)容】
[0003]針對現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于提供一種能動態(tài)將廣告SDK及其資源加載到APP中,不論需要使用多少個廣告SDK,都不會使初始包體增大的動態(tài)加載廣告SDK的實現(xiàn)方法。
[0004]為實現(xiàn)本發(fā)明的另一目的,本發(fā)明還提供一種實現(xiàn)動態(tài)加載廣告SDK的系統(tǒng)。
[0005]為實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案如下:一種動態(tài)加載廣告SDK的實現(xiàn)方法,所述方法包括以下步驟:
[0006]S1、與服務(wù)器連接下載廣告SDK的class, dex類文件和資源文件;
[0007]S2、通過主程序中廣告SDK的代理接口,利用DexClassLoader類加載器加載廣告SDK的class.dex類文件,并且使用反射的方式調(diào)用Android系統(tǒng)AssertManager資源管理器中addAssetPath方法,將下載好的資源文件加載到主程序的資源文件內(nèi);
[0008]S3、通過主程序中廣告SDK的代理,對廣告SDK中的類、接口以及方法進行管理,當需要調(diào)用廣告SDK的功能時,通過如下步驟實現(xiàn):
[0009]代理通過系統(tǒng)的反射機制,獲取廣告SDK功能中對應(yīng)的類,并進行實例化獲取對應(yīng)的對象;
[0010]通過所獲取的對象,使用反射調(diào)用其所包含的方法;
[0011]通過所獲取的方法調(diào)用相對應(yīng)的資源并加載到主程序資源中,以實現(xiàn)廣告功能的調(diào)用。
[0012]進一步,所述方法還包括以下步驟:
[0013]使用Java的接口Proxy機制,對廣告SDK的接口進行代理,當接口被回調(diào)或者觸發(fā)時,Proxy機制會通知主程序,并攜帶對應(yīng)的回調(diào)事件參數(shù),主程序通過這些參數(shù),分發(fā)到對應(yīng)的處理方法中,以實現(xiàn)廣告SDK中接口的功能。
[0014]進一步,所述方法還包括以下步驟:
[0015]服務(wù)器的廣告SDK為多個時,各廣告SDK擁有不同的class.dex類文件,將多個廣告SDK的資源統(tǒng)一放置于一個APK文件中,與服務(wù)器連接下載多個廣告SDK的class.dex類文件和一個資源文件。
[0016]為實現(xiàn)本發(fā)明的另一目的,本發(fā)明還采用如下技術(shù)方案:一種實現(xiàn)動態(tài)加載廣告SDK的系統(tǒng),所述系統(tǒng)包括:
[0017]下載模塊,與服務(wù)器連接下載廣告SDK的class.dex類文件和資源文件;
[0018]加載模塊,通過主程序中廣告SDK的代理接口,利用DexClassLoader類加載器加載廣告SDK的class, dex類文件,并且使用反射的方式調(diào)用Android系統(tǒng)AssertManager資源管理器中addAssetPath方法,將下載好的資源文件加載到主程序的資源文件內(nèi);
[0019]調(diào)用功能模塊,通過主程序中廣告SDK的代理,對廣告SDK中的類、接口以及方法進行管理,當需要調(diào)用廣告SDK的功能時,通過如下步驟實現(xiàn):代理通過系統(tǒng)的反射機制,獲取廣告SDK功能中對應(yīng)的類,并進行實例化獲取對應(yīng)的對象;通過所獲取的對象,使用反射調(diào)用其所包含的方法;通過所獲取的方法調(diào)用相對應(yīng)的資源并加載到主程序資源中,以實現(xiàn)廣告功能的調(diào)用。
[°02°]進一步,所述調(diào)用功能模塊使用Ja va的接口 Pr ο xy機制,對廣告SDK的接口進行代理,當接口被回調(diào)或者觸發(fā)時,Proxy機制會通知主程序,并攜帶對應(yīng)的回調(diào)事件參數(shù),主程序通過這些參數(shù),分發(fā)到對應(yīng)的處理方法中,以實現(xiàn)廣告SDK中接口的功能。
[0021 ]進一步,所述服務(wù)器的廣告SDK為多個時,各廣告SDK擁有不同的class.dex類文件,將多個廣告SDK的資源統(tǒng)一放置于一個APK文件中,與服務(wù)器連接下載多個廣告SDK的class.dex類文件和一個資源文件。
[0022]相對于現(xiàn)有技術(shù),本發(fā)明所述的技術(shù)方案通過與服務(wù)器連接下載廣告SDK的class.dex類文件和資源文件;通過主程序中廣告SDK的代理接口,利用DexClassLoader類加載器加載廣告SDK的class, dex類文件,并且使用反射的方式調(diào)用Android系統(tǒng)AssertManager資源管理器中addAssetPath方法,將下載好的資源文件加載到主程序的資源文件內(nèi);通過主程序中廣告SDK的代理,對廣告SDK中的類、接口以及方法進行管理,當需要調(diào)用廣告SDK的功能時,通過代理通過系統(tǒng)的反射機制,獲取廣告SDK功能中對應(yīng)的類,并進行實例化獲取對應(yīng)的對象;通過所獲取的對象,使用反射調(diào)用其所包含的方法;通過所獲取的方法調(diào)用相對應(yīng)的資源并加載到主程序資源中,以實現(xiàn)廣告功能的調(diào)用,本發(fā)明利用JAVA的反射機制和Android系統(tǒng)對APP的資源管理原理,實現(xiàn)在APP安裝后,通過網(wǎng)絡(luò)下發(fā),動態(tài)的將廣告SDK及其資源加載到APP中,實現(xiàn)不論需要使用多少個廣告SDK,都不會使初始包體增大的目的。
[0023]為了充分地了解本發(fā)明的目的、特征和效果,以下將結(jié)合附圖對本發(fā)明的構(gòu)思、具體結(jié)構(gòu)及產(chǎn)生的技術(shù)效果作進一步說明。
【附圖說明】
[0024]圖1是本發(fā)明實現(xiàn)動態(tài)加載廣告SDK的系統(tǒng)的模塊示意圖;
[0025]圖2是本發(fā)明動態(tài)加載廣告SDK的實現(xiàn)方法的流程圖。
【具體實施方式】
[0026]下面將結(jié)合附圖以及具體實施方法來詳細說明本發(fā)明,在本發(fā)明的示意性實施及說明用來解釋本發(fā)明,但并不作為對本發(fā)明的限定。
[0027]具體實施例
[0028]如圖1所示,一種實現(xiàn)動態(tài)加載廣告SDK的系統(tǒng),所述系統(tǒng)包括:
[0029]下載模塊,與服務(wù)器連接下載廣告SDK的class,dex類文件和資源文件;所述服務(wù)器的廣告SDK為多個時,各廣告SDK擁有不同的class.dex類文件,將多個廣告SDK的資源統(tǒng)一放置于一個APK文件中,與服務(wù)器連接下載多個廣告SDK的class.dex類文件和一個資源文件;
[0030]加載模塊,通過主程序中廣告SDK的代理接口,利用DexClassLoader類加載器加載廣告SDK的class, dex類文件,并且使用反射的方式調(diào)用Android系統(tǒng)AssertManager資源管理器中addAssetPath方法,將下載好的資源文件加載到主程序的資源文件內(nèi);
[0031]調(diào)用功能模塊,通過主程序中廣告SDK的代理,對廣告SDK中的類、接口以及方法進行管理,當需要調(diào)用廣告SDK的功能時,通過如下步驟實現(xiàn):代理通過系統(tǒng)的反射機制,獲取廣告SDK功能中對應(yīng)的類,并進行實例化獲取對應(yīng)的對象;通過所獲取的對象,使用反射調(diào)用其所包含的方法;通過所獲取的方法調(diào)用相對應(yīng)的資源并加載到主程序資源中,以實現(xiàn)廣告功能的調(diào)用;
[0032]所述調(diào)用功能模塊使用Java的接口Proxy機制,對廣告SDK的接口進行代理,當接口被回調(diào)或者觸發(fā)時,Proxy機制會通知主程序,并攜帶對應(yīng)的回調(diào)事件參數(shù),主程序通過這些參數(shù),分發(fā)到對應(yīng)的處理方法中,以實現(xiàn)廣告SDK中接口的功能。
[0033 ]如圖2所示,一種動態(tài)加載廣告SDK的實現(xiàn)方法,所述方法包括以下步驟:
[0034]SlOl:與服務(wù)器連接下載廣告SDK的class.dex類文件和資源文件,服務(wù)器的廣告SDK為多個時,各廣告SDK擁有不同的class.dex類文件,將多個廣告SDK的資源統(tǒng)一放置于一個APK文件中,與服務(wù)器連接下載多個廣告SDK的class.dex類文件和一個資源文件;
[0035]S102:通過主程序中廣告SDK的代理接口,利用DexClassLoader類加載器加載廣告SDK的class.dex類文件,并且使用反射的方式調(diào)用Android系統(tǒng)AssertManager資源管理器中addAssetPath方法,將下載好的資源文件加載到主程序的資源文件內(nèi);
[0036]S103:通過主程序中廣告SDK的代理,對廣告SDK中的類、接口以及方法進行管理,當需要調(diào)用廣告SDK的功能時,通過如下步驟實現(xiàn):
[0037]S301:代理通過系統(tǒng)的反射機制,獲取廣告SDK功能中對應(yīng)的類,并進行實例化獲取對應(yīng)的對象;
[0038]S302:通過所獲取的對象,使用反射調(diào)用其所包含的方法;
[0039]S303:通過所獲取的方法調(diào)用相對應(yīng)的資源并加載到主程序資源中;
[0040]S304:使用Java的接口 Proxy機制,對廣告SDK的接口進行代理,當接口被回調(diào)或者觸發(fā)時,Proxy機制會通知主程序,并攜帶對應(yīng)的回調(diào)事件參數(shù),主程序通過這些參數(shù),分發(fā)到對應(yīng)的處理方法中,以實現(xiàn)廣告SDK中接口的功能。
[0041 ]本發(fā)明利用JAVA的反射機制和Andr ο i d系統(tǒng)對APP的資源管理原理,實現(xiàn)在APP安裝后,通過網(wǎng)絡(luò)下發(fā),動態(tài)的將廣告SDK及其資源加載到APP中,實現(xiàn)不論需要使用多少個廣告SDK,都不會使初始包體增大的目的。
[0042]本實施例所述的功能如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算設(shè)備可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明實施例對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算設(shè)備(可以是個人計算機,服務(wù)器,移動計算設(shè)備或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:u盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其它實施例的不同之處,各個實施例之間相同或相似部分互相參見即可。
[0043]對所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。
【主權(quán)項】
1.一種動態(tài)加載廣告SDK的實現(xiàn)方法,其特征在于,所述方法包括以下步驟: 51、與服務(wù)器連接下載廣告SDK的class,dex類文件和資源文件; 52、通過主程序中廣告SDK的代理接口,利用DexClassLoader類加載器加載廣告SDK的class.dex類文件,并且使用反射的方式調(diào)用Android系統(tǒng)AssertManager資源管理器中addAssetPath方法,將下載好的資源文件加載到主程序的資源文件內(nèi); 53、通過主程序中廣告SDK的代理,對廣告SDK中的類、接口以及方法進行管理,當需要調(diào)用廣告SDK的功能時,通過如下步驟實現(xiàn): 代理通過系統(tǒng)的反射機制,獲取廣告SDK功能中對應(yīng)的類,并進行實例化獲取對應(yīng)的對象; 通過所獲取的對象,使用反射調(diào)用其所包含的方法; 通過所獲取的方法調(diào)用相對應(yīng)的資源并加載到主程序資源中,以實現(xiàn)廣告功能的調(diào)用。2.如權(quán)利要求1所述的動態(tài)加載廣告SDK的實現(xiàn)方法,其特征在于,所述方法還包括以下步驟: 使用Ja va的接口 Pr ο xy機制,對廣告SDK的接口進行代理,當接口被回調(diào)或者觸發(fā)時,Proxy機制會通知主程序,并攜帶對應(yīng)的回調(diào)事件參數(shù),主程序通過這些參數(shù),分發(fā)到對應(yīng)的處理方法中,以實現(xiàn)廣告SDK中接口的功能。3.如權(quán)利要求1所述的動態(tài)加載廣告SDK的實現(xiàn)方法,其特征在于,所述方法還包括以下步驟: 服務(wù)器的廣告SDK為多個時,各廣告SDK擁有不同的class.dex類文件,將多個廣告SDK的資源統(tǒng)一放置于一個APK文件中,與服務(wù)器連接下載多個廣告SDK的class.dex類文件和一個資源文件。4.一種實現(xiàn)動態(tài)加載廣告SDK的系統(tǒng),其特征在于,所述系統(tǒng)包括: 下載模塊,與服務(wù)器連接下載廣告SDK的class, dex類文件和資源文件; 加載模塊,通過主程序中廣告SDK的代理接口,利用DexClassLoader類加載器加載廣告SDK的class.dex類文件,并且使用反射的方式調(diào)用Android系統(tǒng)AssertManager資源管理器中addAssetPath方法,將下載好的資源文件加載到主程序的資源文件內(nèi); 調(diào)用功能模塊,通過主程序中廣告SDK的代理,對廣告SDK中的類、接口以及方法進行管理,當需要調(diào)用廣告SDK的功能時,通過如下步驟實現(xiàn):代理通過系統(tǒng)的反射機制,獲取廣告SDK功能中對應(yīng)的類,并進行實例化獲取對應(yīng)的對象;通過所獲取的對象,使用反射調(diào)用其所包含的方法;通過所獲取的方法調(diào)用相對應(yīng)的資源并加載到主程序資源中,以實現(xiàn)廣告功能的調(diào)用。5.如權(quán)利要求4所述的實現(xiàn)動態(tài)加載廣告SDK的系統(tǒng),其特征在于,所述調(diào)用功能模塊使用Ja va的接口 Pr ο xy機制,對廣告SDK的接口進行代理,當接口被回調(diào)或者觸發(fā)時,Pr ο xy機制會通知主程序,并攜帶對應(yīng)的回調(diào)事件參數(shù),主程序通過這些參數(shù),分發(fā)到對應(yīng)的處理方法中,以實現(xiàn)廣告SDK中接口的功能。6.如權(quán)利要求4所述的實現(xiàn)動態(tài)加載廣告SDK的系統(tǒng),其特征在于,所述服務(wù)器的廣告SDK為多個時,各廣告SDK擁有不同的class.dex類文件,將多個廣告SDK的資源統(tǒng)一放置于一個APK文件中,與服務(wù)器連接下載多個廣告SDK的class.dex類文件和一個資源文件。
【文檔編號】G06Q30/02GK105843654SQ201610237902
【公開日】2016年8月10日
【申請日】2016年4月14日
【發(fā)明人】鄧裕強, 張杰敏, 鄭相燦, 蔣旭文, 譚文浩
【申請人】廣州市久邦數(shù)碼科技有限公司