掌桥专利:专业的专利平台
掌桥专利
首页

一种第三方SDK加载方法及装置

文献发布时间:2023-06-19 18:34:06


一种第三方SDK加载方法及装置

技术领域

本申请涉及计算机软件开发技术领域,特别涉及一种第三方SDK加载方法、装置、计算设备和可读存储介质。

背景技术

在智能终端应用程序的开发过程中,其依赖的功能通常由第三方SDK(软件开发工具包)提供。应用启动时,需要在多个第三方SDK中选择当前包需要的第三方SDK进行加载,现有技术通常利用反射的方式来进行动态加载,但反射技术需要耗费较多的加载时间,导致应用加载较慢从而影响用户体验。因此,亟需一种方案来解决该问题。

发明内容

有鉴于此,本申请实施例提供了一种第三方SDK加载方法、装置、计算设备和可读存储介质,以解决现有技术中存在的技术缺陷。

本发明的第一方面提供了一种第三方SDK加载方法,包括:

在应用程序的编译工程中添加SDK主模块依赖和第三方SDK依赖;

对编译工程进行编译,得到所述SDK主模块和所述第三方SDK的中间编译文件;

扫描所述中间编译文件,标记所述第三方SDK模块和所述SDK主模块的目标类;

基于标记的内容,对所述SDK主模块中管理类进行修改,完成所述第三方SDK模块在所述管理类中的注册。

本发明的第二方面,提供了一种第三方SDK加载装置,包括:

加载模块,用于在应用程序的编译工程中添加SDK主模块依赖和第三方SDK依赖;

编译模块,用于对编译工程进行编译,得到所述SDK主模块和所述第三方SDK的中间编译文件;

扫描模块,用于扫描所述中间编译文件,标记所述第三方SDK模块和所述SDK主模块的目标类;

编辑模块,用于基于标记的内容,对所述SDK主模块中管理类进行修改,完成所述第三方SDK模块在所述管理类中的注册。

本发明的第三方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现上述任意一项所述方法的步骤。

本发明的第四方面,提供了一种计算机可读存储介质,其中,该指令被处理器执行时实现上述任意一项所述方法的步骤。

在本申请的实施例中,为了避免在应用启动时从众多的第三方SDK中通过反射加载需要的目标,在编译应用程序时,直接将目标第三方SDK添加到编译工程中;在进行编译时,分别获取SDK主模块和第三方SDK的中间编译文件,进一步对上述中间编译文件进行扫描,得到SDK主模块的管理类和第三方SDK的代理类;然后对管理类所在的中间编译文件进行修改,将第三方SDK的代理类注册到管理类中,避免了应用启动时通过反射发现第三方SDK的过程,从而大幅提高了应用的启动速度,而且整个编译过程自动执行,无需人工参与,极大的提高了工程实践的效率。

附图说明

图1是本申请实施例提供的计算设备的结构框图;

图2是本申请实施例提供的一种第三方SDK加载方法的流程示意图;

图3是本申请实施例提供的一种第三方SDK加载装置的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。

在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。

在本申请一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本申请一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“响应于确定”。

图1示出了根据本申请一实施例的计算设备100的结构框图。该计算设备100的部件包括但不限于存储器110和处理器120。处理器120与存储器110通过总线130相连接,数据库150用于保存数据。

计算设备100还包括接入设备140,接入设备140使得计算设备100能够经由一个或多个网络160通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备140可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。

在本申请的一个实施例中,计算设备100的上述部件以及图1中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图1所示的计算设备结构框图仅仅是出于示例的目的,而不是对本申请范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。

计算设备100可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备100还可以是移动式或静止式的服务器。

其中,处理器120可以执行图2所示的一种第三方SDK加载方法中的步骤。图2示出了根据本申请一实施例的第三方SDK加载方法的流程图,包括步骤202至步骤208。

现有技术中,SDK主模块聚合了多达数十个的第三方SDK,在应用启动时发现应用需要的第三方SDK并进行注册和加载。作为SDK主模块需要尽可能的减少运行耗时,保障应用程序的良好体验。但是,目前的SDK主模块在应用启动过程中,利用查找结合反射的方式来加载第三方SDK,导致应用的启动耗时严重,例如:

通过上述代码,应用启动时SDK主模块遍历所有第三方SDK列表,发现所需要的第三方SDK的名字(classPrefix+sdkName)后,利用反射方式提取对应的实例。在上述过程中,无论是遍历还是反射加载都消耗了大量时间,影响了应用的启动速度。

本申请的技术方案基于上述问题的缺陷而提出,包括:

步骤202:在应用程序的编译工程中添加SDK主模块依赖和第三方SDK依赖。

在一种可行的实施方式中,SDK主模块作为SDK的管理模块提供应用对接第三方SDK模块的接口,用于在应用运行时加载第三方SDK,该接口根据SDK主模块中注册的第三方SDK信息来确定,当SDK主模块中注册有第三方SDK类时,可以获取该第三方SDK模块对应的服务。

在该步骤中,在应用的编译工程中添加SDK主模块依赖,以及根据当前应用的打包需求添加目标第三方SDK的依赖。具体的,在一些实施方式中,SDK主模块为广告管理SDK主模块,第三方SDK为多个第三方广告公司提供的关于广告服务的SDK包。在进行应用程序打包时,直接添加添加SDK主模块依赖和该应用程序所需要的第三方SDK,而不是将所有的第三方SDK到编译工程中,从而避免了初始阶段的第三方SDK遍历过程。

