CN112433719A - 应用程序的编译方法、装置、电子设备及存储介质 - Google Patents

应用程序的编译方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN112433719A
CN112433719A CN202011324517.8A CN202011324517A CN112433719A CN 112433719 A CN112433719 A CN 112433719A CN 202011324517 A CN202011324517 A CN 202011324517A CN 112433719 A CN112433719 A CN 112433719A
Authority
CN
China
Prior art keywords
compiling
component
dependency
dependency relationship
target
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.)
Granted
Application number
CN202011324517.8A
Other languages
English (en)
Other versions
CN112433719B (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 CN202011324517.8A priority Critical patent/CN112433719B/zh
Publication of CN112433719A publication Critical patent/CN112433719A/zh
Application granted granted Critical
Publication of CN112433719B publication Critical patent/CN112433719B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • 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)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例提供了一种应用程序的编译方法、装置、电子设备及存储介质,涉及应用程序的编译技术领域。该方法包括以下步骤:在对应用程序编译前,对选定的业务组件添加编译插件,生成编译组件;接收针对目标编译组件的编译指令,并启动对所述目标编译组件的编译流程,获取所述目标编译组件存在依赖关系的业务组件及其第一依赖关系;根据预设的依赖配置文件中的第二依赖关系对所述第一依赖关系进行匹配检查;当所述第一依赖关系与所述第二依赖关系不匹配时,发出编译报错提示信息;否则继续进行编译。本申请的技术方案能够提供应用程序的编译速度和降低组件的复用难度的目的。

Description

