CN112748905B - 基础库的初始化调用方法、装置、电子设备及存储介质 - Google Patents

基础库的初始化调用方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN112748905B
CN112748905B CN201911039418.2A CN201911039418A CN112748905B CN 112748905 B CN112748905 B CN 112748905B CN 201911039418 A CN201911039418 A CN 201911039418A CN 112748905 B CN112748905 B CN 112748905B
Authority
CN
China
Prior art keywords
configuration
base library
library
class
file
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
CN201911039418.2A
Other languages
English (en)
Other versions
CN112748905A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201911039418.2A priority Critical patent/CN112748905B/zh
Publication of CN112748905A publication Critical patent/CN112748905A/zh
Application granted granted Critical
Publication of CN112748905B publication Critical patent/CN112748905B/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/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了基础库的初始化调用方法、装置、存储介质及电子设备,所述基础库的初始化调用方法包括获取配置文件;其中,所述配置文件包括多个基础库的配置项;根据所述配置文件确定所述基础库中需要注入的目标基础库,并声明所述目标基础库的依赖;根据所述配置文件中所述目标基础库的配置项生成相应的配置类,并对所述配置类进行初始化调用,本申请能够提高基础库的初始化调用效率。

Description

基础库的初始化调用方法、装置、电子设备及存储介质
技术领域
本申请涉及计算机技术领域,特别涉及基础库的初始化调用方法、装置、一种电子设备及一种存储介质。
背景技术
组件化技术能够减少耦合,实现有效的分工。在进行组件化时,相关技术通常选用硬编码的方式实现基础库的封装和调用。即:当需要接入新的基础库时,需要开发人员手动编写模板代码。但是在实际项目开发中,类似的基础库的数量可以达到几十个,每个基础库的接入都需要开发人员去手动写类似的模板代码,且每次开发新项目都需要重复写类似的模板代码,导致基础库的调用效率较低。
因此,如何提高基础库的初始化调用效率是本领域技术人员目前需要解决的技术问题。
发明内容
本申请的目的是提供基础库的初始化调用方法、基础库的初始化调用装置、电子设备及存储介质,能够提高基础库的初始化调用效率。
为实现上述目的,本申请第一方面的第一种实施方式提供了一种基础库的初始化调用方法,该基础库的初始化调用方法包括:
获取配置文件;其中,所述配置文件包括多个基础库的配置项;
根据所述配置文件确定所述基础库中需要注入的目标基础库,并声明所述目标基础库的依赖;
根据所述配置文件中所述目标基础库的配置项生成相应的配置类,并对所述配置类进行初始化调用。
结合本申请第一方面的第一种实施方式,在本申请第一方面的第二种实施方式中,所述配置项包括功能启用字段,相应的,根据所述配置文件确定所述基础库中需要注入的目标基础库包括:
将所述功能启用字段为true的基础库确定为所述目标基础库。
结合本申请第一方面的第一种实施方式,在本申请第一方面的第三种实施方式中,对所述配置类进行初始化调用之后,还包括:
加载所述目标基础库,以便实现所述目标基础库对应的功能。
结合本申请第一方面的第一种实施方式,在本申请第一方面的第四种实施方式中,声明所述目标基础库的依赖包括:
在依赖文件dependencies中加入compile project(‘:A’)的代码,其中,A为所述目标基础库的名称。
结合本申请第一方面的第一种实施方式,在本申请第一方面的第五种实施方式中,所述配置文件还包括基础库版本号。
结合本申请第一方面的第一种实施方式,在本申请第一方面的第六种实施方式中,还包括:将初始化调用后的配置类作为接入代码添加至目标项目代码中。
结合本申请第一方面的第一种实施方式,在本申请第一方面的第七种实施方式中,还包括:当接收到基础库移除指令时,根据所述基础库移除指令修改所述配置文件,根据修改后的配置文件生成并初始化调用新配置类,以便删除AndroidManifest中的待移除配置信息。
结合本申请第一方面的第一种实施方式,在本申请第一方面的第八种实施方式中,所述配置文件为利用Gradle注册新Extension的方式生成的脚本文件。
结合本申请第一方面的第一种实施方式、第二种实施方式、第三种实施方式、第四种实施方式、第五种实施方式、第六种实施方式、第七种实施方式和第八种实施方式,在本申请第一方面的第九种实施方式中,所述配置项包括配置字段,相应的,根据所述配置文件中所述目标基础库的配置项生成相应的配置类包括:
在所述配置文件中确定所述目标基础库的配置字段和所述配置字段对应的配置值;
基于所述配置字段对应的标准配置代码根据所述配置字段对应的配置值生成所述配置类。
结合本申请第一方面的第九种实施方式,在本申请第一方面的第十种实施方式中,对所述配置类进行初始化调用包括:
在初始化调用类中创建所述配置类,并利用目标函数对所述配置类进行初始化调用。
为实现上述目的,本申请第二方面提供了一种基础库的初始化调用装置,该初始化调用装置包括:
文件获取模块,用于获取配置文件;其中,所述配置文件包括多个基础库的配置项;
基础库确定模块,用于根据所述配置文件确定所述基础库中需要注入的目标基础库,并声明所述目标基础库的依赖;
基础库调用模块,用于根据所述配置文件中所述目标基础库的配置项生成相应的配置类,并对所述配置类进行初始化调用。
为实现上述目的,本申请第三方面提供了一种电子设备,包括:
处理器和存储器;
其中,所述处理器用于执行所述存储器中存储的程序;
所述存储器用于存储程序,所述程序至少用于:
获取配置文件;其中,所述配置文件包括多个基础库的配置项;
根据所述配置文件确定所述基础库中需要注入的目标基础库,并声明所述目标基础库的依赖;
根据所述配置文件中所述目标基础库的配置项生成相应的配置类,并对所述配置类进行初始化调用。
为实现上述目的,本申请第四方面提供了一种存储介质,其上存储有计算机程序,所述计算机程序执行时实现上述基础库的初始化调用方法执行的步骤。
可见,本申请获取的配置文件包括基础库和配置文件,由于配置文件中包括多个基础库的配置项,因此可以根据配置文件中记录的配置项可以确定需要注入的目标基础库,还可以根据目标基础库的配置项生成相应的配置类,以便对目标基础库的配置项进行赋值。在得到目标基础库的配置类之后,本申请通过对配置类进行初始化调用实现目标基础库对应的功能。在上述方式中无需人工重复编写模板代码,可以根据配置文件中的配置项灵活生成对应的配置类进而实现对于基础的初始化调用,可以提高基础库的初始化调用效率。本申请同时还提供了一种基础库的初始化调用装置、一种存储介质和一种电子设备,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例的一种基础库的初始化调用***的一种组成架构示意图;
图2为本申请实施例的一种基础库的初始化调用方法的流程示意图;
图3为本申请实施例的另一种基础库的初始化调用方法的流程示意图;
图4为本申请实施例的一种实际应用中基础库初始化调用方法的流程示意图;
图5为本申请实施例的一种实际应用中基础库初始化调用方法的架构示意图;
图6为本申请实施例所提供的一种基础库的初始化调用装置的结构示意图;
图7为本申请实施例一种电子设备的一种组成结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
相关技术中,主要采用硬编码的方式实现基础库初始化调用,但是在实际项目开发中,往往需要涉及到大量的基础库。若采用硬编码的方式调用基础库需要开发人员去手动写重复度极高的模板代码,导致基础库的调用效率较低。基于上述相关技术中的种种缺陷,本申请通过以下几个实施例提供新的基础库的初始化调用方法,能够提高基础库的初始化调用效率。
为了便于理解本申请的基础库初始化调用方法,下面对于本申请的基础库的初始化调用方法所适用的***进行介绍。参见图1,其示出了本申请实施例的一种基础库的初始化调用***的一种组成架构示意图。
如图1所示,本申请实施例提供的基础库的初始化调用***包括:远程代码数据库10和终端设备20。远程代码数据库10为用于存放代码的远程仓库,远程代码数据库10可以供多个终端设备下载基础库代码。终端设备20可以为用于构建组件化框架的设备,组件化框架中可以包括多个功能模块30各个功能模块可以独立编译和运行,也可以任意组合成另一个新的功能模块。终端设备20与远程代码数据库10之间可以网络实现通信连接。
其中,本实施例中的远程代码数据库10中可以为云端服务器中的数据库,可以为多个客户端提供代码下载服务,本实施例不对远程代码数据库10中的代码数量及种类进行限定,本实施例也可以存在对于远程代码数据库10中的代码进行维护的操作以实现代码的版本更新。终端设备20可以根据实际需求从远程代码数据库10中下载相应的基础库代码,进而实现基础库的初始化调用。终端设备20可以先获取包括基础库和配置文件的配置文件;根据配置文件中记录的配置项确定所有基础库中需要注入的目标基础库,并声明所述目标基础库的依赖;进而根据所述配置文件中所述目标基础库的配置项生成相应的配置类,并对所述配置类进行初始化调用。通过上述方式,终端设备20无需根据需求重复编写调用基础库的代码,而是根据配置文件中的配置项自动生成配置类进而实现对于需要调用的基础库的初始化调用。由此可知,在本申请所提供的实施例中无需人工重复编写模板代码,可以根据配置文件中的配置项灵活生成对应的配置类进而实现对于基础的初始化调用,可以提高基础库的初始化调用效率。
下面对终端设备中基础库的初始化调用过程进行详细介绍,参见图2,其示出了本申请实施例的一种基础库的初始化调用方法的流程示意图,本实施例的方法可以包括以下步骤:
S101:获取配置文件;
其中,本步骤中获取的配置文件中可以包括多个基础库的配置项,即本实施例将多个基础库的依赖统一到了一份配置文件中,根据配置文件可以了解每一个基础库所对应的配置项。例如,对于用于实现下载功能的download基础库来说,其对应的配置项可以包括下载路径、最大线程数和最大下载速度,在配置文件中下载路径、最大线程数和最大下载速度均可以有其对应的值,以便在利用基础库实现下载功能时根据上述三项配置项,调用最大线程数以内的线程以小于或等于最大下载速度的情况下将数据下载至指定的下载路径对应的文件夹中。
可以理解的是,本实施例可以将所有基础库的配置项都写入配置文件中,并在配置文件中记录基础库与配置项的对应关系。在本步骤之前可以存在对配置文件中各个配置项进行赋值的操作,以便实现对于各个基础库的灵活调用和灵活配置。具体的,本实施例中的配置文件为利用Gradle注册新Extension的方式生成的脚本文件,Gradle是一种项目自动化构建开源工具,可以使用基于Groovy的特定领域语言来声明项目设置。
进一步的,本实施例可以设置一份原始配置文件,原始配置文件中可以包括所有可以调用的基础库的配置项,且原始配置文件中所有配置项的值均为默认值。在需要为特定项目进行开发时,可以调用该原始配置文件,并根据实际需求更改原始配置文件中每一配置项的默认值,进而得到S101中所提到的配置文件。作为一种可行的实施方式,由于本实施例无需在本地人工编写基础库的模板代码,因此可以直接调用编译好的基础库。
S102:根据配置文件确定所述基础库中需要注入的目标基础库,并声明目标基础库的依赖;
其中,本步骤的目的在于确定需要启用的目标基础库,每一基础库都可以有其对应的实现功能,因此本实施例确定目标基础库的操作相当于确定需要实现的功能。例如,需要实现网络功能、存储功能和查询功能,则需要将网络功能基础库、存储功能基础库和查询功能基础库作为需要注入的目标基础库,并声明对于目标基础库的依赖。具体的,在实现基础库对应的功能时,还可以为基础库分配与所需要实现的功能相匹配的***权限,例如用于实现下载功能的基础库需要网络访问权限和存储文件权限,可以将对于基础库权限的配置在AndroidManifest.xml文件中进行声明。进一步的,在实现基础库对应的功能时,还可以允许基础库启动特定的后台服务,可以为基础库生成用于启动后台服务的<service>标签。
作为一种可行的实施方式,本实施例中提到的配置文件中可以包括每一基础库设置对应的功能启用字段,用于描述是否启用相应基础库的功能。例如,网络功能基础库的功能启用字段为1则说明网络功能基础库为需要注入的目标基础库,存储功能基础库的功能启用字段为0则说明网络功能基础库不为需要注入的目标基础库,也就是说根据配置文件可以确定当前***需要实现网络功能而不需要实现存储功能。作为另一种可行的实施方式,配置文件中还可以包括基础库启用目录,可以将基础库启用目录中的基础库作为需要注入的目标基础库。需要说明的是,本实施例中提到的基础库注入可以使组件化框架具备基础库对应的功能。
在确定目标基础库之后,本实施例可以添加对于目标基础库的依赖声明,以便可以使用目标基础库。声明所述目标基础库的依赖的具体方法可以为:在依赖文件dependencies中加入compile project(‘:A’)的代码,其中,A为所述目标基础库的名称。例如,当需要对下载功能基础库进行声明时,可以在依赖文件dependencies中加入compileproject(‘:download’)的代码。
S103:根据配置文件中所述目标基础库的配置项生成相应的配置类,并对配置类进行初始化调用。
其中,本步骤的目的在于对目标基础库进行初始化调用,以使***具备目标基础库对应的功能。本步骤建立在对目标基础库进行依赖声明的基础上,需要对目标基础库进行初始化配置,从而保证目标基础库对应功能的正常实现。在确定了目标基础库的基础上,本实施例可以根据配置文件确定每一目标基础库对应的配置项,依据配置项生成相应的配置类并对生成的配置类执行初始化调用操作,以便将配置类赋值到相应的基础库代码中,从而实现了初始化目标基础库,目标基础库的功能可以正常实现。
可见,本实施例获取的配置文件包括基础库和配置文件,由于配置文件中包括多个基础库的配置项,因此可以根据配置文件中记录的配置项可以确定需要注入的目标基础库,还可以根据目标基础库的配置项生成相应的配置类,以便对目标基础库的配置项进行赋值。在得到目标基础库的配置类之后,本实施例通过对配置类进行初始化调用实现目标基础库对应的功能。在上述方式中无需人工重复编写模板代码,可以根据配置文件中的配置项灵活生成对应的配置类进而实现对于基础的初始化调用,可以提高基础库的初始化调用效率。在进行初始化调用之后,可以将初始化调用后的配置类作为接入代码添加至目标项目代码中,进而实现代码的自动化接入。
作为对于图2对应的实施例的进一步介绍,配置文件中的配置项可以包括功能启用字段,具体的在配置文件中可以包括每一基础库对应的功能启用字段,当功能启用字段对应的值为true时,说明该基础功能库为需要注入的目标基础库;当功能启用字段对应的值为false时,说明该功能基础库为不需要注入的目标基础库。相应的,图2对应的实施例中S201根据所述配置文件确定所述基础库中需要注入的目标基础库的操作可以为:将所述功能启用字段为true的基础库确定为所述目标基础库。
举例说明根据配置文件确定目标基础库的实施方式,例如配置文件中的关于Download基础库的配置项可以包括以下配置字段:
UseDownload:true;
Path:sdcard/debug/path;
maxTreadNum:5;
maxSpeedLimit:200;
UseDownload为上文提到的功能启用字段,在上述举例中功能启用字段为true,说明Download基础库为需要注入的目标基础库。进一步的,在其他字段中Path的值用于表示下载数据的存储路径,maxTreadNum的值用于表示最大线程数,maxSpeedLimit的值用于表示最大下载速度。
进一步的,本实施例中配置文件中的配置项还可以包括基础库版本号,为了避免出现调用的基础库版本不一致的情况,本实施例可以检测所有的基础库版本号是否一致,若不一致则生成提示信息,并暂停对于基础库版本号异常的基础库的调用。上述提到的基础库版本号异常指与大多数基础库版本号不一致,例如配置文件中包括100个基础库版本号,其中98个基础库版本号为OS12.3,有两个基础库版本号为OS12.2,此时可以判定基础库版本号为OS12.2存在异常。也就是说,本实施例可以将每一种基础库版本号的数量占所有基础库版本号的比例作为判断是否为异常版本号的依据,若该比例小于预设值则判定该基础库版本号为异常版本号。
作为对于图2对应的实施例的进一步介绍,在对所述配置类进行初始化调用之后,还可以加载所述目标基础库,以便实现所述目标基础库对应的功能。
作为对于图2对应实施例的进一步补充,当接收到基础库移除指令时,根据所述基础库移除指令修改所述配置文件,根据修改后的配置文件生成并初始化调用新配置类,以便删除AndroidManifest中的待移除配置信息。以配置文件中的关于Download基础库的配置项为例,若需要移除Download基础库可以将配置文件中配置字段UseDownload设置为false,并根据修改后的配置文件生成信息配置项,新的配置项进行初始化调用。
参见图3,其示出了本申请实施例的另一种基础库的初始化调用方法的流程示意图,本实施例针对图2对应的实施例中S102和S103的操作的进一步介绍,本实施例的方法可以包括以下步骤:
S201:获取配置文件;
S202:根据配置文件确定基础库中需要注入的目标基础库,并声明目标基础库的依赖;
S203:在配置文件中确定所述目标基础库的配置字段和所述配置字段对应的配置值;
其中,配置文件中可以包括配置字段和配置字段对应的配置值,每一种目标基础库都可以有其对应的配置字段,配置字段对应的配置值相当于目标基础库的配置参数。
例如配置文件中日志基础库的配置字段和配置值可以为包括日志功能启用字段、日志存储路径字段和日志上报字段,日志功能启用字段对应的配置值用于描述是否启用日志功能,日志存储路径字段用于描述日志存储的位置,日志上报字段用于描述日志上报的周期和对象。
S204:基于配置字段对应的标准配置代码根据配置字段对应的配置值生成配置类。
其中,每一配置字段都可以有其对应的标准配置代码,在确定配置字段对应的配置值后可以根据配置值生成相应的配置类,配置类中携带有配置字段的配置值。
S205:在初始化调用类中创建配置类,并利用目标函数对配置类进行初始化调用。
在本步骤中进一步参照之前生成的配置类在初始化调用类中创建相同的配置类,并利用相关函数对配置类进行初始化调用。举例说明上述操作,例如在配置文件app-config.gradle里面配置Log模块的logFilePath为“demo/path”,那么可以生成对应配置类FalcoLogConfig(){this.logFilePath=“demo/path”},以便对logFilePath字段赋值为配置的地址。进一步的,还可以生成初始化调用类AppConfigInitialization,以便对所有接口的初始化做调用,通过将配置类FalcoLogConfig(){this.logFilePath=“demo/path”}给赋值进去,从而初始化了日志功能模块,以便日志功能模块将日志保存到“demo/path”的路径下。通过以上实施方式,可以实现自动化生成对基础库的初始化调用,而且可以让每个项目只需要都拷贝一份文件即可。
下面通过在实际应用中的实施例说明上述实施例描述的流程。参见图4、图5,图4示出了本申请实施例的一种实际应用中基础库初始化调用方法的流程示意图,图5示出了本申请实施例的一种实际应用中基础库初始化调用方法的架构示意图。本实施例先编写AppConfig类,然后向Gradle注册新的Extension,向project的dependencies注入新的基础库依赖。向project注册afterEvaluate实现注解回调接口,解析配置去生成文件。还可以通过回调处理执行GenerateFileTask,以便生成配置文件并进行初始化调用。
本实施例将所有的基础库依赖统一至配置文件app-config.gradle中,配置文件中可以包含了对所有基础库的配置项。例如,Download基础库的配置项中可以包括下载路径、最大线程数和最大下载速度三个配置项,用于实现对下载功能的初始化配置。使用配置文件后,组件化框架使用的Gradle Plugin(一种用于实现模块化构建脚本功能的插件)可以自动实现接管接入的全流程,如果需要迁移到别的组件化框架,也只需要拷贝配置文件到另外一个组件化框架中,移除功能也可以通过移除配置文件来实现。由于组件化框架使用的Gradle Plugin会自动根据配置内容生成对应的接入代码到项目代码中去,本实施例可以不再需要开发人员写任何代码,在AndroidManifest申请任何内容。由于不再需要往项目手动添加任何代码,从而保证了0侵入。接入人员也不再需要关心任何细节内容,只需要把应该传递的和项目相关的配置信息即可。为了实现一份配置文件就可以自动化完成所有接入事情,本实施例实现了自动注入依赖和自动生成初始化逻辑。其中,自动注入依赖指根据写在Gradle里面的配置自动注入依赖,即往工程加多”compile xxx”。自动生成初始化逻辑指根据写在Gradle里面的配置自动生成初始化的代码,同时需要支持扩展添加不同的配置。当然,本实施例中的配置文件还可以是json格式的配置文件,在编译时利用Gradle进行解析,通过JavaPoet的方式生成代码。
具体的,本实施例利用Gradle注册新的Extension的方式来实现基础的的初始化调用:首先生成配置脚本,并根据解析出来的这个配置项,自动注入项目依赖和生产代码。统一基础库的版本号可以由版本字段falcoSdkVersion控制,所有基础库都使用一样的版本号。每个基础库的配置项可以在config=[]里面声明,例如Download基础库存在的三个基础配置项,除此之外还在开头有一个useDownload:true的一行代码,以便表示当前的项目是否需要使用download这个库,如果后面的值为true,则可以自动在编译时帮注入对这个基础库的依赖,从而省去每个模块都需要手动写声明依赖。其余的三个配置段则会在编译时自动生成对应的配置类,然后赋值为对应的字段,最后传递给到初始化接口去。
例如,在配置文件app-config.gradle里面配置Log模块的logFilePath为“demo/path”,那么就会在编译时,自动生成对应配置类,并自动对logFilePath字段赋值为配置的地址。本实施例还可以生成这个AppConfigInitialization类,AppConfigInitialization类可以对所有接口的初始化做调用,把刚才生成的配置类给赋值进去。比如在第14行创建一个新FalcoLogConfig(),然后传递到InitDefalutLog()里面进去,从而初始化了日志功能模块,告诉它把日志保存到“demo/path”的路径下。通过以上流程,可以实现无侵入的自动化生成对基础库的初始化调用问题,而且可以让每个项目只需要都拷贝一份文件即可。
本实施例提供了一个更灵活,更便捷且无侵入解耦的方案,对扩展新的配置和迁移也非常的便捷。通过上述方案可以无需人工重复编写模板代码,也不再需要去关心注入服务和写模板化的接口初始化代码,还可以避免因为基础库升级带来的配置更新同步问题。若需要移除功能,也只需要删除配置文件即可,避免移除功能时存在部分的内容没从项目工程中彻底移除的情况。
请参见图6,图6为本申请实施例所提供的一种基础库的初始化调用装置的结构示意图;
该装置可以包括:
文件获取模块401,用于获取配置文件;其中,所述配置文件包括多个基础库的配置项;
基础库确定模块402,用于根据所述配置文件确定所述基础库中需要注入的目标基础库,并声明所述目标基础库的依赖;
基础库调用模块403,用于根据所述配置文件中所述目标基础库的配置项生成相应的配置类,并对所述配置类进行初始化调用。
可见,本实施例获取的配置文件包括基础库和配置文件,由于配置文件中包括多个基础库的配置项,因此可以根据配置文件中记录的配置项可以确定需要注入的目标基础库,还可以根据目标基础库的配置项生成相应的配置类,以便对目标基础库的配置项进行赋值。在得到目标基础库的配置类之后,本实施例通过对配置类进行初始化调用实现目标基础库对应的功能。在上述方式中无需人工重复编写模板代码,可以根据配置文件中的配置项灵活生成对应的配置类进而实现对于基础的初始化调用,可以提高基础库的初始化调用效率。
进一步的,所述配置项包括功能启用字段;
相应的,基础库确定模块402具体为用于将所述功能启用字段为true的基础库确定为所述目标基础库,并声明所述目标基础库的依赖的模块。
进一步的,还包括:
基础库加载模块,用于加载所述目标基础库,以便实现所述目标基础库对应的功能。
进一步的,还包括:
代码添加模块,用于将初始化调用后的配置类作为接入代码添加至目标项目代码中。
进一步的,还包括:
基础库移除模块,用于当接收到基础库移除指令时,根据所述基础库移除指令修改所述配置文件,根据修改后的配置文件生成并初始化调用新配置类,以便删除AndroidManifest中的待移除配置信息。
进一步的,所述配置文件为利用Gradle注册新Extension的方式生成的脚本文件。
进一步的,基础库确定模块402包括:
目标基础库确定单元,用于根据所述配置文件确定所述基础库中需要注入的目标基础库
依赖声明单元,用于在依赖文件dependencies中加入compile project(‘:A’)的代码,其中,A为所述目标基础库的名称。
进一步的,所述配置文件还包括基础库版本号。
进一步的,所述配置项包括配置字段;
相应的,基础库调用模块403:
配置信息确定单元,用于在所述配置文件中确定所述目标基础库的配置字段和所述配置字段对应的配置值;
配置类生成单元,用于基于所述配置字段对应的标准配置代码根据所述配置字段对应的配置值生成所述配置类;
初始化调用单元,用于在初始化调用类中创建所述配置类,并利用目标函数对所述配置类进行初始化调用。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
另一方面,本申请还提供了一种电子设备,如参见图7,其示出了本申请实施例一种电子设备的一种组成结构示意图,本实施例的电子设备2100可以包括:处理器2101和存储器2102。
可选的,该服务器还可以包括通信接口2103、输入单元2104和显示器2105和通信总线2106。
处理器2101、存储器2102、通信接口2103、输入单元2104、显示器2105、均通过通信总线2106完成相互间的通信。
在本申请实施例中,该处理器2101,可以为中央处理器(Central ProcessingUnit,CPU),特定应用集成电路,数字信号处理器、现成可编程门阵列或者其他可编程逻辑器件等。
该处理器可以调用存储器2102中存储的程序。具体的,处理器可以执行以下基础库的初始化调用方法的实施例中服务器侧所执行的操作。
存储器2102中用于存放一个或者一个以上程序,程序可以包括程序代码,所述程序代码包括计算机操作指令,在本申请实施例中,该存储器中至少存储有用于实现以下功能的程序:
获取配置文件;其中,所述配置文件包括多个基础库的配置项;
根据所述配置文件确定所述基础库中需要注入的目标基础库,并声明所述目标基础库的依赖;
根据所述配置文件中所述目标基础库的配置项生成相应的配置类,并对所述配置类进行初始化调用。
可见,本实施例获取的配置文件包括基础库和配置文件,由于配置文件中包括多个基础库的配置项,因此可以根据配置文件中记录的配置项可以确定需要注入的目标基础库,还可以根据目标基础库的配置项生成相应的配置类,以便对目标基础库的配置项进行赋值。在得到目标基础库的配置类之后,本实施例通过对配置类进行初始化调用实现目标基础库对应的功能。在上述方式中无需人工重复编写模板代码,可以根据配置文件中的配置项灵活生成对应的配置类进而实现对于基础的初始化调用,可以提高基础库的初始化调用效率。
在一种可能的实现方式中,该存储器2102可包括存储程序区和存储数据区,其中,存储程序区可存储操作***、以及至少一个功能(比如话题检测功能等)所需的应用程序等;存储数据区可存储根据计算机的使用过程中所创建的数据。
此外,存储器2102可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件或其他易失性固态存储器件。
该通信接口2103可以为通信模块的接口,如GSM模块的接口。
本申请还可以包括输入单元2104和显示器2105等等。
当然,图7所示的电子设备的结构并不构成对本申请实施例中电子设备的限定,在实际应用中服务器可以包括比图7所示的更多或更少的部件,或者组合某些部件。
另一方面,本申请实施例还提供了一种存储介质,该存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,用于实现如上任意一个实施例中所描述的基础库的初始化调用方法。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (16)

