CN113760345A - 一种应用程序生成方法、装置、设备和存储介质 - Google Patents

一种应用程序生成方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN113760345A
CN113760345A CN202010645490.6A CN202010645490A CN113760345A CN 113760345 A CN113760345 A CN 113760345A CN 202010645490 A CN202010645490 A CN 202010645490A CN 113760345 A CN113760345 A CN 113760345A
Authority
CN
China
Prior art keywords
application program
target
component
target application
configuration 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.)
Pending
Application number
CN202010645490.6A
Other languages
English (en)
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.)
Beijing Jingdong Century Trading Co Ltd
Beijing Wodong Tianjun Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Wodong Tianjun Information 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 Beijing Jingdong Century Trading Co Ltd, Beijing Wodong Tianjun Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN202010645490.6A priority Critical patent/CN113760345A/zh
Publication of CN113760345A publication Critical patent/CN113760345A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • 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/448Execution paradigms, e.g. implementations of programming paradigms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例公开了一种应用程序生成方法、装置、设备和存储介质,该方法包括:获取待生成的目标应用程序对应的目标应用程序标识;根据预先配置的每个应用程序标识对应的应用程序配置文件和目标应用程序标识,确定目标应用程序对应的目标应用程序配置文件;根据目标应用程序配置文件,对各个候选组件进行标记区分,获得每个候选组件对应的标记结果;根据目标应用程序所依赖的目标组件、通用业务逻辑代码和各个候选组件对应的标记结果,生成目标应用程序,其中通用业务逻辑代码包括每个候选组件对应的业务逻辑代码,候选组件对应的业务逻辑代码是在相应标记结果为预设标记结果时进行执行的,从而避免执行没有依赖的组件的业务逻辑代码。

Description

