一种动态加载广告sdk的实现方法及其实现系统的制作方法

文档序号:10488784阅读:275来源:国知局
一种动态加载广告sdk的实现方法及其实现系统的制作方法
【专利摘要】本发明提供了一种动态加载广告SDK的实现方法,所述方法包括:与服务器连接下载广告SDK的class.dex类文件和资源文件;通过主程序中广告SDK的代理接口,利用DexClassLoader类加载广告SDK的class.dex类文件,并且使用反射的方式调用Android系统AssertManager资源管理器中addAssetPath方法,将下载好的资源文件加载到主程序的资源文件内;通过主程序中广告SDK的代理,对广告SDK中的类、接口以及方法进行管理;本发明实现不论需要使用多少个广告SDK,都不会使初始包体增大的目的。本发明还提供了一种实现动态加载广告SDK的系统。
【专利说明】
一种动态加载广告SDK的实现方法及其实现系统
技术领域
[0001 ]本发明涉及移动终端广告SDK加载技术领域,尤其涉及一种动态加载广告SDK的实现方法及其实现系统。
【背景技术】
[0002]一般情况下,如果APP需要接入第三方的广告SDK,需要将其作为工程的资源导入,然后进行编码,再调用外部SDK的接口,以实现外部广告的植入。这样的实现方式,会给APP的包体大小带来冲击,并且随着接入的广告SDK的数量越多,APP的包体就会越大,不利于APP的推广和留存率。

【发明内容】