应用程序的编译方法、装置、电子设备及存储介质
技术领域
本申请实施例涉及应用程序的编译技术领域,具体而言,本申请实施例涉及应用程序的编译方法、装置、电子设备及存储介质。
背景技术
目前应用程序一般是采样组件化工程架构的形式进行编译,尤其是基于安卓系统的应用程序的编译,其具体的编译方式可以是先根据待实现的业务功能形成对应的业务组件,然后根据应用程序操作时的数据交互逻辑,将目标业务组件与其他业务组件建立依赖关系,完成对该目标业务组件的编译过程。
但是,目前的应用程序的编译方法一般是直接将目标业务组件与其他业务组件进行调用。可参照图1,图1为现有技术中应用程序的编译操作中所涉及的业务组件之间的依赖关系示意图,如图1中的业务组件1依赖业务组件2,业务组件1依赖业务组件3,业务组件3依赖业务组件2。那么,对于业务组件2而言,其既包括与业务组件1建立依赖关系,也包括其与已与业务组件1建立依赖关系的业务组件3建立依赖关系。而且,业务组件2与其他业务组件的多个依赖关系实质是涉及关联的业务组件的代码的调用。
如上述的编译过程的进行,越来越多业务组件与其他业务组件进行形成了调用关系,使得整个应用程序的各个业务组件之间的依赖关系混乱,导致编译速度也越来越慢;而且,经过调用的业务组件由于依赖关系混乱,而难以再次提取进行复用,从而在一定程度上破坏了应用程序的组件化工程架构。
发明内容
为了能够解决在应用程序的编译方法所形成的编译速度慢,业务组件难以复用的问题,本申请实施例提供了一种应用程序的编译方法、装置、电子设备及存储介质。
第一方面,本申请实施例提供了一种应用程序的编译方法,该方法包括以下步骤:
在对应用程序编译前,对选定的业务组件添加编译插件,生成编译组件;其中,所述编译插件用于将所述业务组件转化成可依赖配置的编译组件;
接收针对目标编译组件的编译指令,并启动对所述目标编译组件的编译流程,获取所述目标编译组件存在依赖关系的业务组件及其第一依赖关系;
根据预设的依赖配置文件中的第二依赖关系对所述第一依赖关系进行匹配检查;其中,所述第二依赖关系包括对所述目标编译组件与所述业务组件之间自定义的依赖关系;
当所述第一依赖关系与所述第二依赖关系不匹配时,发出编译报错提示信息;否则继续进行编译。
在第一方面的可选实施例中,所述启动对所述目标编译组件的编译流程的步骤,包括:针对所述目标编译组件设置相互隔离的接口模块和实现模块;
其中,所述接口模块用于存储所述编译组件对应的接口代码;所述实现模块用于编写所述编译组件的实现代码。
在第一方面的可选实施例中,所述第二依赖关系包括所述目标编译组件依赖所述业务组件的第二依赖顺序;
所述获取所述目标编译组件存在依赖关系的业务组件及其第一依赖关系的步骤,包括:
获取与所述目标编译组件存在依赖关系的业务组件,以及所述目标编译组件与所述业务组件的第一依赖顺序;
所述根据预设的依赖配置文件中的第二依赖关系对所述第一依赖关系进行匹配检查的步骤,包括:
根据所述第二依赖顺序,对所述目标编译组件与所述业务组件之间的第一依赖顺序进行匹配检查。
在第一方面的可选实施例中,所述第二依赖关系包括针所述目标编译组件依赖其接口代码与所述业务组件进行依赖配置的第二依赖基础;
所述获取所述目标编译组件存在依赖关系的业务组件及其第一依赖关系的步骤,还包括:
获取所述目标编译组件与其存在依赖关系的业务组件之间的第一依赖基础;
所述根据预设的依赖配置文件中的第二依赖关系对所述第一依赖关系进行匹配检查的步骤,包括:
根据所述第二依赖基础,对所述目标编译组件与所述业务组件之间的第一依赖基础进行匹配检查。
在第一方面的可选实施例中,所述根据预设的依赖配置文件中的第二依赖关系对所述第一依赖关系进行匹配检查的步骤之前,还包括:
接收用户对所述目标编译组件与所述业务组件的第一依赖关系的更新信息。
在第一方面的可选实施例中,所述应用程序的编译方法,还包括:
获取所述目标编译组件和与其存在依赖关系的其他编译组件,以及所述目标编译组件与其他编译组件的第三依赖关系;
根据所述依赖配置文件中的编译组件依赖关系对所述第三依赖关系进行匹配检查;其中,所述编译组件依赖关系包括编译组件之间以其中的依赖组件的接口代码作为依赖被依赖组件的依赖基础;
当所述第三依赖关系与所述编译组件依赖关系不匹配时,发出编译报错提示信息。
在第一方面的可选实施例中,所述应用程序的编译方法,还包括:
获取所选取的编译组件或业务组件分别与应用程序的第四依赖关系;
根据所述依赖配置文件中的应用程序依赖关系对所述第四依赖关系进行匹配检查;其中,所述应用程序依赖关系包括应用程序分别至编译组件或业务组件进行依赖配置的依赖顺序;
当所述第四依赖关系与所述应用程序依赖关系不匹配时,发出编译报错提示信息。
第二方面,本申请还提供一种应用程序的编译装置,其包括:
编译组件生成模块,用于在对应用程序编译前,对选定的业务组件添加编译插件,生成编译组件;其中,所述编译插件用于将所述业务组件转化成可依赖配置的编译组件;
依赖关系获取模块,用于接收针对目标编译组件的编译指令,并启动对所述目标编译组件的编译流程,获取所述目标编译组件存在依赖关系的业务组件及其第一依赖关系;
匹配检查模块,用于根据预设的依赖配置文件中的第二依赖关系对所述第一依赖关系进行匹配检查;其中,所述第二依赖关系包括对所述目标编译组件与所述业务组件之间自定义的依赖关系;
报错提示模块,用于当所述第一依赖关系与所述第二依赖关系不匹配时,发出编译报错提示信息;否则继续进行编译。
第三方面,提供了一种电子设备,该电子设备包括:
一个或多个处理器;
存储器;
一个或多个应用程序,其中一个或多个应用程序被存储在存储器中并被配置为由一个或多个处理器执行,一个或多个程序配置用于:执行实现本申请实施例的第一方面所提供的应用程序的编译方法。
第四方面,提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,其特征在于,该程序被处理器执行时实现本申请实施例第一方面所提供的应用程序的编译方法。
本申请实施例提供的技术方案带来的有益效果是:
在本申请实施例所提供的应用程序的编译方案,对应用程序的编译之前,通过对需要选定进行编译的业务组件添加编译插件,得到可依赖配置的编译组件;利用预设的依赖配置文件对目标编译组件与业务组件的依赖关系进行配置,进一步对目标编译组件与业务组件当前的依赖关系进行匹配检查,根据匹配检查的结果控制编译过程,目标编译组件与业务组件之间的依赖关系依据预设的第二依赖关系,使得编译过程中目标编译组件与业务组件必须依据设定的依赖约束,从而改变了现有技术中业务组件之间的依赖关系混乱,导致编译速度越来越慢的问题。而且,根据预设的依赖配置对目标编译组件与业务组件建立的第一依赖关系进行匹配,得到符合该预设的依赖配置的第一依赖关系,使得目标编译组件与业务组件之间的依赖关系是清晰的,从而更容易在后续的编译中进行复用。
本申请实施例附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本申请实施例的实践了解到。
附图说明
本申请实施例上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为现有技术中应用程序的编译操作中所涉及的业务组件之间的依赖关系示意图;
图2为本申请公开的实施例所提供的应用程序的编译方法的流程示意图;
图3为本申请所提供的应用程序的编译方法所提供的依赖配置文件的依赖配置示意图;
图4为本申请公开的实施例所提供的应用程序的编译装置400的结构示意图;
图5为本申请一个实施例所提供的一种应用程序的编译的电子设备的结构示意图。
具体实施方式
下面详细描述本申请的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
为了克服如图1所示的现有的应用程序的编译方法的业务组件之间直接调用所导致的依赖关系混乱所导致的编译速度越来越慢,且难以复用的技术问题,本申请提供了一种应用程序的编译方法。
参照图2,图2为本申请公开的实施例所提供的应用程序的编译方法的流程示意图。该应用程序的编译方法包括以下步骤:
S210、在对应用程序编译前,对选定的业务组件添加编译插件,生成编译组件;其中,所述编译插件用于将所述业务组件转化成可依赖配置的编译组件。
在本申请所提供的编译方法所涉及的实施例中,在编译之前,选定需要编译的业务组件,添加编译插件后生成对应的编译组件。该选定的需要编译的业务组件可以是需要经常调用的业务组件。该编译插件是用于将该业务组件转化为可依赖配置的编译组件。添加了编译插件所形成的编译组件具有可依赖配置的属性,能够与依赖配置文件中对编译组件的依赖配置进行匹配。
在本实施例中,该依赖配置文件是基于gradle编译框架所预设的。基于该gradle编译框架对业务组件的属性进行了自定义。在现有的gradle编译框架中,业务组件大多通过kroute路由或者相互依赖直接接口调用,从而导致依赖关系混乱所引起的编译速度越来越慢,且难以复用的技术问题。
在本实施例中,通过对选定的业务组件添加编译插件转化成编译组件,能够依据预设的依赖配置文件中所设定的依赖配置方式与组件的依赖关系进行依赖配置,有助于避免现有技术中业务组件之间依赖关系混乱的问题。
S220、接收针对目标编译组件的编译指令,并启动对所述目标编译组件的编译流程,获取所述目标编译组件存在依赖关系的业务组件及其第一依赖关系。
基于上述步骤S210在编译之前对所选定业务组件转化得到的编译组件,能够进行涉及该编译组件的编译执行。用户进行编译的过程中,选定一编译组件作为编译对象,在本实施例中,把该编译对象命名为目标编译组件。当用户通过终端选定该目标编译组件时,针对该目标编译组件生成编译指令,终端接收并根据该编译指令,启动对该目标编译组件的编译流程。在该编译流程启动之前,该目标编译组件已与其他组件,如某业务组件建立了依赖关系。终端根据上述的编译指令启动编译流程后,获取该目标编译组件当前与存在依赖关系的业务组件,以及该目标编译组件与该业务组件所建立的第一依赖关系。
S230、根据预设的依赖配置文件中的第二依赖关系对所述第一依赖关系进行匹配检查;其中,所述第二依赖关系包括对所述目标编译组件与所述业务组件之间自定义的依赖关系。
参照图3,图3为本申请所提供的应用程序的编译方法所提供的依赖配置文件的依赖配置示意图。
参照图3得到,在本实施例中,在所述依赖配置文件中,对应用程序的编译过程中的各个组件之间,以及组件与应用程序之间的依赖关系进行了预先配置。其中,包括目标编译组件与业务组件之间自定义的依赖关系。在本实施例中,将该依赖配置文件所预设的关于目标编译组件与业务组件进行依赖配置的依赖关系设定为第二依赖关系。根据步骤S220获取所述第一依赖关系后,利用该依赖配置文件中的第二依赖关系对该第一依赖关系进行匹配检查,以便确认该目标编译组件与业务组件之间的依赖关系是否与第二依赖关系所设定的一致。
S240、当所述第一依赖关系与所述第二依赖关系不匹配时,发出编译报错提示信息;否则继续进行编译。
根据步骤S230匹配检查后,若得到该第一依赖关系与第二依赖关系不匹配时,中止当前的编译过程,并触发报错提示,终端根据该触发报错提示生成编译报错提示信息,并推送至终端的显示设备。这时,编译过程则无法继续进行。
如果根据步骤S230匹配成功,则继续进行编译。
在本申请中,对应用程序的编译之前,通过对需要选定进行编译的业务组件添加编译插件,得到可依赖配置的编译组件;利用预设的依赖配置文件对目标编译组件与业务组件的依赖关系进行配置,进一步对目标编译组件与业务组件当前的依赖关系进行匹配检查,根据匹配检查的结果控制编译过程,目标编译组件与业务组件之间的依赖关系依据预设的第二依赖关系,使得编译过程中目标编译组件与业务组件必须依据设定的依赖约束,从而改变了现有技术中业务组件之间的依赖关系混乱,导致编译速度越来越慢的问题。而且,根据预设的依赖配置对目标编译组件与业务组件建立的第一依赖关系进行匹配,得到符合该预设的依赖配置的第一依赖关系,使得目标编译组件与业务组件之间的依赖关系是清晰的,从而更容易在后续的编译中进行复用。
在上述所提供的实施例的基础上,步骤S220启动对所述目标编译组件的编译流程的步骤,包括:针对所述目标编译组件设置相互隔离的接口模块和实现模块。
参照图3,所述接口模块和实现模块是针对该目标编译组件的代码所建立的存储模块。具体地,所述接口模块用于存储所述编译组件对应的接口代码;所述实现模块用于编写所述编译组件的实现代码。该目标编译组件生成后,对应设置接口模块和实现模块,两者是相互独立的代码执行文件。例如,若通过目标编译组件的接口模块与业务组件建立依赖关系时,则根据该依赖关系的执行中,不会调用该实现模块。
对接口模块和实现模块的设置包括:通过该接口模块录入接口代码,并保存;通过该实现模块录入实现代码,并保存。在编译过程中,根据业务功能和数据交互需要,与业务组件建立依赖关系。
在本申请所涉及的实施例所提供的依赖关系,无论是依赖配置文件中所设定的第二依赖关系,还是目标编译组件与业务组件之间所建立的第一依赖关系,或者是其他组件之间的依赖关系、以及组件与应用程序之间的依赖关系,均包括依赖顺序和依赖基础。该依赖顺序是依赖组件依赖于被依赖组件的顺序;该依赖基础关于该依赖组件依赖于被依赖组件的依据,即依赖组件与被依赖组件建立依赖关系的因素。
根据上述对于依赖关系的说明,本申请的实施例中所提供的依赖配置文件中的第二依赖关系包括:目标编译组件依赖所述业务组件的第二依赖顺序。在本实施例中,如图3所示的连接目标编译组件与业务组件1之间的箭头指向方向为本实施例所述的第二依赖顺序。
在此基础上,步骤S220中的获取所述目标编译组件存在依赖关系的业务组件及其第一依赖关系的步骤,能够进一步包括:
获取与所述目标编译组件存在依赖关系的业务组件,以及所述目标编译组件与所述业务组件的第一依赖顺序。在本实施例中,该第一依赖顺序是指目标编译组件与存在依赖配置的业务组件的依赖与被依赖的关系。
在此基础上,步骤S230包括:根据所述第二依赖顺序,对所述目标编译组件与所述业务组件之间的第一依赖顺序进行匹配检查。
在本实施例中,在依赖配置文件中预设目标编译组件与存在依赖配置的业务组件的第二依赖顺序为目标编译组件依赖业务组件,即只能是该业务组件调用目标编译组件,具体为只能业务组件的代码调用目标编译组件的代码。
若存在业务组件依赖目标编译组件,即目标编译组件调用业务组件,则与设定的第二依赖顺序相反,得到的匹配检查的结果为失败,并根据该匹配检查为失败的信息,终端中止当前目标编译组件的编译操作。
若上述的匹配结果为成功时,则继续以第二依赖关系中的第二依赖基础对第一依赖基础进行进一步的匹配检查。
上述的第二依赖关系还包括针对目标编译组件依赖其接口代码与所述业务组件进行依赖配置的第二依赖基础。该第二依赖基础即是目标编译组件的接口代码,该目标编译组件通过其接口代码依赖该业务组件。
再次参照图3,图中的目标编译组件与业务组件是通过目标编译组件的接口模块中的接口代码建立依赖关系的。而该目标编译组件的接口模块中的接口代码则是本实施例中的第二依赖基础。
在本实施例中,该目标编译组件的接口代码与实现代码分别存储在两个相互独立的接口模块和实现模块中。在gradle编译框架下,该接口模块和实现模块相当于两个相互独立的执行文件,该两个执行文件相互隔离。即根据该接口模块和实现模块的设置,若目标编译组件调用接口模块和实现模块依赖业务组件,只能选择接口模块或实现模块,不存在同时调用或先后调用接口模块或实现模块,依赖该业务组件。
上述步骤S220中的所述获取所述目标编译组件存在依赖配置的业务组件及其第一依赖关系的步骤,还包括:获取所述目标编译组件与其存在依赖配置的业务组件之间的第一依赖基础。
在该步骤中,具体是判断依赖组件是通过哪一元素依赖被依赖组件。根据上述与第二依赖顺序匹配成功的第一依赖顺序而言,确定目标编译组件依赖业务组件。在该步骤中,进一步获取该目标编译组件是通过哪一元素依赖业务组件。在当前的依赖关系中,该第一依赖基础可能是目标编译组件的接口代码,或者是实现代码,或者是其他执行代码。
上述步骤S230在本实施例中,能够进一步包括:根据所述第二依赖基础,对所述目标编译组件与所述业务组件之间的第一依赖基础进行匹配检查。在该步骤中,检查该目标编译组件是否通过其接口代码依赖业务组件的。如果是,则匹配成功,编译过程能够继续进行。否则,当前的编译过程中止。
在该步骤中,对于匹配不成功可能存在以下情况:目标编译组件的接口代码与实现代码存储于同一模块中,两者不是处于隔离的状态,通过某执行代码依赖业务组件时,该实现代码被同时调用,与业务组件建立依赖关系;或者是调用错误,直接通过目标编译组件的实现代码依赖业务组件。上述的情况,均不符合第二依赖顺序的依赖配置。
根据上述对步骤中对目标编译组件与业务组件的第一依赖关系,包括第一依赖顺序和/或第一依赖基础所匹配检查得到的匹配结果为不成功,当用户根据报错提示信息对目标编译组件与业务组件的第一依赖关系进行更新操作,生成第一依赖关系的更新信息,此时终端接收用户对第一依赖关系的更新信息。将该更新的第一依赖关系与依赖配置文件中的第二依赖关系再次进行匹配检查。
根据本申请中,对目标编译组件进行接口模块与实现模块的相互隔离设置,对于能够根据该第二依赖关系匹配得到对应的第一依赖关系。该目标编译组件通过其接口代码依赖其他编译组件的过程中,该实现代码不被使用,从而使得目标编译组件与其他编译组件之间的依赖只通过该接口代码实现,得到目标编译组件与业务组件所建立的依赖关系清楚,且无需如现有技术中组件之间的直接依赖需调用大量的代码,使得目标编译组件只通过其接口代码实现与其他编译组件实现依赖,避免了现有技术中组件之间的直接依赖需调用大量的代码,摆脱了依赖关系中所带来的代码的历史负担,使得目标编译组件在后续的编译操作中,容易进行复用。
在本申请中,该目标编译组件除了能够与业务组件建立依赖关系以外,也能够与其他编译组件建立依赖关系。在对该目标编译组件进行匹配检查之前,还包括:获取所述目标编译组件和与其存在依赖关系的其他编译组件,以及所述目标编译组件与其他编译组件的第三依赖关系。
根据图3所示,本申请所提供的依赖配置文件还包括对编译组件之间的依赖配置,即目标编译组件与其他编译组件之间的箭头指向方向为本实施例所述的第三依赖顺序。在本实施例中将该依赖配置命名为编译组件依赖关系。具体地,存在依赖关系的编译组件包括依赖组件和被依赖组件。本实施例的依赖配置文件设定以该依赖组件的接口代码作为依赖该被依赖组件的依赖基础,即依赖组件是通过调用其接口代码依赖该被依赖组件。本实施例中的依赖组件作为目标编译组件。
参照图3,根据依赖配置文件的依赖配置,业务组件1、2之间能够直接形成相互依赖关系。
根据上述依赖配置的编译组件依赖关系对第三依赖关系进行匹配检查。针对第三依赖关系的匹配检查,得到该目标编译组件依赖其他编译组件所调用的代码。根据对该所调用的代码的属性或进行模拟执行,确认该调用的代码是否为该目标编译组件的接口代码,即确认该目标编译组件与其他编译组件的第三依赖关系的依赖基础是否为目标编译组件的接口代码。
在获取所述目标编译组件与其他编译组件的第三依赖关系之前,若没有明确目标编译组件。那么根据组件的属性,得到存在依赖关系的至少两个编译组件。根据编译组件之间的依赖顺序得到依赖组件,将该依赖组件作为目标编译组件。
当匹配检查不成功时,中止当前的编译操作,并发出编译报错提醒信息,提示用户进行对编译组件之间的依赖关系进行更新。当对该第三依赖关系更新后,终端根据依赖配置的编译组件依赖关系,对更新后的第三依赖关系进行匹配检查。
根据本申请中,对目标编译组件进行接口模块与实现模块的相互隔离设置,对于能够与该编译组件依赖关系匹配成功的第三依赖关系,该目标编译组件通过其接口代码依赖其他编译组件的过程中,该实现代码不被使用,从而使得目标编译组件与其他编译组件之间的依赖只通过该接口代码实现,得到目标编译组件与其他编译组件的调用过程中,其依赖关系清楚,且无需如现有技术中组件之间的直接依赖需调用大量的代码,使得目标编译组件只通过其接口代码实现与其他编译组件实现依赖,避免了现有技术中组件之间的直接依赖需调用大量的代码,摆脱了依赖关系中所带来的代码的历史负担,使得目标编译组件在后续的编译操作中,容易进行复用。
在本申请所提供的实施例中,还能够包括对编译组件和业务组件分别应用程序之间的依赖关系进行匹配检查。该匹配检查的具体执行步骤包括:
获取所选取的编译组件或业务组件分别与应用程序的第四依赖关系;
根据所述依赖配置文件中的应用程序依赖关系对所述第四依赖关系进行匹配检查;其中,所述应用程序依赖关系包括应用程序分别至编译组件或业务组件进行依赖配置的依赖顺序;
当所述第四依赖关系与所述应用程序依赖关系不匹配时,中止当前的编译操作,并发出编译报错提示信息。
在本实施例中,将编译组件与应用程序,或者是业务组件与应用程序之间的依赖关系设定为第四依赖关系。
如图3所示,在本申请所提供的依赖配置文件中还包括对编译组件与应用程序,或者是业务组件与应用程序之间的依赖配置。即应用程序与目标编译组件、编译组件或业务组件1、2之间的箭头指向方向为本实施例所述的第四依赖顺序。
在本实施例中将该依赖配置命名为应用程序依赖关系。在该应用程序依赖关系的依赖配置中设定该应用程序依赖编译组件或业务组件的依赖顺序。
根据上述依赖配置的应用程序依赖关系对第四依赖关系进行匹配检查。针对第四依赖关系的匹配检查,得到应用程序针对存在依赖关系的编译组件或业务组件所建立的依赖指令,根据该依赖指令确认应用程序与编译组件或业务组件之间的依赖顺序是否与依赖配置文件中的应用程序依赖关系是一致的。如果是,则匹配检查成功。
若匹配检查不成功时,中止当前的编译操作,并发出编译报错提醒信息,提示用户进行对应用程序与编译组件或业务组件之间的依赖关系进行更新。当对该第四依赖关系更新后,终端根据依赖配置的应用程序依赖关系,对更新后的第四依赖关系进行匹配检查。
根据本申请中,对应用程序与编译组件或业务组件的依赖关系进行依赖配置,能够保证对应用程序的编译的编译框架中的应用程序与各个组件之间的依赖关系是清楚的,避免编译编译框架因依赖关系混乱造成破坏,以及防止编译框架劣化的问题。
目标编译组件进行接口模块与实现模块的相互隔离设置,对于能够与该编译组件依赖关系匹配成功的第三依赖关系,该目标编译组件通过其接口代码依赖其他编译组件的过程中,该实现代码不被使用,从而使得目标编译组件与其他编译组件之间的依赖只通过该接口代码实现,得到目标编译组件与其他编译组件的调用过程中,其依赖关系清楚,且无需如现有技术中组件之间的直接依赖需调用大量的代码,使得目标编译组件只通过其接口代码实现与其他编译组件实现依赖,避免了现有技术中组件之间的直接依赖需调用大量的代码,摆脱了依赖关系中所带来的代码的历史负担,使得目标编译组件在后续的编译操作中,容易进行复用。
基于与应用程序的编译方法相同的申请构思,本申请实施例还提供了一种应用程序的编译装置400。参考图4,图4为本申请公开的实施例所提供的应用程序的编译装置400的结构示意图。
该应用程序的编译装置400,包括:
编译组件生成模块410,用于在对应用程序编译前,对选定的业务组件添加编译插件,生成编译组件;其中,所述编译插件用于将所述业务组件转化成可依赖配置的编译组件;
依赖关系获取模块420,用于接收针对目标编译组件的编译指令,并启动对所述目标编译组件的编译流程,获取所述目标编译组件存在依赖关系的业务组件及其第一依赖关系;
匹配检查模块430,用于根据预设的依赖配置文件中的第二依赖关系对所述第一依赖关系进行匹配检查;其中,所述第二依赖关系包括对所述目标编译组件与所述业务组件之间自定义的依赖关系;
报错提示模块440,用于当所述第一依赖关系与所述第二依赖关系不匹配时,发出编译报错提示信息;否则继续进行编译。
本申请实施例所提供的应用程序的编译装置400,在本申请中,对应用程序的编译之前,通过对需要选定进行编译的业务组件添加编译插件,得到可依赖配置的编译组件;利用预设的依赖配置文件对目标编译组件与业务组件的依赖关系进行配置,进一步对目标编译组件与业务组件当前的依赖关系进行匹配检查,根据匹配检查的结果控制编译过程,目标编译组件与业务组件之间的依赖关系依据预设的第二依赖关系,使得编译过程中目标编译组件与业务组件必须依据设定的依赖约束,从而改变了现有技术中业务组件之间的依赖关系混乱,导致编译速度越来越慢的问题。而且,根据预设的依赖配置对目标编译组件与业务组件建立的第一依赖关系进行匹配,得到符合该预设的依赖配置的第一依赖关系,使得目标编译组件与业务组件之间的依赖关系是清晰的,从而更容易在后续的编译中进行复用。
基于与本申请实施例中所示的方法相同的原理,本申请实施例中还提供了一种电子设备,该电子设备可以包括但不限于:处理器和存储器;存储器,用于存储计算机操作指令;处理器,用于通过调用计算机操作指令执行实施例所示的方法。与现有技术相比,本申请实施例中的电子设备能够使得编译过程中目标编译组件与业务组件必须依据设定的依赖约束,从而改变了现有技术中业务组件之间的依赖关系混乱,导致编译速度越来越慢的问题;并且,所得到的目标编译组件与业务组件之间的依赖关系是清晰的,从而更容易在后续的编译中进行复用。
参照图5,图5为本申请一个实施例所提供的一种应用程序的编译的电子设备的结构示意图。
在一个可选实施例中提供了一种电子设备,如图5所示,图5所示的电子设备500包括:处理器501和存储器503。其中,处理器501和存储器503相连,如通过总线502相连。可选地,电子设备500还可以包括收发器504。需要说明的是,实际应用中收发器504不限于一个,该电子设备500的结构并不构成对本申请实施例的限定。
其中,电子设备包括但不限于:移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图5示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,当其在计算机上运行时,使得计算机可以执行前述方法实施例中相应内容。与现有技术相比,本申请实施例中的计算机可读存储介质能够使得编译过程中目标编译组件与业务组件必须依据设定的依赖约束,从而改变了现有技术中业务组件之间的依赖关系混乱,导致编译速度越来越慢的问题;并且,所得到的目标编译组件与业务组件之间的依赖关系是清晰的,从而更容易在后续的编译中进行复用。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行上述实施例所示的方法。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (10)