一种应用程序生成方法、装置、设备和存储介质
技术领域
本发明实施例涉及计算机技术,尤其涉及一种应用程序生成方法、装置、设备和存储介质。
背景技术
随着计算机的快速发展,越来越多的用于生成应用程序的工程项目实行组件化开发,以对项目中的模块和业务进行拆分,降低项目的耦合度,便于应用程序的开发和维护。
通常,可以基于工程项目中的各个组件,生成满足不同业务功能的各个应用程序。例如,若工程项目中包含4个组件A、B、C和D,则可以通过基于需要依赖的组件A、B和C三个组件以及针对这四个组件开发的通用业务逻辑代码,生成满足相应业务功能的应用程序。
然而,在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
由于生成的应用程序所使用的通用业务逻辑代码中会包含应用程序没有依赖的组件所对应的业务逻辑代码,使得没有依赖的组件所对应的业务逻辑代码也会被执行,从而大大降低了应用程序的运行效率。
发明内容
本发明实施例提供了一种应用程序生成方法、装置、设备和存储介质,以避免执行应用程序没有依赖的组件所对应的业务逻辑代码,从而提高应用程序的运行效率。
第一方面,本发明实施例提供了一种应用程序生成方法,包括:
获取待生成的目标应用程序对应的目标应用程序标识;
根据预先配置的每个应用程序标识对应的应用程序配置文件和所述目标应用程序标识,确定所述目标应用程序对应的目标应用程序配置文件,所述目标应用程序配置文件包括从各个候选组件中选取的所述目标应用程序所依赖的目标组件的信息;
根据所述目标应用程序所依赖的目标组件的信息,对各个候选组件进行标记区分,获得每个候选组件对应的标记结果;
根据所述目标应用程序所依赖的目标组件、通用业务逻辑代码和各个候选组件对应的标记结果,生成目标应用程序,其中,所述通用业务逻辑代码包括每个候选组件对应的业务逻辑代码,所述候选组件对应的业务逻辑代码是在相应标记结果为预设标记结果时进行执行的。
第二方面,本发明实施例还提供了一种应用程序生成装置,包括:
目标应用程序标识获取模块,用于获取待生成的目标应用程序对应的目标应用程序标识;
目标应用程序配置文件确定模块,用于根据预先配置的每个应用程序标识对应的应用程序配置文件和所述目标应用程序标识,确定所述目标应用程序对应的目标应用程序配置文件,所述目标应用程序配置文件包括从各个候选组件中选取的所述目标应用程序所依赖的目标组件的信息;
候选组件区分模块,用于根据所述目标应用程序所依赖的目标组件的信息,对各个候选组件进行标记区分,获得每个候选组件对应的标记结果;
目标应用程序生成模块,用于根据所述目标应用程序所依赖的目标组件、通用业务逻辑代码和各个候选组件对应的标记结果,生成目标应用程序,其中,所述通用业务逻辑代码包括用于执行每个候选组件的业务逻辑代码,所述候选组件对应的业务逻辑代码是在相应标记结果为预设标记结果时进行执行的。
第三方面,本发明实施例还提供了一种设备,所述设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任意实施例所提供的应用程序生成方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如本发明任意实施例所提供的应用程序生成方法。
上述发明中的实施例具有如下优点或有益效果:
通过预先基于每个应用程序从各个候选组件中选取的需要依赖的目标组件,配置出相应的应用程序配置文件,从而在需要生成目标应用程序时,可以基于目标应用程序对应的目标应用程序配置文件中的目标应用程序所依赖的目标组件的信息,对各个候选组件进行标记区分,获得每个候选组件对应的标记结果,以便利用标记结果对目标应用程序依赖的候选组件和没有依赖的候选组件进行区分,进而根据目标应用程序所依赖的目标组件、通用业务逻辑代码和各个候选组件对应的标记结果,生成目标应用程序,使得通用业务逻辑代码中的每个候选组件对应的业务逻辑代码在标记结果为预设标记结果时进行执行,从而仅会执行应用程序依赖的组件所对应的业务逻辑代码,不会执行应用程序没有依赖的组件所对应的业务逻辑代码,避免了无用的业务逻辑代码的执行,并且基于标记结果可以快速地判断出是否需要执行相应的业务逻辑代码,从而提高了应用程序的运行效率。
附图说明
图1是本发明实施例一提供的一种应用程序生成方法的流程示意图;
图2是本发明实施例二提供的一种应用程序生成方法的流程示意图;
图3是本发明实施例三提供的一种应用程序生成装置的结构示意图;
图4是本发明实施例四提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种应用程序生成方法的流程图,本实施例可适用于基于工程项目中的组件生成应用程序的情况,尤其是可以用于生成运行在iOS操作系统下的应用程序的场景。该方法可以由应用程序生成装置来执行,该装置可以由软件和/或硬件的方式来实现,集成于具有应用程序开发功能的设备中。如图1所示,该方法具体包括以下步骤:
S110、获取待生成的目标应用程序对应的目标应用程序标识。
其中,目标应用程序可以是指当前需要生成的任一应用程序(Application,App)。工程项目可以包括用于生成每个应用程序的开发项目。目标应用程序标识可以是指用于唯一标记目标应用程序的标识,以便区分不同的应用程序。例如,目标应用程序标识可以是指目标应用程序的身份识别码(Bundle ID)。
具体地,开发人员想要开发目标应用程序时,可以通过信息输入的方式,输入目标应用程序标识,使得开发设备可以获取到待生成的目标应用程序对应的目标应用程序标识。
S120、根据预先配置的每个应用程序标识对应的应用程序配置文件和目标应用程序标识,确定目标应用程序对应的目标应用程序配置文件,目标应用程序配置文件包括从各个候选组件中选取的目标应用程序所依赖的目标组件的信息。
其中,应用程序配置文件可以是用于配置应用程序生成的文件,比如xcconfig文件。应用程序配置文件可以用于决定在代码层面可以使用哪些组件。候选组件可以是指工程项目中的每个已开发组件。目标组件可以是指基于业务需求,从各个候选组件中选取满足业务需求的候选组件。通过将满足业务需求的候选组件作为目标组件进行依赖,可以使得开发出的应用程序具有目标组件的组件功能,从而实现相应的业务功能。目标应用程序所依赖的目标组件的信息可以包括但不限于目标组件对应的标识信息。
具体地,开发人员可以针对每个应用程序,基于每个应用程序所依赖的目标组件的信息,预先配置出每个应用程序对应的应用程序配置文件,并建立每个应用程序标识与应用程序配置文件之间的对应关系,从而在需要生成目标应用程序时,可以基于该对应关系和目标应用程序标识,从已配置出的各个应用程序配置文件中确定出目标应用程序对应的目标应用程序配置文件,从而可以从目标应用程序配置文件中获得目标应用程序所依赖的目标组件的信息。
S130、根据目标应用程序所依赖的目标组件的信息,对各个候选组件进行标记区分,获得每个候选组件对应的标记结果。
其中,候选组件对应的标记结果可以用于表征该候选组件是否是目标应用程序需要依赖的组件,从而可以区分出目标应用程序依赖的候选组件以及目标应用程序没有依赖的候选组件。例如,本实施例可以利用不同标识的方式来区分不同情况下的标记结果,也可以利用是否存在标识的方式来区分不同情况下的标记结果。
具体地,可以基于目标应用程序配置文件中的目标应用程序所依赖的目标组件的信息,利用第一标记方式,对所有候选组件中的目标组件进行标记,以及利用与第一标记方式不同的第二标记方式,对所有候选组件中的除目标组件之间的其他候选组件进行标记,获得每个候选组件对应的标记结果,从而可以利用标记结果区分出目标应用程序需要依赖的目标组件和没有依赖的其他候选组件。
示例性地,S130可以包括:根据目标应用程序所依赖的目标组件的信息,检测每个候选组件是否为目标应用程序所依赖的目标组件;若是,则确定该候选组件对应的标记结果为第一预设标识;若否,则确定该候选组件对应的标记结果为第二预设标识。
其中,第一预设标识和第二预设标识可以是指两种不同的预设标识。例如,第一预设标识和第二预设标识可以利用true和false来区分,也可以利用非空标识和空标识来区分,比如,第一预设标识为非空标记,即存在预设标识,第二预设标识为空标识,即不存在预设标识。
具体地,可以针对每个候选组件,基于目标应用程序配置文件中的目标应用程序所依赖的目标组件的信息,检测目标应用程序配置文件中是否包含候选组件的信息,若是,则表明该候选组件为目标组件,此时可以确定该候选组件对应的标记结果为第一预设标识;若否,则表明该候选组件不是目标组件,此时可以确定该候选组件对应的标记结果为第二预设标识,从而可以利用第一预设标识和第二预设标识更加快速地标记出目标应用程序需要依赖的目标组件和没有依赖的其他候选组件。
S140、根据目标应用程序所依赖的目标组件、通用业务逻辑代码和各个候选组件对应的标记结果,生成目标应用程序,其中,通用业务逻辑代码包括每个候选组件对应的业务逻辑代码,候选组件对应的业务逻辑代码是在相应标记结果为预设标记结果时进行执行的。
其中,目标应用程序所依赖的目标组件可以基于目标组件依赖配置文件进行确定。组件依赖配置文件可以是指类库管理工具CocoaPods中,用于针对目标应用程序的依赖目标名称(targetName)配置出的需要依赖的目标组件的信息。组件依赖配置文件可以用于决定需要组装哪些组件。组件依赖配置文件中的需要依赖的目标组件的信息可以包括目标组件标识。通用业务逻辑代码是开发人员针对所有候选组件所编写的代码,可以适用每个应用程序的生成,从而提高开发效率。预设标记结果可以是指目标应用程序所依赖的目标组件对应的标记结果。
具体地,可以基于目标应用程序对应的依赖目标名称,从预先配置出的各个组件依赖配置文件中确定出目标应用程序对应的目标组件依赖配置文件。基于类库管理工具CocoaPods可以基于目标组件依赖配置文件中的需要依赖的目标组件信息,确定出目标应用程序所依赖的目标组件,并对各个目标组件进行依赖组装,从而可以避免安装没有依赖不需要的候选组件。将依赖组装后的各个目标组件、通用业务逻辑代码和各个候选组件对应的标记结果进行打包处理,从而可以获得目标应用程序。目标应用程序可以安装到搭载有iOS操作系统的设备中进行运行。目标应用程序在运行过程中,即执行通过业务逻辑代码的过程中,每个候选组件对应的业务逻辑代码是在相应标记结果为预设标记结果时进行执行的,从而可以避免执行目标应用程序没有依赖的组件所对应的业务逻辑代码,并且基于标记结果可以快速地判断出是否需要执行相应的业务逻辑代码,判断逻辑简单,从而提高了应用程序的运行效率。
示例性地,在相应标记结果为预设标记结果时执行候选组件对应的业务逻辑代码,可以包括:检测当前待执行的当前业务逻辑代码所对应的当前候选组件的标记结果是否为第一预设标识;若是,则允许执行当前候选组件对应的当前业务逻辑代码;若否,则禁止执行当前候选组件对应的当前业务逻辑代码。
具体地,在执行通用业务逻辑代码过程中,即基于业务执行顺序,依次执行各个候选组件对应的业务逻辑代码过程中,可以在执行每个业务逻辑代码之前,检测该业务逻辑代码所对应的候选组件的标记结果是否为第一预设标识,若是,则表明该候选组件为目标应用程序所依赖的组件,此时可以允许执行该候选组件对应的业务逻辑代码,比如,允许调用该候选组件的功能函数,从而执行目标应用程序所依赖的组件对应的业务逻辑代码,保证目标程序的正常运行。若该业务逻辑代码所对应的候选组件的标记结果不是第一预设标识,则表明该候选组件是目标应用程序没有依赖的组件,此时可以禁止执行该候选组件对应的业务逻辑代码,跳过该候选组件的业务逻辑代码,执行后续的候选组件的业务逻辑代码,从而避免执行目标应用程序没有依赖的组件对应的业务逻辑代码,在保证目标程序的正常运行的情况下提高了应用程序的运行效率。
本实施例的技术方案,通过预先基于每个应用程序从各个候选组件中选取的需要依赖的目标组件,配置出相应的应用程序配置文件,从而在需要生成目标应用程序时,可以基于目标应用程序对应的目标应用程序配置文件中的目标应用程序所依赖的目标组件的信息,对各个候选组件进行标记区分,获得每个候选组件对应的标记结果,以便利用标记结果对目标应用程序依赖的候选组件和没有依赖的候选组件进行区分,进而根据目标应用程序所依赖的目标组件、通用业务逻辑代码和各个候选组件对应的标记结果,生成目标应用程序,使得通用业务逻辑代码中的每个候选组件对应的业务逻辑代码在标记结果为预设标记结果时进行执行,从而仅会执行应用程序依赖的组件所对应的业务逻辑代码,不会执行应用程序没有依赖的组件所对应的业务逻辑代码,避免了无用的业务逻辑代码的执行,并且基于标记结果可以快速地判断出是否需要执行相应的业务逻辑代码,从而提高了应用程序的运行效率。
在上述技术方案的基础上,目标应用程序所依赖的目标组件的信息为:目标应用程序所依赖的目标组件对应的宏字段信息;根据目标应用程序所依赖的目标组件的信息,检测每个候选组件是否为目标应用程序所依赖的目标组件,包括:根据目标应用程序所依赖的目标组件对应的宏字段信息,检测是否存在每个候选组件对应的宏信息。
其中,宏字段信息可以目标应用程序所依赖的目标组件对应的预先定义的宏信息。例如,可以利用赋值的方式定义宏信息。宏字段信息可以作为目标应用程序配置文件xcconfig中的GCC预编译头参数(GCC_PREPROCESSOR_DEFINITIONS)的参数值进行配置。例如,目标应用程序配置文件可以配置如下:
APP_DISPLAY_NAME=测试配置
APP_BUNDLE_ID=com.jd.test.app
APP_VERSION=1.0.0
GCC_PREPROCESSOR_DEFINITIONS=$(inhertited)ComponentsA=1 ComponentsB=1 ComponentsC=1
其中,APP_DISPLAY_NAME可以是指应用程序名称。APP_BUNDLE_ID可以是指应用程序身份识别码,即应用程序标识。APP_VERSION可以是指应用程序版本信息。ComponentsA、ComponentsB和ComponentsC是指目标应用程序所依赖的目标组件A、B和C。ComponentsA=1用于表征存在组件A的宏信息。ComponentsB=1用于表征存在组件B的宏信息。ComponentsC=1用于表征存在组件C的宏信息。
具体地,可以利用目标应用程序配置文件xcconfig的特性,基于组件的宏信息来控制业务逻辑代码的执行。通过检测目标应用程序配置文件中是否存在候选组件对应的宏信息,若是,则确定该候选组件对应的标记结果为第一预设标识;若否,则确定该候选组件对应的标记结果为第二预设标识,可以更加快速地确定出每个候选组件对应的标记结果,以便在存在该候选组件的宏信息时再执行该候选组件对应的业务逻辑代码,不存在该候选组件的宏信息时不会执行该候选组件对应的业务逻辑代码,从而可以保证没有依赖组件不会安装也不会使用,有效地提高了应用程序的运行效率。
在上述技术方案的基础上,在S120之前,还可以包括:获取每个应用程序对应的采用结构化描述语言的预设配置文件;利用第一预设脚本,根据预设配置文件,生成应用程序对应的应用程序配置文件。
其中,第一预设脚本可以是指预先编写的,用于生成应用程序配置文件的Shell脚本。结构化描述语言可以是但不限于JavaScript对象标记JSON语言。预设配置文件可以是预先配置出的,包含应用程序基本信息和应用程序所依赖的各个目标组件信息的文件。应用程序基本信息appInfo可以包括但不限于:应用程序名称appName、应用程序标识bundleld、应用程序版本信息version和应用程序的依赖目标名称targetName。应用程序所依赖的目标组件信息componentsInfo可以包括但不限于:目标组件名称、目标组件标识和目标组件版本信息。示例性地,预设配置文件可以包括两层配置结构,第一层用于配置应用程序基本信息,第二层用于配置应用程序所依赖的组件信息。例如,预设配置文件可以配置如下:
Figure BDA0002571846350000111
Figure BDA0002571846350000121
其中,ComponentsA、ComponentsB和ComponentsC是指应用程序所依赖的三个目标组件A、B和C。
具体地,开发人员可以预先针对每个应用程序,采用结构化描述语言编写出相应的预设配置文件,以便获得每个应用程序对应的预设配置文件。通过运行第一预设脚本,可以基于预设配置文件自动生成应用程序对应的应用程序配置文件,从而无需开发人员手动编写应用程序配置文件,进而提高了应用程序配置文件的生成效率,同时提高了应用程序的开发效率。
实施例二
图2为本发明实施例二提供的一种应用程序生成方法的流程图,本实施例在上述各实施例的基础上,对生成指定的目标运行环境下的目标应用程序的过程进行了详细描述。并在此基础上,还对步骤“根据目标应用程序所依赖的目标组件、通用业务逻辑代码和各个候选组件对应的标记结果,生成目标应用程序”进行了优化。其中与上述各实施例相同或相应的术语的解释在此不再赘述。
参见图2,本实施例提供的应用程序生成方法具体包括以下步骤:
S210、获取待生成的目标应用程序对应的目标应用程序标识。
S220、获取目标应用程序对应的目标运行环境。
其中,目标运行环境可以是指当前待生成的目标应用程序需要运行的环境。目标运行环境可以是指测试环境Debug或者发布环境Release。不同的运行环境可以依赖不同的组件,进而生成不同运行环境下的应用程序。
具体地,开发人员可以基于业务需求,通过信息输入的方式,输入指定的目标运行环境,使得开发设备可以获取到目标应用程序对应的目标运行环境。
需要说明的是,此处并不限定步骤S220执行时的执行顺序。比如步骤S220可以在步骤S210之后顺序执行,也可以在步骤S210之前执行,还可以与步骤S210同时执行。
S230、根据预先配置的每个应用程序标识对应的应用程序配置文件和目标应用程序标识,确定目标应用程序对应的候选应用程序配置文件。
具体地,可以预先配置出在不同的运行环境下每个应用程序标识对应的应用程序配置文件。每个运行环境对应一个应用程序配置文件。例如,对于每个应用程序,分别配置出在测试环境Debug和发布环境Release下的应用程序配置文件。通过基于目标应用程序标识,可以获得预先配置出的目标应用程序对应的多个候选应用程序配置文件,即在每个运行环境下配置出的应用程序配置文件。
示例性地,在S230之前,还包括:获取每个应用程序对应的采用结构化语言描述的预设配置文件;利用第一预设脚本,根据预设配置文件,生成应用程序对应的应用程序配置文件。具体地,在区分运行环境时,预设配置文件还需要包含运行环境信息。例如,预设配置文件可以包括:应用程序基本信息和在每个预设运行环境下应用程序所依赖的各个目标组件的信息。预设运行环境可以包括测试环境和发布环境。例如,预设配置文件可以配置如下:
Figure BDA0002571846350000131
Figure BDA0002571846350000141
从上述预设配置文件可以看出:在测试环境Debug下,应用程序需要依赖的组件是:ComponentsA、ComponentB和ComponentC三个组件。在发布环境Release下,应用程序需要依赖的组件是:ComponentsA、ComponentC和ComponentdD三个组件。通过运行第一预设脚本,可以基于预设配置文件自动生成每个预设运行环境下的应用程序配置文件,比如,测试环境Debug下的应用程序配置文件和发布环境Release下的应用程序配置文件,从而无需开发人员手动编写不同运行环境下的应用程序配置文件,进一步提高了应用程序配置文件的生成效率,同时也提高了应用程序的开发效率。
S240、根据每个候选应用程序配置文件对应的预设运行环境和目标运行环境,确定目标应用程序对应的目标应用程序配置文件。
具体地,基于每个候选应用程序配置文件对应的运行环境,可以确定出目标运行环境对应的候选应用程序配置文件,即获得目标应用程序配置文件,以便可以基于不同运行环境下的目标应用程序配置文件,生成不同运行环境下的目标应用程序,无需增加额外的代码,便于维护,扩展性高。
S250、根据目标应用程序所依赖的目标组件的信息,对各个候选组件进行标记区分,获得每个候选组件对应的标记结果。
S260、根据预先配置的每个应用程序对应的组件依赖配置文件,确定目标应用程序对应的目标组件依赖配置文件。
其中,组件依赖配置文件可以是指类库管理工具CocoaPods中,用于针对每个应用程序的依赖目标名称(targetName)配置出的,在不同运行环境下需要依赖的目标组件的信息。组件依赖配置文件可以用于决定在每个运行环境下需要组装哪些组件。例如,组件依赖配置文件可以配置如下:
Figure BDA0002571846350000151
Figure BDA0002571846350000161
其中,source是指组件库的地址信息;platform是指组件所支持的操作系统版本信息;TsetTarge是指应用程序的具体的依赖目标名称。
具体地,本实施例可以基于业务需求,预先配置出每个应用程序对应的组件依赖配置文件,并可以建立每个应用程序对应的依赖目标名称targetName与组件依赖配置文件之间的对应关系,从而可以基于该对应关系和目标应用程序对应的目标依赖目标名称,确定出目标应用程序对应的目标组件依赖配置文件。
需要说明的是,此处并不限定步骤S260执行时的执行顺序。比如步骤S260可以在步骤S250之后顺序执行,也可以在步骤S250之前执行。
示例性地,在S260之前,还可以包括:获取每个应用程序对应的采用结构化描述语言的预设配置文件;利用第二预设脚本,根据预设配置文件,生成应用程序对应的组件依赖配置文件。
具体地,通过运行第二预设脚本,基于预设配置文件也可以自动生成应用程序对应的组件依赖配置文件,从而基于预设配置文件可以自动生成相应的应用程序配置文件和组件依赖配置文件,无需开发人员手动编写应用程序配置文件和组件依赖配置文件,大大提高了配置文件的生成效率,进而提高了应用程序的开发效率。
S270、基于类库管理工具CocoaPods,根据目标组件依赖配置文件,和目标运行环境,确定目标应用程序所依赖的各个目标组件,并对各个目标组件进行依赖组装。
具体地,通过基于目标组件依赖配置文件,获取在目标运行环境下目标应用程序所依赖的目标组件,并利用类库管理工具CocoaPods对各个目标组件进行依赖组装,使得类库管理工具CocoaPods可以安装目标运行环境下所需要的组件,不会安装目标运行环境下不需要的组件,从而可以减小目标应用程序的程序包大小。
S280、将依赖组装后的各个目标组件、通用业务逻辑代码和各个候选组件对应的标记结果进行打包处理,获得目标应用程序;其中,通用业务逻辑代码包括每个候选组件对应的业务逻辑代码,候选组件对应的业务逻辑代码是在相应标记结果为预设标记结果时进行执行的。
具体地,通过在应用程序配置文件和组件依赖配置文件中添加运行环境信息,从而可以支持生成不同运行环境下的目标应用程序,进而可以兼容多套业务模式,并且在每个运行环境下均可以无障碍地屏蔽该运行环境下不需要的组件和业务逻辑代码,不会造成业务混乱,便于维护。
本实施例的技术方案,通过基于在目标运行环境下的目标应用程序配置文件,可以获得在目标运行环境下每个候选组件对应的标记结果,从而可以基于标记结果避免执行在目标运行环境下目标应用程序没有依赖的组件对应的业务逻辑代码。并且基于目标组件依赖配置文件,可以将在目标运行环境下目标应用程序所需要依赖的目标组件进行依赖组装,从而可以避免安装目标运行环境下不需要的组件,进而可以支持生成不同运行环境下的目标应用程序,兼容多套业务模式,并且不会造成业务混乱,便于维护。
以下是本发明实施例提供的应用程序生成装置的实施例,该装置与上述各实施例的应用程序生成方法属于同一个发明构思,在应用程序生成装置的实施例中未详尽描述的细节内容,可以参考上述应用程序生成方法的实施例。
实施例三
图3为本发明实施例三提供的一种应用程序生成装置的结构示意图,本实施例可适用于基于工程项目中的组件生成应用程序的情况。如图3所示,该装置具体包括:目标应用程序标识获取模块310、目标应用程序配置文件确定模块320、候选组件区分模块330和目标应用程序生成模块340。
其中,目标应用程序标识获取模块310,用于获取待生成的目标应用程序对应的目标应用程序标识;目标应用程序配置文件确定模块320,用于根据预先配置的每个应用程序标识对应的应用程序配置文件和目标应用程序标识,确定目标应用程序对应的目标应用程序配置文件,目标应用程序配置文件包括从各个候选组件中选取的目标应用程序所依赖的目标组件的信息;候选组件区分模块330,用于根据目标应用程序所依赖的目标组件的信息,对各个候选组件进行标记区分,获得每个候选组件对应的标记结果;目标应用程序生成模块340,用于根据目标应用程序所依赖的目标组件、通用业务逻辑代码和各个候选组件对应的标记结果,生成目标应用程序,其中,通用业务逻辑代码包括用于执行每个候选组件的业务逻辑代码,候选组件对应的业务逻辑代码是在相应标记结果为预设标记结果时进行执行的。
可选地,候选组件区分模块330,包括:
候选组件检测单元,用于根据目标应用程序所依赖的目标组件的信息,检测每个候选组件是否为目标应用程序所依赖的目标组件;
第一标识单元,用于若是,则确定该候选组件对应的标记结果为第一预设标识;
第二标记单元,用于若否,则确定该候选组件对应的标记结果为第二预设标识。
可选地,目标应用程序所依赖的目标组件的信息为:目标应用程序所依赖的目标组件对应的宏字段信息;候选组件检测单元,具体用于:根据目标应用程序所依赖的目标组件对应的宏字段信息,检测是否存在每个候选组件对应的宏信息。
可选地,该装置还包括:
代码执行控制模块,用于:检测当前待执行的当前业务逻辑代码所对应的当前候选组件的标记结果是否为第一预设标识;若是,则允许执行当前候选组件对应的当前业务逻辑代码;若否,则禁止执行当前候选组件对应的当前业务逻辑代码。
可选地,该装置还包括:
目标运行环境获取模块,用于获取目标应用程序对应的目标运行环境;
目标应用程序配置文件确定模块320,具体用于:根据预先配置的每个应用程序标识对应的应用程序配置文件和目标应用程序标识,确定目标应用程序对应的候选应用程序配置文件;根据每个候选应用程序配置文件对应的预设运行环境和目标运行环境,确定目标应用程序对应的目标应用程序配置文件。
可选地,该装置还包括:
预设配置文件获取模块,用于在根据预先配置的每个应用程序标识对应的应用程序配置文件和目标应用程序标识,确定目标应用程序对应的目标应用程序配置文件之前,获取每个应用程序对应的采用结构化描述语言的预设配置文件;
应用程序配置文件生成模块,用于利用第一预设脚本,根据预设配置文件,生成应用程序对应的应用程序配置文件。
可选地,预设配置文件包括:应用程序基本信息和在每个预设运行环境下应用程序所依赖的各个目标组件的信息;其中,预设运行环境包括测试环境和发布环境。
可选地,目标应用程序生成模块340,具体用于:
根据预先配置的每个应用程序对应的组件依赖配置文件,确定目标应用程序对应的目标组件依赖配置文件;基于类库管理工具CocoaPods,根据目标组件依赖配置文件和目标运行环境,确定目标应用程序所依赖的各个目标组件,并对各个目标组件进行依赖组装;将依赖组装后的各个目标组件、通用业务逻辑代码和各个候选组件对应的标记结果进行打包处理,获得目标应用程序。
可选地,该装置还包括:
预设配置文件获取模块,用于在根据预先配置的每个应用程序对应的组件依赖配置文件,确定目标应用程序对应的目标组件依赖配置文件之前,获取每个应用程序对应的采用结构化描述语言的预设配置文件;
组件依赖配置文件生成模块,用于利用第二预设脚本,根据预设配置文件,生成应用程序对应的组件依赖配置文件。
本发明实施例所提供的应用程序生成装置可执行本发明任意实施例所提供的应用程序生成方法,具备执行应用程序生成方法相应的功能模块和有益效果。
值得注意的是,上述应用程序生成装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
实施例四
图4为本发明实施例四提供的一种设备的结构示意图。图4示出了适于用来实现本发明实施方式的示例性设备12的框图。图4显示的设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图4所示,设备12以通用计算设备的形式表现。设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。系统存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如系统存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该设备12交互的设备通信,和/或与使得该设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与设备12的其它模块通信。应当明白,尽管图中未示出,可以结合设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发实施例所提供的一种应用程序生成方法步骤,该方法包括:
获取待生成的目标应用程序对应的目标应用程序标识;
根据预先配置的每个应用程序标识对应的应用程序配置文件和目标应用程序标识,确定目标应用程序对应的目标应用程序配置文件,目标应用程序配置文件包括从各个候选组件中选取的目标应用程序所依赖的目标组件的信息;
根据目标应用程序所依赖的目标组件的信息,对各个候选组件进行标记区分,获得每个候选组件对应的标记结果;
根据目标应用程序所依赖的目标组件、通用业务逻辑代码和各个候选组件对应的标记结果,生成目标应用程序,其中,通用业务逻辑代码包括每个候选组件对应的业务逻辑代码,候选组件对应的业务逻辑代码是在相应标记结果为预设标记结果时进行执行的。
当然,本领域技术人员可以理解,处理器还可以实现本发明任意实施例所提供的应用程序生成方法的技术方案。
实施例五
本实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所提供的应用程序生成方法步骤,该方法包括:
获取待生成的目标应用程序对应的目标应用程序标识;
根据预先配置的每个应用程序标识对应的应用程序配置文件和目标应用程序标识,确定目标应用程序对应的目标应用程序配置文件,目标应用程序配置文件包括从各个候选组件中选取的目标应用程序所依赖的目标组件的信息;
根据目标应用程序所依赖的目标组件的信息,对各个候选组件进行标记区分,获得每个候选组件对应的标记结果;
根据目标应用程序所依赖的目标组件、通用业务逻辑代码和各个候选组件对应的标记结果,生成目标应用程序,其中,通用业务逻辑代码包括每个候选组件对应的业务逻辑代码,候选组件对应的业务逻辑代码是在相应标记结果为预设标记结果时进行执行的。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
本领域普通技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个计算装置上,或者分布在多个计算装置所组成的网络上,可选地,他们可以用计算机装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (12)

