CN112181388B - Sdk组件的初始化方法、装置、存储介质及控制终端 - Google Patents

Sdk组件的初始化方法、装置、存储介质及控制终端 Download PDF

Info

Publication number
CN112181388B
CN112181388B CN202011023809.8A CN202011023809A CN112181388B CN 112181388 B CN112181388 B CN 112181388B CN 202011023809 A CN202011023809 A CN 202011023809A CN 112181388 B CN112181388 B CN 112181388B
Authority
CN
China
Prior art keywords
initialization
sdk
sdk component
component
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011023809.8A
Other languages
English (en)
Other versions
CN112181388A (zh
Inventor
刘超群
黄帆
黎河军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Huya Technology Co Ltd
Original Assignee
Guangzhou Huya Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangzhou Huya Technology Co Ltd filed Critical Guangzhou Huya Technology Co Ltd
Priority to CN202011023809.8A priority Critical patent/CN112181388B/zh
Publication of CN112181388A publication Critical patent/CN112181388A/zh
Application granted granted Critical
Publication of CN112181388B publication Critical patent/CN112181388B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/37Compiler construction; Parser generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Abstract

本申请涉及软件技术框架开发领域,具体涉及一种SDK组件的初始化方法、装置、存储介质及控制终端,所述方法包括:解析SDK组件的项目文件,从所述项目文件中获取SDK组件的基础参数,根据所述基础参数生成参照文件;接收对SDK组件自定义的初始化信息,若所述自定义的初始化信息满足所述参照文件,根据所述自定义的初始化信息生成配置文件;在进行SDK组件的初始化流程时,读取所述配置文件中的各个SDK组件的初始化信息,基于所述初始化信息依次对相应的SDK组件进行安装,以完成SDK组件的初始化流程。本申请能够实现快速对SDK组件的接入以及初始化流程进行管理,提高SDK组件初始化的效率。

Description

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组件的初始化流程,包括:
基于所述初始化信息依次对相应的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组件需要参与到初始化流程以及确定不同SDK组件的初始化顺序,再基于所述初始化信息依次对相应的SDK组件进行安装,从而避免改动业务模块的代码来选择相应的SDK组件进行安装,并基于实际的业务需求配置对SDK组件的初始化信息,当参与到初始化流程的SDK组件安装完成后,完成SDK组件的初始化流程,从而简化SDK组件的接入和初始化流程,通过配置文件便可快速对SDK组件的初始化流程进行管理,提高SDK组件初始化的效率,提高APP的启动效率。
本申请附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请SDK组件的初始化方法的一实施例流程示意图;
图2为本申请多个SDK组件进行初始化的流程的一实施例示意图;
图3为本申请SDK组件的初始化装置的一实施例示意图;
图4为本申请控制终端的一实施例结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
本申请实施例提供一种SDK组件的初始化方法,所述SDK组件的初始化方法可以应用于技术框架中,在该技术框架中实现本实施例的方法,本实施例定义实现所述SDK组件的初始化方法的技术框架名称为Furion,如图1所示,所述方法包括以下步骤:
S10:解析SDK组件的项目文件,从所述项目文件中获取SDK组件的基础参数,根据所述基础参数生成参照文件。
本实施例中,所述SDK组件由协议和实现类绑定得到,通过将协议和实现类绑定来定义一个组件,定义形成的SDK组件称为Wrapper。本实施例中,当要接入SDK组件,获取SDK组件的项目文件,所述SDK组件的项目文件封装了SDK的初始化逻辑和接口调用,所述SDK组件的项目文件还包括SDK的接入文档。所述SDK组件的项目文件记录有SDK组件的基础参数,所述基础参数包括SDK组件的初始化参数以及SDK其它功能模块的方法参数,本实施例中,从所述项目文件中获取SDK组件的基础参数,然后根据所述基础参数生成参照文件,即将各个SDK组件的基础参数按照本实施例的技术框架Furion的定义进行存储,生成参照文件,所述参照文件中包含了接入各个SDK组件的安全配置,作为对SDK组件的修改的安全限制。
S20:接收对SDK组件自定义的初始化信息,若所述自定义的初始化信息满足所述参照文件,根据所述自定义的初始化信息生成配置文件。
在根据各个SDK组件的基础参数生成参照文件后,项目开发人员便可以对SDK组件的初始化信息进行修改,在本申请的技术框架Furion下,接收对SDK组件自定义的初始化信息,包括自定义不同SDK组件的初始化顺序、自定义SDK组件间的依赖关系、自定义SDK组件的初始化的进程或线程、自定义SDK组件的初始化触发事件,本实施例还对自定义的初始化信息进行安全监测,检测所述自定义的初始化信息是否满足所述参照文件中对各个SDK组件的安全配置,若是,则确定对所述SDK组件自定义的初始化信息是合法的,然后根据所述自定义的初始化信息生成配置文件,所述配置文件记载有各个SDK组件的初始化信息,且各个SDK组件的初始化信息满足SDK组件初始化的安全配置。若否,则输出错误的提示信息,避免SDK组件通过修改初始化信息造成与SDK组件的安全基础参数冲突,包括避免SDK组件通过修改依赖关系绕过SDK组件的安全的初始化顺序,从而避免SDK组件的非法安装,保证应用运行的安全
S30:在进行SDK组件的初始化流程时,读取所述配置文件中的各个SDK组件的初始化信息,基于所述初始化信息依次对相应的SDK组件进行安装,以完成SDK组件的初始化流程。
在生成配置文件后,当应用所述技术框架进行SDK组件的初始化流程时,读取所述配置文件中的各个SDK组件的初始化信息,根据所述SDK组件的初始化信息便可确定在当前项目工程中哪些SDK组件需要参与到初始化流程以及确定不同SDK组件的初始化顺序,然后在所述技术框架中基于所述初始化信息依次对相应的SDK组件进行安装,以完成SDK组件的初始化流程,从而避免改动业务模块的代码来决定对哪些SDK组件进行安装,并基于实际的业务需求决定各个SDK组件的初始化顺序,当参与到初始化流程的SDK组件安装完成后,完成SDK组件的初始化流程。从而方便管理SDK组件的初始化流程,提高SDK组件的初始化效率,提高应用程序的启动效率。
所述读取所述配置文件中的各个SDK组件的初始化信息的一种实施例如下:
“sequenceDependency”:
{
“wrapper”:”com.xx.mtp.crash.wrapper.impl.CrashWarpper”,
“dependentList”:[]
}
本实施例提供了一种方便、快捷进行SDK组件的接入和初始化的方法,通过解析SDK组件的项目文件,从所述项目文件中获取SDK组件的基础参数,根据所述基础参数生成参照文件,作为对SDK组件的修改的安全限制,然后接收对各个SDK组件自定义的初始化信息,并对所述自定义的初始化信息进行安全检查,若所述自定义的初始化信息满足所述参照文件,则确定所述初始化信息满足安全配置,再根据所述自定义的初始化信息生成配置文件,在对SDK组件进行初始化时,读取所述配置文件中的各个SDK组件的初始化信息,包括确定哪些SDK组件需要参与到初始化流程以及确定不同SDK组件的初始化顺序,再基于所述初始化信息依次对相应的SDK组件进行安装,从而避免改动业务模块的代码来选择相应的SDK组件进行安装,并基于实际的业务需求配置对SDK组件的初始化信息,当参与到初始化流程的SDK组件安装完成后,完成SDK组件的初始化流程,从而简化SDK组件的接入和初始化流程,通过配置文件便可快速对SDK组件的初始化流程进行管理,提高SDK组件初始化的效率,提高APP的启动效率。
本申请的一种实施例,所述步骤S10的从所述项目文件中获取SDK组件的基础参数,根据所述基础参数生成参照文件,包括:
从所述项目文件中获取SDK组件的基础依赖关系,根据所述基础依赖关系确定SDK组件的安全初始化顺序;根据所述安全初始化顺序生成参照文件。
本实施例中,SDK组件的项目文件中存在定义了SDK组件的某些方法函数需要依赖于其它SDK组件的方法函数作为输入的依赖关系,例如SDK A的方法a1需要SDK B的方法b1的输出作为输入,该种情况下,SDK A在初始化的顺序必须位于SDK B之后,本实施例将SDK组件的直接依赖关系定义为基础依赖关系,根据所述基础依赖关系便可确定SDK组件的安全初始化顺序,即SDK组件在初始化时不导致崩溃的安全初始化顺序,然后根据所述安全初始化顺序生成参照文件,若对SDK组件的初始化顺序进行修改,修改后的SDK组件的初始化顺序一定需要满足所述参照文件中的安全初始化顺序,例如,在SDK A的方法a1需要SDK B的方法b1的输出作为输入,该种情况下,SDK B较SDK A先初始化,而若对SDK组件的初始化顺序修改为SDK B->SDK C->SDK A仍然是满足安全初始化顺序,若对SDK组件的初始化顺序修改为SDK C->SDK A->SDK B则无法满足安全初始化顺序,则无法完成初始化流程。进一步的,当业务发展到不同阶段时,需要更换SDK组件的初始化顺序,便可通过修改配置文件中SDK组件的依赖关系,从而更改SDK组件的初始化顺序,不需要在业务代码中进行SDK组件初始化顺序的更改,从而方便SDK组件的初始化管理,提高代码的维护效率。
本申请的一种实施例,S20中的所述接收对SDK组件自定义的初始化信息,包括:
接收针对于各个SDK组件的自定义的依赖关系;
S20中的所述若所述自定义的初始化信息满足所述参照文件,根据所述自定义的初始化信息生成配置文件,包括:
获取对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组件进行安装;
若所述SDK组件无自定义的初始化驱动事件且所述SDK组件处于同层级多线程,将所述SDK组件同步进行安装;
若所述SDK组件具有自定义的初始化驱动事件,在监听到所述驱动事件后,异步执行所述驱动事件对应的SDK组件的安装。
本实施例中,在上述实施例的基础上,当SDK组件自定义了初始化驱动事件后,基于所述初始化信息依次对相应的SDK组件进行安装时,首先判断所述SDK组件是否有自定义的初始化驱动事件,若无,还需要判断与其它SDK组件的初始化是否处于同层级,若是,通过多线程的方式对所述SDK组件同步、并行安装;而若所述SDK组件具有自定义的初始化驱动事件,在监听到所述驱动事件后,异步执行所述驱动事件对应的SDK组件的安装,从而完成SDK组件的初始化。
如图2所示是多个SDK组件进行初始化的流程,包括APP层、Host层以及APP包含的SDK1-wrapper(SDK1组件)、SDK2-wrapper(SDK2组件)、SDKN-wrapper(SDKN组件),SDK2-wrapper与SDK1-wrapper同级、SDKN-wrapper依赖于SDK2-wrapper,在APP层配置(configure)Host层,然后通知Host层进行初始化(init),Host层对无自定义的初始化事件的SDK组件进行初始化,其中SDK1组件与SDK2组件无自定义的初始化驱动事件且所述SDK组件处于同层级多线程,向SDK1组件发送Lance event,SDK1组件即向SDK2 sent event,从而使得SDK1组件SDK2组件同步并行安装,完成初始化,然后返回初始化完成的消息至Host层,而SDK N组件自定义了初始化驱动事件,在APP业务层监听到所述驱动事件后,向SDK N组件sent custom event,从而对SDK N组件进行异步安装,完成SDK N组件的初始化,SDKN组件初始化完成后返回初始化完成的消息至Host层,Host层返回SDK组件完成初始化的消息至APP层,从而完成SDK的初始化流程。
本申请的一种实施例,所述接收对SDK组件自定义的初始化信息,若所述自定义的初始化信息满足所述参照文件,根据所述自定义的初始化信息生成配置文件之后,还包括:
配置SDK组件的增加信息及删减信息;
根据所述增加信息及删减信息更新所述配置文件。
本实施例中,为了简化对SDK组件的增加与删减,在配置各个SDK组件的自定义的初始化信息,并根据所述自定义的初始化信息生成配置文件之后,基于技术框架已存储的SDK组件的参数配置SDK组件的增加信息及删减信息,然后根据所述增加信息及删减信息更新所述配置文件,进一步的,在配置了SDK组件的增加信息及删减信息后,仍然需要对SDK组件的初始化信息进行校验,确定是否满足所述参照文件,例如在SDK A的方法a1需要SDK B的方法b1的输出作为输入,该种情况下,不能将SDK B进行删减,而可以将SDK A进行删减。当重新启动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组件的初始化的执行时间。
如图3所示,在另一种实施例中,本申请提供了一种SDK组件的初始化装置,包括:
解析模块10:用于解析SDK组件的项目文件,从所述项目文件中获取SDK组件的基础参数,根据所述基础参数生成参照文件;
配置模块20:用于接收对SDK组件自定义的初始化信息,若所述自定义的初始化信息满足所述参照文件,根据所述自定义的初始化信息生成配置文件;
初始化模块30:用于在进行SDK组件的初始化流程时,读取所述配置文件中的各个SDK组件的初始化信息,基于所述初始化信息依次对相应的SDK组件进行安装,以完成SDK组件的初始化流程。
本申请的一种实施例,所述解析模块10还包括执行:
从所述项目文件中获取SDK组件的基础依赖关系,根据所述基础依赖关系确定SDK组件的安全初始化顺序;根据所述安全初始化顺序生成参照文件。
本申请的一种实施例,所述配置模块20还包括执行:
接收针对于各个SDK组件的自定义的依赖关系:
获取对SDK组件自定义的依赖关系;
根据所述自定义的依赖关系确定SDK组件自定义的初始化顺序;
检验所述自定义的初始化顺序与所述安全初始化顺序是否冲突,若否,确定所述自定义的依赖关系满足所述参照文件;
根据所述自定义的依赖关系生成配置文件。
本申请的一种实施例,所述配置模块20还包括执行:
配置SDK组件的初始化驱动事件;
根据所述初始化驱动事件更新所述配置文件。
本申请的一种实施例,所述初始化模块30还包括执行:
基于所述初始化信息依次对相应的SDK组件进行安装;
若所述SDK组件无自定义的初始化驱动事件且所述SDK组件处于同层级多线程,将所述SDK组件同步进行安装;
若所述SDK组件具有自定义的初始化驱动事件,在监听到所述驱动事件后,异步执行所述驱动事件对应的SDK组件的安装。
本申请的一种实施例,所述配置模块20还包括执行:
配置SDK组件的增加信息及删减信息;
根据所述增加信息及删减信息更新所述配置文件。
本申请的一种实施例,所述装置还包括:
监听模块:用于执行对所述SDK组件的初始化信息进行插桩,监听所述SDK组件的初始化的开始时间和结束时间;捕获所述SDK组件的初始化的开始时间和结束时间,根据所述开始时间和结束时间生成SDK组件初始化的执行耗时;输出所述执行耗时。
在另一种实施例中,本申请提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例所述的SDK组件的初始化方法。其中,所述计算机可读存储介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、ROM(Read-Only Memory,只读存储器)、RAM(Random AcceSSMemory,随即存储器)、EPROM(EraSable Programmable Read-Only Memory,可擦写可编程只读存储器)、EEPROM(Electrically EraSable Programmable Read-Only Memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,存储设备包括由设备以能够读的形式存储或传输信息的任何介质,可以是只读存储器,磁盘或光盘等。
本申请实施例提供的一种计算机可读存储介质,可实现解析SDK组件的项目文件,从所述项目文件中获取SDK组件的基础参数,根据所述基础参数生成参照文件;接收对SDK组件自定义的初始化信息,若所述自定义的初始化信息满足所述参照文件,根据所述自定义的初始化信息生成配置文件;在进行SDK组件的初始化流程时,读取所述配置文件中的各个SDK组件的初始化信息,基于所述初始化信息依次对相应的SDK组件进行安装,以完成SDK组件的初始化流程。通过提供一种方便、快捷进行SDK组件的接入和初始化的方法,通过解析SDK组件的项目文件,从所述项目文件中获取SDK组件的基础参数,根据所述基础参数生成参照文件,作为对SDK组件的修改的安全限制,然后接收对各个SDK组件自定义的初始化信息,并对所述自定义的初始化信息进行安全检查,若所述自定义的初始化信息满足所述参照文件,则确定所述初始化信息满足安全配置,再根据所述自定义的初始化信息生成配置文件,在对SDK组件进行初始化时,读取所述配置文件中的各个SDK组件的初始化信息,包括确定哪些SDK组件需要参与到初始化流程以及确定不同SDK组件的初始化顺序,再基于所述初始化信息依次对相应的SDK组件进行安装,从而避免改动业务模块的代码来选择相应的SDK组件进行安装,并基于实际的业务需求配置对SDK组件的初始化信息,当参与到初始化流程的SDK组件安装完成后,完成SDK组件的初始化流程,从而简化SDK组件的接入和初始化流程,通过配置文件便可快速对SDK组件的初始化流程进行管理,提高SDK组件初始化的效率,提高APP的启动效率。
本申请实施例提供的计算机可读存储介质可以实现上述SDK组件的初始化方法的实施例,具体功能实现请参见方法实施例中的说明,在此不再赘述。
此外,在又一种实施例中,本申请还提供一种控制终端,如图4所示,所述控制终端包括处理器403、存储器405、输入单元407以及显示单元409等器件。本领域技术人员可以理解,图4示出的结构器件并不构成对所有控制终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件。所述存储器405可用于存储计算机程序401以及各功能模块,所述处理器403运行存储在存储器405的计算机程序401,从而执行设备的各种功能应用以及数据处理。
在一种实施方式中,所述控制终端包括一个或多个处理器403,以及一个或多个存储器405,一个或多个计算机程序401,其中所述一个或多个计算机程序401被存储在存储器405中并被配置为由所述一个或多个处理器403执行,所述一个或多个计算机程序401配置用于执行以上实施例所述的动态手势动作识别方法。图4中所示的一个或多个处理器403能够执行、实现图3中所示的解析模块10、配置模块20、初始化模块30的功能。
本申请实施例提供的一种控制终端,可实现解析SDK组件的项目文件,从所述项目文件中获取SDK组件的基础参数,根据所述基础参数生成参照文件;接收对SDK组件自定义的初始化信息,若所述自定义的初始化信息满足所述参照文件,根据所述自定义的初始化信息生成配置文件;在进行SDK组件的初始化流程时,读取所述配置文件中的各个SDK组件的初始化信息,基于所述初始化信息依次对相应的SDK组件进行安装,以完成SDK组件的初始化流程。通过提供一种方便、快捷进行SDK组件的接入和初始化的方法,通过解析SDK组件的项目文件,从所述项目文件中获取SDK组件的基础参数,根据所述基础参数生成参照文件,作为对SDK组件的修改的安全限制,然后接收对各个SDK组件自定义的初始化信息,并对所述自定义的初始化信息进行安全检查,若所述自定义的初始化信息满足所述参照文件,则确定所述初始化信息满足安全配置,再根据所述自定义的初始化信息生成配置文件,在对SDK组件进行初始化时,读取所述配置文件中的各个SDK组件的初始化信息,包括确定哪些SDK组件需要参与到初始化流程以及确定不同SDK组件的初始化顺序,再基于所述初始化信息依次对相应的SDK组件进行安装,从而避免改动业务模块的代码来选择相应的SDK组件进行安装,并基于实际的业务需求配置对SDK组件的初始化信息,当参与到初始化流程的SDK组件安装完成后,完成SDK组件的初始化流程,从而简化SDK组件的接入和初始化流程,通过配置文件便可快速对SDK组件的初始化流程进行管理,提高SDK组件初始化的效率,提高APP的启动效率。
本申请实施例提供的控制终端可以实现上述提供的SDK组件的初始化方法的实施例,具体功能实现请参见方法实施例中的说明,在此不再赘述。
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (8)

1.一种SDK组件的初始化方法,其特征在于,包括以下步骤:
解析SDK组件的项目文件;
从所述项目文件中获取SDK组件的基础参数,根据所述基础参数生成参照文件,包括:从所述项目文件中获取SDK组件的基础依赖关系,根据所述基础依赖关系确定SDK组件的安全初始化顺序;根据所述安全初始化顺序生成参照文件;
接收对SDK组件自定义的初始化信息,包括:接收针对于各个SDK组件的自定义的依赖关系;
若所述自定义的初始化信息满足所述参照文件,根据所述自定义的初始化信息生成配置文件,包括:获取对SDK组件自定义的依赖关系;根据所述自定义的依赖关系确定SDK组件自定义的初始化顺序;检验所述自定义的初始化顺序与所述安全初始化顺序是否冲突,若否,确定所述自定义的依赖关系满足所述参照文件;根据所述自定义的依赖关系生成配置文件;
在进行SDK组件的初始化流程时,读取所述配置文件中的各个SDK组件的初始化信息,基于所述初始化信息依次对相应的SDK组件进行安装,以完成SDK组件的初始化流程。
2.根据权利要求1所述的方法,其特征在于,所述接收对SDK组件自定义的初始化信息,若所述自定义的初始化信息满足所述参照文件,根据所述自定义的初始化信息生成配置文件之后,还包括:
配置SDK组件的初始化驱动事件;
根据所述初始化驱动事件更新所述配置文件。
3.根据权利要求2所述的方法,其特征在于,所述基于所述初始化信息依次对相应的SDK组件进行安装,以完成SDK组件的初始化流程,包括:
基于所述初始化信息依次对相应的SDK组件进行安装;
若所述SDK组件无自定义的初始化驱动事件且所述SDK组件处于同层级多线程,将所述SDK组件同步进行安装;
若所述SDK组件具有自定义的初始化驱动事件,在监听到所述驱动事件后,异步执行所述驱动事件对应的SDK组件的安装。
4.根据权利要求1所述的方法,其特征在于,所述接收对SDK组件自定义的初始化信息,若所述自定义的初始化信息满足所述参照文件,根据所述自定义的初始化信息生成配置文件之后,还包括:
配置SDK组件的增加信息及删减信息;
根据所述增加信息及删减信息更新所述配置文件。
5.根据权利要求1所述的方法,其特征在于,所述接收对SDK组件自定义的初始化信息,若所述自定义的初始化信息满足所述参照文件,根据所述自定义的初始化信息生成配置文件之后,还包括:
对所述SDK组件的初始化信息进行插桩,监听所述SDK组件的初始化的开始时间和结束时间;
所述在进行SDK组件的初始化流程时,还包括:
捕获所述SDK组件的初始化的开始时间和结束时间,根据所述开始时间和结束时间生成SDK组件初始化的执行耗时;
输出所述执行耗时。
6.一种SDK组件的初始化装置,其特征在于,包括:
解析模块:用于解析SDK组件的项目文件;从所述项目文件中获取SDK组件的基础参数,根据所述基础参数生成参照文件,包括:从所述项目文件中获取SDK组件的基础依赖关系,根据所述基础依赖关系确定SDK组件的安全初始化顺序;根据所述安全初始化顺序生成参照文件;
配置模块:用于接收对SDK组件自定义的初始化信息,包括:接收针对于各个SDK组件的自定义的依赖关系;若所述自定义的初始化信息满足所述参照文件,根据所述自定义的初始化信息生成配置文件,包括:获取对SDK组件自定义的依赖关系;根据所述自定义的依赖关系确定SDK组件自定义的初始化顺序;检验所述自定义的初始化顺序与所述安全初始化顺序是否冲突,若否,确定所述自定义的依赖关系满足所述参照文件;根据所述自定义的依赖关系生成配置文件;
初始化模块:用于在进行SDK组件的初始化流程时,读取所述配置文件中的各个SDK组件的初始化信息,基于所述初始化信息依次对相应的SDK组件进行安装,以完成SDK组件的初始化流程。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至5任一项所述的SDK组件的初始化方法。
8.一种控制终端,其特征在于,包括:
一个或多个处理器;
存储器;
一个或多个计算机程序,其中所述一个或多个计算机程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个计算机程序配置用于执行根据权利要求1至5任一项所述的SDK组件的初始化方法。
CN202011023809.8A 2020-09-25 2020-09-25 Sdk组件的初始化方法、装置、存储介质及控制终端 Active CN112181388B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011023809.8A CN112181388B (zh) 2020-09-25 2020-09-25 Sdk组件的初始化方法、装置、存储介质及控制终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011023809.8A CN112181388B (zh) 2020-09-25 2020-09-25 Sdk组件的初始化方法、装置、存储介质及控制终端

Publications (2)

Publication Number Publication Date
CN112181388A CN112181388A (zh) 2021-01-05
CN112181388B true CN112181388B (zh) 2024-03-01

Family

ID=73945342

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011023809.8A Active CN112181388B (zh) 2020-09-25 2020-09-25 Sdk组件的初始化方法、装置、存储介质及控制终端

Country Status (1)

Country Link
CN (1) CN112181388B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113190401B (zh) * 2021-04-19 2023-08-25 Oppo广东移动通信有限公司 快游戏的异常监控方法、电子设备、移动终端以及存储介质
CN114637514A (zh) * 2022-03-29 2022-06-17 上海移远通信技术股份有限公司 Sdk的编译方法、装置、终端及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110531985A (zh) * 2019-08-09 2019-12-03 浙江大搜车软件技术有限公司 Sdk初始化方法及系统、电子设备、存储介质
CN111596965A (zh) * 2020-07-22 2020-08-28 太平金融科技服务(上海)有限公司 项目工程初始化方法、装置、计算机设备和存储介质
CN111638906A (zh) * 2020-05-15 2020-09-08 郑州阿帕斯数云信息科技有限公司 一种软件开发工具包sdk接入方法、装置和系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110531985A (zh) * 2019-08-09 2019-12-03 浙江大搜车软件技术有限公司 Sdk初始化方法及系统、电子设备、存储介质
CN111638906A (zh) * 2020-05-15 2020-09-08 郑州阿帕斯数云信息科技有限公司 一种软件开发工具包sdk接入方法、装置和系统
CN111596965A (zh) * 2020-07-22 2020-08-28 太平金融科技服务(上海)有限公司 项目工程初始化方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
CN112181388A (zh) 2021-01-05

Similar Documents

Publication Publication Date Title
CN106339312B (zh) Api测试方法和系统
Heelan et al. Automatic heap layout manipulation for exploitation
US10303490B2 (en) Apparatus and method for optimizing startup of embedded system
CN112181388B (zh) Sdk组件的初始化方法、装置、存储介质及控制终端
CN112099798B (zh) 公有函数执行耗时的统计方法、装置、存储介质及终端
US20180059978A1 (en) Virtual disk expansion method and apparatus
CN111427578B (zh) 一种数据转换方法、装置及设备
CN110442399B (zh) 应用的React Native业务执行方法、装置、存储介质及终端设备
US20110029953A1 (en) System and Method for Scalable Handling of Debug Information
Theelen et al. Model checking of scenario-aware dataflow with CADP
CN108446224B (zh) 移动端上应用程序的性能分析方法、存储介质
CN112882769B (zh) 技能包数据处理方法、装置、计算机设备和存储介质
CN115292201B (zh) 函数调用栈解析和回溯方法与装置
CN111666102A (zh) 文件格式转换方法、芯片验证方法、相关装置及网络芯片
Dorier et al. Supporting task-level fault-tolerance in HPC workflows by launching MPI jobs inside MPI jobs
CN111045891B (zh) 基于java多线程的监控方法、装置、设备以及存储介质
CN113742224A (zh) 测试系统、方法、装置、计算机设备和存储介质
CN111290740B (zh) 应用程序的开发方法、装置、计算机设备和存储介质
CN112527265A (zh) 一种日志自动注入的方法和计算机设备
CN112732367A (zh) 事件流程的处理方法、装置、设备及可读存储介质
CN113407438B (zh) 模块的测试方法、计算机设备和存储介质
US8843897B2 (en) System and method for using an abstract syntax tree to encapsulate the descriptive assertions in an annotation based standard into a code based library
Bergenthum et al. Unfolding semantics of Petri nets based on token flows
CN116700840B (zh) 文件执行方法、装置、电子设备及可读存储介质
Katayama et al. Highly reliable embedded software development using advanced software technologies

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant