本技术涉及软件工程领域,具体而言,涉及一种应用程序的启动方法、装置、存储介质及电子设备。
背景技术:
1、目前,在开发人员开发应用程序的过程中,常采用一些软件进行辅助开发。例如,使用自动化构建代码项目的开源工具gradle,使用groovy或kotlin等编程语言编写项目构建脚本,可以根据项目需求编写非常灵活的构建逻辑,相较于xml配置,gradle配置更直观、更易于维护。此外,开源工具gradle还可以集成其它的项目构建脚本,从而允许在构建过程中使用其它软件提供的依赖管理功能和项目构建功能。
2、在开源工具gradle组件化的开发模式下,最终构建的应用程序包是由多个基础框架java压缩包(java archive,以下简称为jar包)、多个第三方jar包以及多个业务jar包组成。基础框架会依赖特定版本的第三方jar包,业务产品组可以手工依赖特定基础框架的jar包和特定版本的第三方软件包。但是,由于最终应用程序包中这样松散的依赖机制,可能导致上层修改底层依赖,从而出现缺少依赖、依赖错误等故障,导致应用程序无法正常启动,进一步造成开发人员或其他工作人员后面排查问题比较麻烦,降低了开发人员或其他工作人员的工作效率的问题。
3、针对相关技术中由于应用程序的代码之间层层依赖的复杂关系,使得启动应用程序时出现错误的版本依赖,降低了开发人员的工作效率的问题,目前尚未提出有效的解决方案。
技术实现思路
1、本技术的主要目的在于提供一种应用程序的启动方法、装置、存储介质及电子设备,以解决相关技术中由于应用程序的代码之间层层依赖的复杂关系,使得启动应用程序时出现错误的版本依赖,降低了开发人员的工作效率的问题。
2、为了实现上述目的,根据本技术的一个方面,提供了一种应用程序的启动方法,该方法包括:在检测到针对目标应用的目标指令的情况下,确定所述目标应用的代码块集合,其中,所述目标指令至少包括以下之一:构建目标项目的指令、启动指令,所述目标项目是用于搭建所述目标应用的项目;确定所述代码块集合中每个代码块的依赖信息,得到第一依赖信息;获取所述目标应用中预设文件记录的依赖信息,得到第二依赖信息;比对所述第一依赖信息和第二依赖信息之间的第一差异信息,并依据所述第一差异信息控制所述目标应用执行启动指令。
3、进一步地,所述代码块集合至少包括:第一代码块、第二代码块,其中,所述第二代码块依赖于所述第一代码块,确定所述代码块集合中每个代码块的依赖信息,得到第一依赖信息,包括:依据所述第一代码块的代码信息确定所述第一代码块的第三依赖信息;依据所述第二代码块的代码信息确定所述第二代码块的第四依赖信息;对所述第三依赖信息和所述第四依赖信息进行合并,得到所述第一依赖信息。
4、进一步地,依据所述第二代码块的代码信息确定所述第二代码块的第四依赖信息,包括:依据所述第二代码块的代码信息确定所述第二代码块的第五依赖信息;确定增量依赖信息,其中,所述增量依赖信息是所述第五依赖信息中除所述第三依赖信息之外的依赖信息;依据所述增量依赖信息确定所述第四依赖信息。
5、进一步地,在依据所述第一代码块的代码信息确定所述第一代码块的第三依赖信息之后,所述方法还包括:确定所述目标应用对应的依赖树,其中,所述依赖树是依据所述目标应用的代码块之间的依赖关系所构建的树状结构;将所述第三依赖信息写入所述依赖树中目标节点的预设文件中,其中,所述目标节点是指所述第一代码块对应的节点;对所述第三依赖信息和所述第四依赖信息进行合并,得到所述第一依赖信息,包括:按照预设顺序对所述依赖树中每个节点的预设文件的依赖信息进行合并,得到所述第一依赖信息。
6、进一步地,在对所述第三依赖信息和所述第四依赖信息进行合并,得到所述第一依赖信息之前,所述方法还包括:比对所述第三依赖信息和第四依赖信息之间的第二差异信息;在所述第二差异信息不为空的情况下,依据预设策略执行响应指令,其中,所述响应指令至少包括以下之一:生成提示信息、中断所述启动指令。
7、进一步地,所述依赖信息至少包括以下信息:依赖信息的标识、依赖信息的版本、依赖信息的发布时刻。
8、进一步地,比对所述第一依赖信息和第二依赖信息之间的第一差异信息,并依据所述第一差异信息控制所述目标应用执行启动指令,包括:在所述第一差异信息指示所述第一依赖信息存在目标依赖信息的标识,而且所述第二依赖信息不存在所述目标依赖信息的标识的情况下,中断所述启动指令;在所述第一差异信息指示所述第一依赖信息中目标依赖信息的版本和所述第二依赖信息中所述目标依赖信息的版本不一致,或者所述第一依赖信息中目标依赖信息的发布时刻和所述第二依赖信息中所述目标依赖信息的发布时刻不一致的情况下,依据预设策略执行响应指令,其中,所述响应指令至少包括以下之一:生成提示信息、中断所述启动指令;在所述第一差异信息为空的情况下,执行所述目标应用的启动指令。
9、为了实现上述目的,根据本技术的另一方面,提供了一种应用程序的启动装置,该装置包括:比对所述第一依赖信息和第二依赖信息之间的第一差异信息,并依据所述第一差异信息控制所述目标应用执行启动指令,包括:在所述第一差异信息指示所述第一依赖信息存在目标依赖信息的标识,而且所述第二依赖信息不存在所述目标依赖信息的标识的情况下,中断所述启动指令;在所述第一差异信息指示所述第一依赖信息中目标依赖信息的版本和所述第二依赖信息中所述目标依赖信息的版本不一致,或者所述第一依赖信息中目标依赖信息的发布时刻和所述第二依赖信息中所述目标依赖信息的发布时刻不一致的情况下,依据预设策略执行响应指令,其中,所述响应指令至少包括以下之一:生成提示信息、中断所述启动指令;在所述第一差异信息为空的情况下,执行所述目标应用的启动指令。
10、进一步地,所述代码块集合至少包括:第一代码块、第二代码块,其中,所述第二代码块依赖于所述第一代码块,所述第二确定单元包括:第一确定子单元,用于依据所述第一代码块的代码信息确定所述第一代码块的第三依赖信息;第二确定子单元,用于依据所述第二代码块的代码信息确定所述第二代码块的第四依赖信息;合并子单元,用于对所述第三依赖信息和所述第四依赖信息进行合并,得到所述第一依赖信息。
11、进一步地,所述第二确定子单元包括:第一确定模块,用于依据所述第二代码块的代码信息确定所述第二代码块的第五依赖信息;第二确定模块,用于确定增量依赖信息,其中,所述增量依赖信息是所述第五依赖信息中除所述第三依赖信息之外的依赖信息;第三确定模块,用于依据所述增量依赖信息确定所述第四依赖信息。
12、进一步地,所述第二确定单元还包括:第四确定模块,用于在依据所述第一代码块的代码信息确定所述第一代码块的第三依赖信息之后,确定所述目标应用对应的依赖树,其中,所述依赖树是依据所述目标应用的代码块之间的依赖关系所构建的树状结构;写入模块,用于将所述第三依赖信息写入所述依赖树中目标节点的预设文件中,其中,所述目标节点是指所述第一代码块对应的节点;所述合并子单元包括:合并模块,用于按照预设顺序对所述依赖树中每个节点的预设文件的依赖信息进行合并,得到所述第一依赖信息。
13、进一步地,所述第二确定单元还包括:比对子单元,用于在对所述第三依赖信息和所述第四依赖信息进行合并,得到所述第一依赖信息之前,比对所述第三依赖信息和第四依赖信息之间的第二差异信息;第一执行子单元,用于在所述第二差异信息不为空的情况下,依据预设策略执行响应指令,其中,所述响应指令至少包括以下之一:生成提示信息、中断所述启动指令。
14、进一步地,所述依赖信息至少包括以下信息:依赖信息的标识、依赖信息的版本、依赖信息的发布时刻。
15、进一步地,所述控制单元包括:中断子单元,用于在所述第一差异信息指示所述第一依赖信息存在目标依赖信息的标识,而且所述第二依赖信息不存在所述目标依赖信息的标识的情况下,中断所述启动指令;第二执行子单元,用于在所述第一差异信息指示所述第一依赖信息中目标依赖信息的版本和所述第二依赖信息中所述目标依赖信息的版本不一致,或者所述第一依赖信息中目标依赖信息的发布时刻和所述第二依赖信息中所述目标依赖信息的发布时刻不一致的情况下,依据预设策略执行响应指令,其中,所述响应指令至少包括以下之一:生成提示信息、中断所述启动指令;第三执行子单元,用于在所述第一差异信息为空的情况下,执行所述目标应用的启动指令。
16、为了实现上述目的,根据本技术的一个方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述应用程序的启动方法,所述计算机程序被处理器执行时实现本技术各个实施例中所述应用程序的启动方法的步骤。
17、为了实现上述目的,根据本技术的一个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机指令,其中,在所述计算机指令被处理器执行时实现上述任意一项所述应用程序的启动方法。
18、为了实现上述目的,根据本技术的一个方面,提供了一种电子设备,包括一个或多个处理器和存储器,存储器用于存储一个或多个程序,其中,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现上述任意一项所述应用程序的启动方法。
19、通过本技术,采用以下步骤:在检测到针对目标应用的目标指令的情况下,确定所述目标应用的代码块集合,其中,所述目标指令至少包括以下之一:构建目标项目的指令、启动指令,所述目标项目是用于搭建所述目标应用的项目;确定所述代码块集合中每个代码块的依赖信息,得到第一依赖信息;获取所述目标应用中预设文件记录的依赖信息,得到第二依赖信息;比对所述第一依赖信息和第二依赖信息之间的第一差异信息,并依据所述第一差异信息控制所述目标应用执行启动指令,解决了相关技术中由于应用程序的代码之间层层依赖的复杂关系,使得启动应用程序时出现错误的版本依赖,降低了开发人员的工作效率的问题。通过确定每个层级代码块的第一依赖信息,以及确定目标应用实际的第二依赖信息,并对第一依赖信息和第二依赖信息进行比对,从而能够根据比对后的差异信息给出正确的依赖信息的提示,提高了依赖信息的准确性,以及能够在应用程序启动前发现jar包依赖不正确的情况,避免依赖错误延迟到错综复杂的运行阶段才被发现,导致开发人员分析难度增加,人力成本浪费的问题,达到了提高开发人员的工作效率的效果。
1.一种应用程序的启动方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述代码块集合至少包括:第一代码块、第二代码块,其中,所述第二代码块依赖于所述第一代码块,确定所述代码块集合中每个代码块的依赖信息,得到第一依赖信息,包括:
3.根据权利要求2所述的方法,其特征在于,依据所述第二代码块的代码信息确定所述第二代码块的第四依赖信息,包括:
4.根据权利要求2所述的方法,其特征在于,在依据所述第一代码块的代码信息确定所述第一代码块的第三依赖信息之后,所述方法还包括:
5.根据权利要求2所述的方法,其特征在于,在对所述第三依赖信息和所述第四依赖信息进行合并,得到所述第一依赖信息之前,所述方法还包括:
6.根据权利要求1所述的方法,其特征在于,所述依赖信息至少包括以下信息:依赖信息的标识、依赖信息的版本、依赖信息的发布时刻。
7.根据权利要求6所述的方法,其特征在于,比对所述第一依赖信息和第二依赖信息之间的第一差异信息,并依据所述第一差异信息控制所述目标应用执行启动指令,包括:
8.一种应用程序的启动装置,其特征在于,包括:
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机指令,其中,在所述计算机指令被处理器执行时实现权利要求1至7中任意一项所述的应用程序的启动方法。
10.一种电子设备,其特征在于,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至7中任意一项所述的应用程序的启动方法。