1.一种应用程序生成方法,其特征在于,包括:
获取待生成的目标应用程序对应的目标应用程序标识;
根据预先配置的每个应用程序标识对应的应用程序配置文件和所述目标应用程序标识,确定所述目标应用程序对应的目标应用程序配置文件,所述目标应用程序配置文件包括从各个候选组件中选取的所述目标应用程序所依赖的目标组件的信息;
根据所述目标应用程序所依赖的目标组件的信息,对各个候选组件进行标记区分,获得每个候选组件对应的标记结果;
根据所述目标应用程序所依赖的目标组件、通用业务逻辑代码和各个候选组件对应的标记结果,生成目标应用程序,其中,所述通用业务逻辑代码包括每个候选组件对应的业务逻辑代码,所述候选组件对应的业务逻辑代码是在相应标记结果为预设标记结果时进行执行的。
2.根据权利要求1所述的方法,其特征在于,根据所述目标应用程序所依赖的目标组件的信息,对各个候选组件进行标记区分,获得每个候选组件对应的标记结果,包括:
根据所述目标应用程序所依赖的目标组件的信息,检测每个候选组件是否为所述目标应用程序所依赖的目标组件;
若是,则确定该候选组件对应的标记结果为第一预设标识;
若否,则确定该候选组件对应的标记结果为第二预设标识。
3.根据权利要求2所述的方法,其特征在于,所述目标应用程序所依赖的目标组件的信息为:所述目标应用程序所依赖的目标组件对应的宏字段信息;
所述根据所述目标应用程序所依赖的目标组件的信息,检测每个候选组件是否为所述目标应用程序所依赖的目标组件,包括:
根据所述目标应用程序所依赖的目标组件对应的宏字段信息,检测是否存在每个候选组件对应的宏信息。
4.根据权利要求2所述的方法,其特征在于,在相应标记结果为预设标记结果时执行候选组件对应的业务逻辑代码,包括:
检测当前待执行的当前业务逻辑代码所对应的当前候选组件的标记结果是否为第一预设标识;
若是,则允许执行所述当前候选组件对应的当前业务逻辑代码;
若否,则禁止执行所述当前候选组件对应的当前业务逻辑代码。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述目标应用程序对应的目标运行环境;
所述根据预先配置的每个应用程序标识对应的应用程序配置文件和所述目标应用程序标识,确定所述目标应用程序对应的目标应用程序配置文件,包括:
根据预先配置的每个应用程序标识对应的应用程序配置文件和所述目标应用程序标识,确定所述目标应用程序对应的候选应用程序配置文件;
根据每个所述候选应用程序配置文件对应的预设运行环境和所述目标运行环境,确定所述目标应用程序对应的目标应用程序配置文件。
6.根据权利要求1或5所述的方法,其特征在于,在根据预先配置的每个应用程序标识对应的应用程序配置文件和所述目标应用程序标识,确定所述目标应用程序对应的目标应用程序配置文件之前,还包括:
获取每个应用程序对应的采用结构化描述语言的预设配置文件;
利用第一预设脚本,根据所述预设配置文件,生成应用程序对应的应用程序配置文件。
7.根据权利要求6所述的方法,其特征在于,所述预设配置文件包括:应用程序基本信息和在每个预设运行环境下应用程序所依赖的各个目标组件的信息;其中,所述预设运行环境包括测试环境和发布环境。
8.根据权利要求5所述的方法,其特征在于,根据所述目标应用程序所依赖的目标组件、通用业务逻辑代码和各个候选组件对应的标记结果,生成目标应用程序,包括:
根据预先配置的每个应用程序对应的组件依赖配置文件,确定所述目标应用程序对应的目标组件依赖配置文件;
基于类库管理工具CocoaPods,根据所述目标组件依赖配置文件和所述目标运行环境,确定所述目标应用程序所依赖的各个目标组件,并对各个目标组件进行依赖组装;
将依赖组装后的各个目标组件、通用业务逻辑代码和各个候选组件对应的标记结果进行打包处理,获得目标应用程序。
9.根据权利要求8所述的方法,其特征在于,在根据预先配置的每个应用程序对应的组件依赖配置文件,确定所述目标应用程序对应的目标组件依赖配置文件之前,还包括:
获取每个应用程序对应的采用结构化描述语言的预设配置文件;
利用第二预设脚本,根据所述预设配置文件,生成应用程序对应的组件依赖配置文件。
10.一种应用程序生成装置,其特征在于,包括:
目标应用程序标识获取模块,用于获取待生成的目标应用程序对应的目标应用程序标识;
目标应用程序配置文件确定模块,用于根据预先配置的每个应用程序标识对应的应用程序配置文件和所述目标应用程序标识,确定所述目标应用程序对应的目标应用程序配置文件,所述目标应用程序配置文件包括从各个候选组件中选取的所述目标应用程序所依赖的目标组件的信息;
候选组件区分模块,用于根据所述目标应用程序所依赖的目标组件的信息,对各个候选组件进行标记区分,获得每个候选组件对应的标记结果;
目标应用程序生成模块,用于根据所述目标应用程序所依赖的目标组件、通用业务逻辑代码和各个候选组件对应的标记结果,生成目标应用程序,其中,所述通用业务逻辑代码包括用于执行每个候选组件的业务逻辑代码,所述候选组件对应的业务逻辑代码是在相应标记结果为预设标记结果时进行执行的。
11.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-9中任一所述的应用程序生成方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-9中任一所述的应用程序生成方法。
CN202010645490.6A 2020-07-06 2020-07-06 一种应用程序生成方法、装置、设备和存储介质 Pending CN113760345A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010645490.6A CN113760345A (zh) 2020-07-06 2020-07-06 一种应用程序生成方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010645490.6A CN113760345A (zh) 2020-07-06 2020-07-06 一种应用程序生成方法、装置、设备和存储介质