1.一种应用程序的编译方法,其特征在于,包括以下步骤:
在对应用程序编译前,对选定的业务组件添加编译插件,生成编译组件;其中,所述编译插件用于将所述业务组件转化成可依赖配置的编译组件;
接收针对目标编译组件的编译指令,并启动对所述目标编译组件的编译流程,获取所述目标编译组件存在依赖关系的业务组件及其第一依赖关系;
根据预设的依赖配置文件中的第二依赖关系对所述第一依赖关系进行匹配检查;其中,所述第二依赖关系包括对所述目标编译组件与所述业务组件之间自定义的依赖关系;
当所述第一依赖关系与所述第二依赖关系不匹配时,发出编译报错提示信息;否则继续进行编译。
2.根据权利要求1所述方法,其特征在于,
所述启动对所述目标编译组件的编译流程的步骤,包括:针对所述目标编译组件设置相互隔离的接口模块和实现模块;
其中,所述接口模块用于存储所述编译组件对应的接口代码;所述实现模块用于编写所述编译组件的实现代码。
3.根据权利要求2所述的方法,其特征在于,
所述第二依赖关系包括所述目标编译组件依赖所述业务组件的第二依赖顺序;
所述获取所述目标编译组件存在依赖关系的业务组件及其第一依赖关系的步骤,包括:
获取与所述目标编译组件存在依赖关系的业务组件,以及所述目标编译组件与所述业务组件的第一依赖顺序;
所述根据预设的依赖配置文件中的第二依赖关系对所述第一依赖关系进行匹配检查的步骤,包括:
根据所述第二依赖顺序,对所述目标编译组件与所述业务组件之间的第一依赖顺序进行匹配检查。
4.根据权利要求3所述的方法,其特征在于,
所述第二依赖关系包括针所述目标编译组件依赖其接口代码与所述业务组件进行依赖配置的第二依赖基础;
所述获取所述目标编译组件存在依赖关系的业务组件及其第一依赖关系的步骤,还包括:
获取所述目标编译组件与其存在依赖关系的业务组件之间的第一依赖基础;
所述根据预设的依赖配置文件中的第二依赖关系对所述第一依赖关系进行匹配检查的步骤,包括:
根据所述第二依赖基础,对所述目标编译组件与所述业务组件之间的第一依赖基础进行匹配检查。
5.根据权利要求1所述的方法,其特征在于,
所述根据预设的依赖配置文件中的第二依赖关系对所述第一依赖关系进行匹配检查的步骤之前,还包括:
接收用户对所述目标编译组件与所述业务组件的第一依赖关系的更新信息。
6.根据权利要求2所述的方法,其特征在于,还包括:
获取所述目标编译组件和与其存在依赖关系的其他编译组件,以及所述目标编译组件与其他编译组件的第三依赖关系;
根据所述依赖配置文件中的编译组件依赖关系对所述第三依赖关系进行匹配检查;其中,所述编译组件依赖关系包括编译组件之间以其中的依赖组件的接口代码作为依赖被依赖组件的依赖基础;
当所述第三依赖关系与所述编译组件依赖关系不匹配时,发出编译报错提示信息。
7.根据权利要求1获取所述的方法,其特征在于,还包括:
获取所选取的编译组件或业务组件分别与应用程序的第四依赖关系;
根据所述依赖配置文件中的应用程序依赖关系对所述第四依赖关系进行匹配检查;其中,所述应用程序依赖关系包括应用程序分别至编译组件或业务组件进行依赖配置的依赖顺序;
当所述第四依赖关系与所述应用程序依赖关系不匹配时,发出编译报错提示信息。
8.一种应用程序的编译装置,其特征在于,包括:
编译组件生成模块,用于在对应用程序编译前,对选定的业务组件添加编译插件,生成编译组件;其中,所述编译插件用于将所述业务组件转化成可依赖配置的编译组件;
依赖关系获取模块,用于接收针对目标编译组件的编译指令,并启动对所述目标编译组件的编译流程,获取所述目标编译组件存在依赖关系的业务组件及其第一依赖关系;
匹配检查模块,用于根据预设的依赖配置文件中的第二依赖关系对所述第一依赖关系进行匹配检查;其中,所述第二依赖关系包括对所述目标编译组件与所述业务组件之间自定义的依赖关系;
报错提示模块,用于当所述第一依赖关系与所述第二依赖关系不匹配时,发出编译报错提示信息;否则继续进行编译。
9.一种电子设备,其特征在于,其包括:
一个或多个处理器;
存储器;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于:执行根据权利要求1~7任一项所述的应用程序的编译方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1~7任一项所述的应用程序的编译方法。
CN202011324517.8A 2020-11-23 2020-11-23 应用程序的编译方法、装置、电子设备及存储介质 Active CN112433719B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011324517.8A CN112433719B (zh) 2020-11-23 2020-11-23 应用程序的编译方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011324517.8A CN112433719B (zh) 2020-11-23 2020-11-23 应用程序的编译方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN112433719A true CN112433719A (zh) 2021-03-02
CN112433719B CN112433719B (zh) 2023-09-01