1.一种基础库的初始化调用方法,其特征在于,包括:
获取配置文件;其中,所述配置文件包括多个基础库的配置项,所述配置项包括配置字段;
根据所述配置文件确定所述基础库中需要注入的目标基础库,并声明所述目标基础库的依赖;
在所述配置文件中确定所述目标基础库的配置字段和所述配置字段对应的配置值;
基于所述配置字段对应的标准配置代码,根据所述配置字段对应的配置值生成配置类;
在初始化调用类中创建所述配置类,并利用目标函数对所述配置类进行初始化调用,以将初始化调用后的配置类作为接入代码添加至目标项目代码,实现代码的自动化接入。
2.根据权利要求1所述初始化调用方法,其特征在于,所述配置项包括功能启用字段,相应的,根据所述配置文件确定所述基础库中需要注入的目标基础库包括:
将所述功能启用字段为true的基础库确定为所述目标基础库。
3.根据权利要求1所述初始化调用方法,其特征在于,对所述配置类进行初始化调用之后,还包括:
加载所述目标基础库,以便实现所述目标基础库对应的功能。
4.根据权利要求1所述初始化调用方法,其特征在于,声明所述目标基础库的依赖包括:
在依赖文件dependencies中加入compile project(‘:A’)的代码,其中,A为所述目标基础库的名称。
5.根据权利要求1所述初始化调用方法,其特征在于,所述配置文件还包括基础库版本号。
6.根据权利要求1所述初始化调用方法,其特征在于,还包括:
当接收到基础库移除指令时,根据所述基础库移除指令修改所述配置文件,根据修改后的配置文件生成并初始化调用新配置类,以便删除AndroidManifest中的待移除配置信息。
7.根据权利要求1所述初始化调用方法,其特征在于,所述配置文件为利用Gradle注册新Extension的方式生成的脚本文件。
8.一种基础库的初始化调用装置,其特征在于,包括:
文件获取模块,用于获取配置文件;其中,所述配置文件包括多个基础库的配置项,所述配置项包括配置字段;
基础库确定模块,用于根据所述配置文件确定所述基础库中需要注入的目标基础库,并声明所述目标基础库的依赖;
基础库调用模块,用于在所述配置文件中确定所述目标基础库的配置字段和所述配置字段对应的配置值;基于所述配置字段对应的标准配置代码,根据所述配置字段对应的配置值生成配置类;在初始化调用类中创建所述配置类,并利用目标函数对所述配置类进行初始化调用,以将初始化调用后的配置类作为接入代码添加至目标项目代码,实现代码的自动化接入。
9.根据权利要求8所述的装置,其特征在于,所述配置项包括功能启用字段,所述基础库确定模块,具体用于将所述功能启用字段为true的基础库确定为所述目标基础库。
10.根据权利要求8所述的装置,其特征在于,所述装置还包括:
基础库加载模块,用于加载所述目标基础库,以便实现所述目标基础库对应的功能。
11.根据权利要求8所述的装置,其特征在于,所述基础库确定模块包括
目标基础库确定单元,用于根据所述配置文件确定所述基础库中需要注入的目标基础库;
依赖声明单元,用于在依赖文件dependencies中加入compile project(‘:A’)的代码,其中,A为所述目标基础库的名称。
12.根据权利要求8所述的装置,其特征在于,所述配置文件还包括基础库版本号。
13.根据权利要求8所述的装置,其特征在于,所述装置还包括:
基础库移除模块,用于当接收到基础库移除指令时,根据所述基础库移除指令修改所述配置文件,根据修改后的配置文件生成并初始化调用新配置类,以便删除AndroidManifest中的待移除配置信息。
14.根据权利要求8所述的装置,其特征在于,所述配置文件为利用Gradle注册新Extension的方式生成的脚本文件。
15.一种电子设备,其特征在于,包括:
处理器和存储器;
其中,所述处理器用于执行所述存储器中存储的程序;
所述存储器用于存储程序,所述程序至少用于:
获取配置文件;其中,所述配置文件包括多个基础库的配置项,所述配置项包括配置字段;
根据所述配置文件确定所述基础库中需要注入的目标基础库,并声明所述目标基础库的依赖;
在所述配置文件中确定所述目标基础库的配置字段和所述配置字段对应的配置值;
基于所述配置字段对应的标准配置代码,根据所述配置字段对应的配置值生成配置类;
在初始化调用类中创建所述配置类,并利用目标函数对所述配置类进行初始化调用,以将初始化调用后的配置类作为接入代码添加至目标项目代码,实现代码的自动化接入。
16.一种存储介质,其特征在于,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上权利要求1至7任一项所述基础库的初始化调用方法的步骤。
CN201911039418.2A 2019-10-29 2019-10-29 基础库的初始化调用方法、装置、电子设备及存储介质 Active CN112748905B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911039418.2A CN112748905B (zh) 2019-10-29 2019-10-29 基础库的初始化调用方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911039418.2A CN112748905B (zh) 2019-10-29 2019-10-29 基础库的初始化调用方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN112748905A CN112748905A (zh) 2021-05-04
CN112748905B true CN112748905B (zh) 2023-12-08