步骤204:对编译工程进行编译,得到SDK主模块和第三方SDK的中间编译文件。

在一种可行的实施方式中,利用Android编译工具对应用工程进行编译,得到SDK主模块和目标第三方SDK的中间编译文件,即.class文件。

在上述实施方式中,中间编译文件格式为Android开发环境下的.class文件,也即字节码文件;在其他的实施方式中,中间编译文件也可以为其他形式的字节码文件,在此不做特别的限制。

在该应用工程中,除了包括SDK主模块和目标第三方SDK外,还包括其他应用资源,如程序代码、图片等,在此不再赘述。

步骤206:扫描中间编译文件,标记第三方SDK模块和SDK主模块的目标类。

在一种可行的实施方式中,基于筛选条件遍历中间编译文件中第三方SDK和SDK主模块对应的文件,得到目标类代码的位置。

具体的,筛选条件包括利用关键字扫描中间编译文件,得到中间编译文件中第三方SDK和SDK主模块中的目标类代码,其中,关键字可以包括类名(class_name),即根据类名扫描中间编译文件得到目标类代码。一些实施例中,关键字还包括包括接口名(interface_name),即根据接口名扫描中间编译文件得到目标类代码。

进一步的,对SDK主模块的中间编译文件进行扫描,得到SDK主模块中的管理类;对第三方SDK的中间编译文件进行扫描,得到第三方SDK代理类。

进一步的,标记扫描到的SDK主模块中的管理类和第三方SDK模块中的第三方SDK代理类。

本申请提供了一个在中间编译文件中扫描SDK主模块和第三方SDK的实例,参考下述示意代码:

步骤208:基于标记的内容,对SDK主模块中管理类进行修改,完成第三方SDK模块在管理类中的注册。

在一种可行的实施方式中,对SDK主模块中管理类所在的中间编译文件进行修改,将第三方SDK代理类的相关信息注册到管理类中;具体的,将标记的第三方SDK代理类的相关信息插入至标记的管理类的管理列表中。

本申请提供了如下实例,参考下述示意代码:

完成修改后,在管理类的中间编译文件中将包括如下的示意代码,

由此可见,通过上述修改生成了管理类的新的中间编译文件,从而完成了将目标第三方SDK代理类注册到管理类的功能;当应用启动时,根据SDK主模块中管理类中已注册的第三方SDK代理类直接进行类实例化,无需再使用反射加载。

进一步的,在完成SDK主模块中管理类的修改后,利用编译工具对包括中间编译文件在内的所有应用程序资源进行打包,生成安装包文件,结束整个编译过程。

本申请的上述实施例中,通过在编译应用程序时,直接将目标第三方SDK的添加到编译工程中,在进行编译时,分别得到SDK主模块和第三方SDK的中间编译文件;进一步对上述中间编译文件进行扫描,得到SDK主模块的管理类和第三方SDK的代理类;然后对管理类所在的中间编译文件进行修改,将第三方SDK的代理类注册到管理类中,避免了应用启动时通过反射发现第三方SDK的过程,从而大幅提高了应用的启动速度,而且整个编译过程自动执行,无需人工参与,极大的提高了工程实践的效率。

与上述方法实施例相对应,本申请还提供了一种第三方SDK加载装置的实施例,如图3所示,该装置包括:

加载模块,用于在应用程序的编译工程中添加SDK主模块依赖和第三方SDK依赖;

编译模块,用于对编译工程进行编译,得到所述SDK主模块和所述第三方SDK的中间编译文件;

扫描模块,用于扫描所述中间编译文件,标记所述第三方SDK模块和所述SDK主模块的目标类;

编辑模块,用于基于标记的内容,对所述SDK主模块中管理类进行修改,完成所述第三方SDK模块在所述管理类中的注册。

上述为本实施例的一种第三方SDK加载装置的示意性方案。需要说明的是,该第三方SDK加载装置的技术方案与上述的第三方SDK加载方法的技术方案属于同一构思,该第三方SDK加载装置的技术方案未详细描述的细节内容,均可以参见上述第三方SDK加载方法的技术方案的描述。

根据本发明的又一方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,处理器执行所述指令时实现上述任意一项所述方法的步骤。

根据本发明的再一方面,提供了一种计算机可读存储介质,其中,该指令被处理器执行时实现上述任意一项所述方法的步骤。

应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。

上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的一种用于保证企业登录凭证安全的方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述一种用于保证企业登录凭证安全的方法的技术方案的描述。

上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

计算机指令包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为的具体实施方式。显然,根据本申请的内容,可作很多的修改和变化。本申请选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。

相关技术
  • 一种软件加载方法以及软件加载装置
  • 一种巷道表面喷浆体力学效果测试的直墙半圆拱巷道加载装置及加载方法
  • 一种平面网络冲击波加载装置及该装置的制备方法
  • 一种用于钢板加载试验的抗屈曲装置及其操作方法
  • 一种可模拟体重加载的踝足矫形器力学特性测量装置及方法
  • 一种应用中第三方SDK的监控方法、装置、设备及介质
  • 一种集成第三方SDK的方法及装置
技术分类

06120115615923