Family

ID=74693769

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011324517.8A Active CN112433719B (zh) 2020-11-23 2020-11-23 应用程序的编译方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN112433719B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113791783A (zh) * 2021-09-14 2021-12-14 科东(广州)软件科技有限公司 控件生成方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109857405A (zh) * 2019-02-02 2019-06-07 Oppo广东移动通信有限公司 应用程序安装包的编译方法、装置、存储介质及终端
CN111475164A (zh) * 2020-03-02 2020-07-31 百度在线网络技术(北京)有限公司 组件依赖关系检测方法、装置以及电子设备
CN111897570A (zh) * 2020-07-15 2020-11-06 杭州安恒信息技术股份有限公司 一种基于Maven插件的多依赖项文件提取方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109857405A (zh) * 2019-02-02 2019-06-07 Oppo广东移动通信有限公司 应用程序安装包的编译方法、装置、存储介质及终端
CN111475164A (zh) * 2020-03-02 2020-07-31 百度在线网络技术(北京)有限公司 组件依赖关系检测方法、装置以及电子设备
CN111897570A (zh) * 2020-07-15 2020-11-06 杭州安恒信息技术股份有限公司 一种基于Maven插件的多依赖项文件提取方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113791783A (zh) * 2021-09-14 2021-12-14 科东(广州)软件科技有限公司 控件生成方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN112433719B (zh) 2023-09-01