Family

ID=75640130

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911039418.2A Active CN112748905B (zh) 2019-10-29 2019-10-29 基础库的初始化调用方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN112748905B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114154026B (zh) * 2021-11-12 2024-07-02 北京达佳互联信息技术有限公司 数据处理方法、装置、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090125879A1 (en) * 2005-09-15 2009-05-14 Miloushev Vladimir I Apparatus, Method and System for Building Software by Composition
CN103544005A (zh) * 2013-09-10 2014-01-29 Tcl集团股份有限公司 一种Android自定义控件的扩展开发方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090125879A1 (en) * 2005-09-15 2009-05-14 Miloushev Vladimir I Apparatus, Method and System for Building Software by Composition
CN103544005A (zh) * 2013-09-10 2014-01-29 Tcl集团股份有限公司 一种Android自定义控件的扩展开发方法及装置

Also Published As

Publication number Publication date
CN112748905A (zh) 2021-05-04

Similar Documents

Publication Publication Date Title
US11853774B2 (en) Dynamically loaded plugin architecture
CN108027722B (zh) 在编译和部署中动态更新应用
US10146515B1 (en) Live code updates
CN108319460B (zh) 应用程序安装包的生成方法、装置、电子设备及存储介质
US10331425B2 (en) Automated source code adaption to inject features between platform versions
US8381176B1 (en) Software build orchestration framework
US11113050B2 (en) Application architecture generation
JP2005293578A (ja) 属性を介して制御されるテストケース継承
CN112379940B (zh) 一种可执行文件处理方法、装置、电子设备及存储介质
EP3447635A1 (en) Application architecture generation
CN111176722A (zh) 第三方库的文件版本检测方法、装置及存储介质
CN104346206A (zh) 一种已卸载软件恢复安装的方法和***
CN108694049B (zh) 一种更新软件的方法和设备
CN108132832B (zh) 应用程序启动方法和装置
CN112748905B (zh) 基础库的初始化调用方法、装置、电子设备及存储介质
CN117707543A (zh) 一种应用安装包制作和安装方法、计算设备及存储介质
CN107092472B (zh) 一种动态发布方法及设备
CN110647326B (zh) 基于NuGet程序包的软件复用方法、装置及***
CN110851117B (zh) 一键导入静态库到项目的方法、存储介质
CN114490103A (zh) 一种操作***接口调用方法、装置以及电子设备
CN114860202A (zh) 项目运行方法、装置、服务器及存储介质
CN113032004B (zh) 在开发环境中管理开发作业的方法、设备和程序产品
Golemon Extending and Embedding PHP
CN113050950A (zh) 应用程序开发方法、装置、电子设备及机器可读存储介质
CN111625225A (zh) 一种程序指定数据输出方法和装置

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