Publications (1)

Publication Number Publication Date
CN113760345A true CN113760345A (zh) 2021-12-07

Family

ID=78785579

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010645490.6A Pending CN113760345A (zh) 2020-07-06 2020-07-06 一种应用程序生成方法、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN113760345A (zh)

Similar Documents

Publication Publication Date Title
CN108537543B (zh) 区块链数据的并行处理方法、装置、设备和存储介质
CN110297689B (zh) 智能合约执行方法、装置、设备及介质
CN104050201A (zh) 用于多租户分布式环境中的数据管理的方法和设备
US20100199264A1 (en) Pattern inspection system, pattern inspection device, method and pattern inspection program
US10372466B2 (en) Rule-based monitoring engine with tracing capabilities for multi-threaded logging
CN110688096B (zh) 包含插件的应用程序的构建方法、装置、介质及电子设备
CN113961919B (zh) 恶意软件检测方法和装置
CN110688111A (zh) 业务流程的配置方法、装置、服务器和存储介质
CN114116078A (zh) 基于微前端的应用数据处理方法、装置、设备及介质
CN113050984A (zh) 资源调取方法、装置、电子设备及存储介质
CN112463256A (zh) 确定配置文件的方法、系统、电子设备及存储介质
CN109284108A (zh) 数据存储方法、装置、电子设备及存储介质
US9064042B2 (en) Instrumenting computer program code by merging template and target code methods
CN111506904B (zh) 漏洞在线修复的方法和装置
CN109977005B (zh) 端到端测试方法、介质、装置和计算设备
CN113760345A (zh) 一种应用程序生成方法、装置、设备和存储介质
US11573887B2 (en) Extracting code patches from binary code for fuzz testing
CN110297639B (zh) 用于检测代码的方法和装置
CN112114811A (zh) 一种编译方法、装置和设备
US8826262B2 (en) Realtime tracking of software components
CN112261072A (zh) 一种服务调用方法、装置、设备和存储介质
CN117033318B (zh) 一种待测数据的生成方法、装置、存储介质及电子设备
CN117034210B (zh) 一种事件画像的生成方法、装置、存储介质及电子设备
CN114638004B (zh) 一种数据保护方法、装置及存储介质
CN113485770B (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