Similar Documents

Publication Publication Date Title
CN107979508B (zh) 微服务测试方法及装置
US10205778B2 (en) Method and apparatus for sharing application data
CN107729014B (zh) 一种基于Android的页面跳转方法及结构
CN108776592B (zh) 一种页面构建的方法、装置、设备及存储介质
CN111309747A (zh) 数据同步方法、系统和装置
CN110609755A (zh) 跨区块链节点的消息处理方法及装置、设备、介质
CN108132832B (zh) 应用程序启动方法和装置
CN112433719B (zh) 应用程序的编译方法、装置、电子设备及存储介质
CN113821249A (zh) 项目开发配置的方法、装置、电子设备和可读存储介质
CN112732265B (zh) 一种数据处理方法和相关装置
CN113138768A (zh) 应用程序包生成方法、装置、电子设备以及可读存储介质
CN105488199A (zh) 混合表单处理方法、装置以及移动终端
CN109086059B (zh) 代码加载更新方法、装置及服务器
CN113590179B (zh) 插件检测方法、装置、电子设备及存储介质
CN114816684A (zh) 业务处理方法、装置、设备、可读存储介质及产品
CN113704079B (zh) 基于Protobuf的接口测试方法和装置
CN115080068A (zh) 资源文件的传输方法、装置、设备及存储介质
CN114327673A (zh) 一种任务启动方法、装置、电子设备及存储介质
CN112650488A (zh) 参数校验方法及装置、存储介质、服务终端
CN117950762A (zh) 业务处理的方法、装置、电子设备和存储介质
CN109376023B (zh) 用于生成调用信息、发布返回码组的方法和设备
CN112365259A (zh) 系统集成中台的积分同步方法及积分同步系统
CN107682531B (zh) 终端控制方法及系统
CN112784199A (zh) 事件流程处理方法、设备、存储介质及程序产品
CN112860394A (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