[0003]针对现有技术的不足,本发明的目的在于提供一种能动态将广告SDK及其资源加载到APP中,不论需要使用多少个广告SDK,都不会使初始包体增大的动态加载广告SDK的实现方法。
[0004]为实现本发明的另一目的,本发明还提供一种实现动态加载广告SDK的系统。
[0005]为实现上述目的,本发明采用的技术方案如下:一种动态加载广告SDK的实现方法,所述方法包括以下步骤:
[0006]S1、与服务器连接下载广告SDK的class, dex类文件和资源文件;
[0007]S2、通过主程序中广告SDK的代理接口,利用DexClassLoader类加载器加载广告SDK的class.dex类文件,并且使用反射的方式调用Android系统AssertManager资源管理器中addAssetPath方法,将下载好的资源文件加载到主程序的资源文件内;
[0008]S3、通过主程序中广告SDK的代理,对广告SDK中的类、接口以及方法进行管理,当需要调用广告SDK的功能时,通过如下步骤实现:
[0009]代理通过系统的反射机制,获取广告SDK功能中对应的类,并进行实例化获取对应的对象;
[0010]通过所获取的对象,使用反射调用其所包含的方法;
[0011]通过所获取的方法调用相对应的资源并加载到主程序资源中,以实现广告功能的调用。
[0012]进一步,所述方法还包括以下步骤:
[0013]使用Java的接口Proxy机制,对广告SDK的接口进行代理,当接口被回调或者触发时,Proxy机制会通知主程序,并携带对应的回调事件参数,主程序通过这些参数,分发到对应的处理方法中,以实现广告SDK中接口的功能。
[0014]进一步,所述方法还包括以下步骤:
[0015]服务器的广告SDK为多个时,各广告SDK拥有不同的class.dex类文件,将多个广告SDK的资源统一放置于一个APK文件中,与服务器连接下载多个广告SDK的class.dex类文件和一个资源文件。
[0016]为实现本发明的另一目的,本发明还采用如下技术方案:一种实现动态加载广告SDK的系统,所述系统包括:
[0017]下载模块,与服务器连接下载广告SDK的class.dex类文件和资源文件;
[0018]加载模块,通过主程序中广告SDK的代理接口,利用DexClassLoader类加载器加载广告SDK的class, dex类文件,并且使用反射的方式调用Android系统AssertManager资源管理器中addAssetPath方法,将下载好的资源文件加载到主程序的资源文件内;
[0019]调用功能模块,通过主程序中广告SDK的代理,对广告SDK中的类、接口以及方法进行管理,当需要调用广告SDK的功能时,通过如下步骤实现:代理通过系统的反射机制,获取广告SDK功能中对应的类,并进行实例化获取对应的对象;通过所获取的对象,使用反射调用其所包含的方法;通过所获取的方法调用相对应的资源并加载到主程序资源中,以实现广告功能的调用。
[°02°]进一步,所述调用功能模块使用Ja va的接口 Pr ο xy机制,对广告SDK的接口进行代理,当接口被回调或者触发时,Proxy机制会通知主程序,并携带对应的回调事件参数,主程序通过这些参数,分发到对应的处理方法中,以实现广告SDK中接口的功能。
[0021 ]进一步,所述服务器的广告SDK为多个时,各广告SDK拥有不同的class.dex类文件,将多个广告SDK的资源统一放置于一个APK文件中,与服务器连接下载多个广告SDK的class.dex类文件和一个资源文件。
[0022]相对于现有技术,本发明所述的技术方案通过与服务器连接下载广告SDK的class.dex类文件和资源文件;通过主程序中广告SDK的代理接口,利用DexClassLoader类加载器加载广告SDK的class, dex类文件,并且使用反射的方式调用Android系统AssertManager资源管理器中addAssetPath方法,将下载好的资源文件加载到主程序的资源文件内;通过主程序中广告SDK的代理,对广告SDK中的类、接口以及方法进行管理,当需要调用广告SDK的功能时,通过代理通过系统的反射机制,获取广告SDK功能中对应的类,并进行实例化获取对应的对象;通过所获取的对象,使用反射调用其所包含的方法;通过所获取的方法调用相对应的资源并加载到主程序资源中,以实现广告功能的调用,本发明利用JAVA的反射机制和Android系统对APP的资源管理原理,实现在APP安装后,通过网络下发,动态的将广告SDK及其资源加载到APP中,实现不论需要使用多少个广告SDK,都不会使初始包体增大的目的。
[0023]为了充分地了解本发明的目的、特征和效果,以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明。
【附图说明】
[0024]图1是本发明实现动态加载广告SDK的系统的模块示意图;
[0025]图2是本发明动态加载广告SDK的实现方法的流程图。
【具体实施方式】
[0026]下面将结合附图以及具体实施方法来详细说明本发明,在本发明的示意性实施及说明用来解释本发明,但并不作为对本发明的限定。
[0027]具体实施例
[0028]如图1所示,一种实现动态加载广告SDK的系统,所述系统包括:
[0029]下载模块,与服务器连接下载广告SDK的class,dex类文件和资源文件;所述服务器的广告SDK为多个时,各广告SDK拥有不同的class.dex类文件,将多个广告SDK的资源统一放置于一个APK文件中,与服务器连接下载多个广告SDK的class.dex类文件和一个资源文件;
[0030]加载模块,通过主程序中广告SDK的代理接口,利用DexClassLoader类加载器加载广告SDK的class, dex类文件,并且使用反射的方式调用Android系统AssertManager资源管理器中addAssetPath方法,将下载好的资源文件加载到主程序的资源文件内;
[0031]调用功能模块,通过主程序中广告SDK的代理,对广告SDK中的类、接口以及方法进行管理,当需要调用广告SDK的功能时,通过如下步骤实现:代理通过系统的反射机制,获取广告SDK功能中对应的类,并进行实例化获取对应的对象;通过所获取的对象,使用反射调用其所包含的方法;通过所获取的方法调用相对应的资源并加载到主程序资源中,以实现广告功能的调用;
[0032]所述调用功能模块使用Java的接口Proxy机制,对广告SDK的接口进行代理,当接口被回调或者触发时,Proxy机制会通知主程序,并携带对应的回调事件参数,主程序通过这些参数,分发到对应的处理方法中,以实现广告SDK中接口的功能。
[0033 ]如图2所示,一种动态加载广告SDK的实现方法,所述方法包括以下步骤:
[0034]SlOl:与服务器连接下载广告SDK的class.dex类文件和资源文件,服务器的广告SDK为多个时,各广告SDK拥有不同的class.dex类文件,将多个广告SDK的资源统一放置于一个APK文件中,与服务器连接下载多个广告SDK的class.dex类文件和一个资源文件;
[0035]S102:通过主程序中广告SDK的代理接口,利用DexClassLoader类加载器加载广告SDK的class.dex类文件,并且使用反射的方式调用Android系统AssertManager资源管理器中addAssetPath方法,将下载好的资源文件加载到主程序的资源文件内;
[0036]S103:通过主程序中广告SDK的代理,对广告SDK中的类、接口以及方法进行管理,当需要调用广告SDK的功能时,通过如下步骤实现:
[0037]S301:代理通过系统的反射机制,获取广告SDK功能中对应的类,并进行实例化获取对应的对象;
[0038]S302:通过所获取的对象,使用反射调用其所包含的方法;
[0039]S303:通过所获取的方法调用相对应的资源并加载到主程序资源中;
[0040]S304:使用Java的接口 Proxy机制,对广告SDK的接口进行代理,当接口被回调或者触发时,Proxy机制会通知主程序,并携带对应的回调事件参数,主程序通过这些参数,分发到对应的处理方法中,以实现广告SDK中接口的功能。
[0041 ]本发明利用JAVA的反射机制和Andr ο i d系统对APP的资源管理原理,实现在APP安装后,通过网络下发,动态的将广告SDK及其资源加载到APP中,实现不论需要使用多少个广告SDK,都不会使初始包体增大的目的。
[0042]本实施例所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本发明实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
[0043]对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
【主权项】
1.一种动态加载广告SDK的实现方法,其特征在于,所述方法包括以下步骤: 51、与服务器连接下载广告SDK的class,dex类文件和资源文件; 52、通过主程序中广告SDK的代理接口,利用DexClassLoader类加载器加载广告SDK的class.dex类文件,并且使用反射的方式调用Android系统AssertManager资源管理器中addAssetPath方法,将下载好的资源文件加载到主程序的资源文件内; 53、通过主程序中广告SDK的代理,对广告SDK中的类、接口以及方法进行管理,当需要调用广告SDK的功能时,通过如下步骤实现: 代理通过系统的反射机制,获取广告SDK功能中对应的类,并进行实例化获取对应的对象; 通过所获取的对象,使用反射调用其所包含的方法; 通过所获取的方法调用相对应的资源并加载到主程序资源中,以实现广告功能的调用。2.如权利要求1所述的动态加载广告SDK的实现方法,其特征在于,所述方法还包括以下步骤: 使用Ja va的接口 Pr ο xy机制,对广告SDK的接口进行代理,当接口被回调或者触发时,Proxy机制会通知主程序,并携带对应的回调事件参数,主程序通过这些参数,分发到对应的处理方法中,以实现广告SDK中接口的功能。3.如权利要求1所述的动态加载广告SDK的实现方法,其特征在于,所述方法还包括以下步骤: 服务器的广告SDK为多个时,各广告SDK拥有不同的class.dex类文件,将多个广告SDK的资源统一放置于一个APK文件中,与服务器连接下载多个广告SDK的class.dex类文件和一个资源文件。4.一种实现动态加载广告SDK的系统,其特征在于,所述系统包括: 下载模块,与服务器连接下载广告SDK的class, dex类文件和资源文件; 加载模块,通过主程序中广告SDK的代理接口,利用DexClassLoader类加载器加载广告SDK的class.dex类文件,并且使用反射的方式调用Android系统AssertManager资源管理器中addAssetPath方法,将下载好的资源文件加载到主程序的资源文件内; 调用功能模块,通过主程序中广告SDK的代理,对广告SDK中的类、接口以及方法进行管理,当需要调用广告SDK的功能时,通过如下步骤实现:代理通过系统的反射机制,获取广告SDK功能中对应的类,并进行实例化获取对应的对象;通过所获取的对象,使用反射调用其所包含的方法;通过所获取的方法调用相对应的资源并加载到主程序资源中,以实现广告功能的调用。5.如权利要求4所述的实现动态加载广告SDK的系统,其特征在于,所述调用功能模块使用Ja va的接口 Pr ο xy机制,对广告SDK的接口进行代理,当接口被回调或者触发时,Pr ο xy机制会通知主程序,并携带对应的回调事件参数,主程序通过这些参数,分发到对应的处理方法中,以实现广告SDK中接口的功能。6.如权利要求4所述的实现动态加载广告SDK的系统,其特征在于,所述服务器的广告SDK为多个时,各广告SDK拥有不同的class.dex类文件,将多个广告SDK的资源统一放置于一个APK文件中,与服务器连接下载多个广告SDK的class.dex类文件和一个资源文件。
【文档编号】G06Q30/02GK105843654SQ201610237902
【公开日】2016年8月10日
【申请日】2016年4月14日
【发明人】邓裕强, 张杰敏, 郑相灿, 蒋旭文, 谭文浩
【申请人】广州市久邦数码科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1