应用软件的处理方法及装置、存储介质和电子设备与流程

文档序号:38035688发布日期:2024-05-17 13:20阅读:11来源:国知局
应用软件的处理方法及装置、存储介质和电子设备与流程

本技术涉及金融科技领域或其他相关领域,具体而言,涉及一种应用软件的处理方法及装置、存储介质和电子设备。


背景技术:

1、目前,随着移动端业务功能不断丰富,客户端代码量不断增加,代码耦合日益严重,研发调试难度增加。业界通常采用路由机制实现代码模块间的相互解耦和调用,即每个模块采用接口方式对外提供能力,在路由管理类中注册接口和具体实现的对应关系,通过路由管理类完成接口调用。同时,随着客户端代码逐渐增多,安装包体积逐步增大,业界通常采用插件化技术,将部分相对独立的业务功能从移动app(application,应用程序或者应用软件)安装包剥离,以插件包的形式根据用户使用需求下载,并支持动态更新。

2、另外,相关技术中的自动化路由注册方式是基于“annotationprocessor”(是java编译器提供的一种机制,用于处理和生成源代码中的注解)机制,通过编译时注解动态生成路由注册表代码的方式来实现的,因为编译时注解的特性只在源码编译时生效,无法扫描到aar包(android archive,是一种安卓应用程序包格式,用于将安卓应用程序和相关的资源文件打包成一个单独的文件)里的注解(project依赖(项目依赖,指一个项目所需要的外部资源或库,以便能够正常运行或开发)均无效),因此每个代码模块编译时生成自己的路由注册表类,再采用统一规则命名,在运行期扫描安卓包中的dex文件(是安卓应用程序的可执行文件,它包含了应用程序的字节码和其他相关信息),并对于符合命名规则的类,完成自动注册。但是,采用相关技术的方案会带来以下两个问题:

3、(1)对于dex文件较大场景,需要先手工编写路由注册代码,然后在运行时扫描dex文件,但是,手工编写路由注册代码的工作量较大,且运行时扫描dex文件的耗时较长,存在性能问题,影响用户体验,同时也会导致生成路由注册表的效率较低,进而会导致使用路由注册表开发应用软件的效率较低;

4、(2)对于插件化场景,插件的dex文件是根据用户使用需求,运行时动态下载,没有放在apk安装包(android application package,安卓应用程序的安装包,用于安装和分发安卓应用程序的文件格式)中,因此,通过扫描安装包中的dex文件的方式,无法支持插件的路由自动注册。

5、针对相关技术中采用手工编写路由注册代码的方式生成用于表示应用软件中多个插件之间的调用关系的路由注册表,导致生成插件的路由注册表的效率较低,进而导致使用该路由注册表开发应用软件的效率较低的问题,目前尚未提出有效的解决方案。


技术实现思路

1、本技术的主要目的在于提供一种应用软件的处理方法及装置、存储介质和电子设备,以解决相关技术中采用手工编写路由注册代码的方式生成用于表示应用软件中多个插件之间的调用关系的路由注册表,导致生成插件的路由注册表的效率较低,进而导致使用该路由注册表开发应用软件的效率较低的问题。

2、为了实现上述目的,根据本技术的一个方面,提供了一种应用软件的处理方法。该方法包括:获取用于开发应用软件的源代码文件,其中,所述应用软件为待开发的应用软件,所述应用软件中至少包括宿主插件和m个目标插件,所述宿主插件在所述应用软件中部署的时刻早于所述目标插件在所述应用软件中部署的时刻,m为正整数;对所述源代码文件进行编译处理,得到n个字节码文件,其中,n为正整数;获取所述宿主插件对应的路由注册表,并基于所述n个字节码文件和所述宿主插件对应的路由注册表,生成每个目标插件对应的路由注册表,其中,每个目标插件对应的路由注册表用于记录每个目标插件与其他目标插件之间的调用关系;依据每个目标插件对应的路由注册表,对所述应用软件进行开发处理。

3、进一步地,基于所述n个字节码文件和所述宿主插件对应的路由注册表,生成每个目标插件对应的路由注册表包括:对所述n个字节码文件进行遍历处理,得到所述m个目标插件之间的调用关系;依据所述m个目标插件之间的调用关系,确定每个目标插件与其他目标插件之间的调用关系;调用所述宿主插件对应的路由注册表,并基于每个目标插件与其他目标插件之间的调用关系,生成每个目标插件对应的路由注册表。

4、进一步地,对所述n个字节码文件进行遍历处理,得到所述m个目标插件之间的调用关系包括:对所述n个字节码文件进行遍历处理,得到每个字节码文件对应的接口名称信息;依据每个字节码文件对应的接口名称信息,从所述n个字节码文件中确定s个字节码文件,其中,s为小于等于n的正整数;对所述s个字节码文件中的每个字节码文件进行解析处理,得到所述m个目标插件之间的调用关系。

5、进一步地,依据每个字节码文件对应的接口名称信息,从所述n个字节码文件中确定s个字节码文件包括:判断每个字节码文件对应的接口名称是否为预设接口名称中的接口名称;若每个字节码文件对应的接口名称为所述预设接口名称中的接口名称,则基于所述n个字节码文件,确定所述s个字节码文件;若存在至少一个字节码文件对应的接口名称不是所述预设接口名称中的接口名称,则从所述n个字节码文件中去除所述至少一个字节码文件,得到所述s个字节码文件。

6、进一步地,对所述n个字节码文件进行遍历处理,得到所述m个目标插件之间的调用关系包括:判断当前状态是否为对m个目标插件进行打包处理的状态;若当前状态为对m个目标插件进行打包处理的状态,则对所述n个字节码文件进行遍历处理,得到所述m个目标插件之间的调用关系;若当前状态不是对m个目标插件进行打包处理的状态,则禁止对所述n个字节码文件进行遍历处理,得到所述m个目标插件之间的调用关系。

7、进一步地,对所述源代码文件进行编译处理,得到n个字节码文件包括:从所述源代码文件中获取用于开发所述m个目标插件的目标源码;对所述目标源码进行编译处理,得到t个字节码文件,其中,t为小于n的正整数;对所述源代码文件中除所述目标源码之外的源码进行编译处理,得到y个字节码文件,其中,y为小于n的正整数;基于所述t个字节码文件和所述y个字节码文件,得到所述n个字节码文件。

8、进一步地,依据每个目标插件对应的路由注册表,对所述应用软件进行开发处理包括:依据每个目标插件对应的路由注册表,获取每个目标插件与其他目标插件之间的调用关系;基于每个目标插件与其他目标插件之间的调用关系,对所述应用软件进行开发处理。

9、为了实现上述目的,根据本技术的另一方面,提供了一种应用软件的处理装置。该装置包括:第一获取单元,用于获取用于开发应用软件的源代码文件,其中,所述应用软件为待开发的应用软件,所述应用软件中至少包括宿主插件和m个目标插件,所述宿主插件在所述应用软件中部署的时刻早于所述目标插件在所述应用软件中部署的时刻,m为正整数;第一处理单元,用于对所述源代码文件进行编译处理,得到n个字节码文件,其中,n为正整数;第二处理单元,用于获取所述宿主插件对应的路由注册表,并基于所述n个字节码文件和所述宿主插件对应的路由注册表,生成每个目标插件对应的路由注册表,其中,每个目标插件对应的路由注册表用于记录每个目标插件与其他目标插件之间的调用关系;第三处理单元,用于依据每个目标插件对应的路由注册表,对所述应用软件进行开发处理。

10、进一步地,所述第二处理单元包括:第一处理子单元,用于对所述n个字节码文件进行遍历处理,得到所述m个目标插件之间的调用关系;第一确定子单元,用于依据所述m个目标插件之间的调用关系,确定每个目标插件与其他目标插件之间的调用关系;第一生成子单元,用于调用所述宿主插件对应的路由注册表,并基于每个目标插件与其他目标插件之间的调用关系,生成每个目标插件对应的路由注册表。

11、进一步地,所述第一处理子单元包括:第一处理模块,用于对所述n个字节码文件进行遍历处理,得到每个字节码文件对应的接口名称信息;第一确定模块,用于依据每个字节码文件对应的接口名称信息,从所述n个字节码文件中确定s个字节码文件,其中,s为小于等于n的正整数;第二处理模块,用于对所述s个字节码文件中的每个字节码文件进行解析处理,得到所述m个目标插件之间的调用关系。

12、进一步地,所述第一确定模块包括:第一判断子模块,用于判断每个字节码文件对应的接口名称是否为预设接口名称中的接口名称;第一确定子模块,用于若每个字节码文件对应的接口名称为所述预设接口名称中的接口名称,则基于所述n个字节码文件,确定所述s个字节码文件;第一去除子模块,用于若存在至少一个字节码文件对应的接口名称不是所述预设接口名称中的接口名称,则从所述n个字节码文件中去除所述至少一个字节码文件,得到所述s个字节码文件。

13、进一步地,所述第一处理子单元包括:第一判断模块,用于判断当前状态是否为对m个目标插件进行打包处理的状态;第三处理模块,用于若当前状态为对m个目标插件进行打包处理的状态,则对所述n个字节码文件进行遍历处理,得到所述m个目标插件之间的调用关系;第四处理模块,用于若当前状态不是对m个目标插件进行打包处理的状态,则禁止对所述n个字节码文件进行遍历处理,得到所述m个目标插件之间的调用关系。

14、进一步地,所述第一处理单元包括:第一获取子单元,用于从所述源代码文件中获取用于开发所述m个目标插件的目标源码;第二处理子单元,用于对所述目标源码进行编译处理,得到t个字节码文件,其中,t为小于n的正整数;第三处理子单元,用于对所述源代码文件中除所述目标源码之外的源码进行编译处理,得到y个字节码文件,其中,y为小于n的正整数;第二确定子单元,用于基于所述t个字节码文件和所述y个字节码文件,得到所述n个字节码文件。

15、进一步地,所述第三处理单元包括:第二获取子单元,用于依据每个目标插件对应的路由注册表,获取每个目标插件与其他目标插件之间的调用关系;第四处理子单元,用于基于每个目标插件与其他目标插件之间的调用关系,对所述应用软件进行开发处理。

16、为了实现上述目的,根据本技术的另一方面,提供了一种计算机可读存储介质,所述存储介质存储程序,其中,所述程序执行上述的任意一项所述的应用软件的处理方法。

17、为了实现上述目的,根据本技术的另一方面,提供了一种电子设备,所述电子设备包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述的任意一项所述的应用软件的处理方法。

18、通过本技术,采用以下步骤:获取用于开发应用软件的源代码文件,其中,应用软件为待开发的应用软件,应用软件中至少包括宿主插件和m个目标插件,宿主插件在应用软件中部署的时刻早于目标插件在应用软件中部署的时刻,m为正整数;对源代码文件进行编译处理,得到n个字节码文件,其中,n为正整数;获取宿主插件对应的路由注册表,并基于n个字节码文件和宿主插件对应的路由注册表,生成每个目标插件对应的路由注册表,其中,每个目标插件对应的路由注册表用于记录每个目标插件与其他目标插件之间的调用关系;依据每个目标插件对应的路由注册表,对应用软件进行开发处理,解决了相关技术中采用手工编写路由注册代码的方式生成用于表示应用软件中多个插件之间的调用关系的路由注册表,导致生成插件的路由注册表的效率较低,进而导致使用该路由注册表开发应用软件的效率较低的问题。通过对用于开发应用软件的源代码文件进行编译处理,得到多个字节码文件,并基于多个字节码文件和应用软件中的宿主插件对应的路由注册表,自动生成应用软件中的每个目标插件对应的路由注册表,从而可以支持插件化架构下的路由自动注册,减少开发人员手工编写路由注册代码的工作量,进而提升了生成插件的路由注册表的效率,然后再依据每个目标插件对应的路由注册表,对该应用软件进行开发处理,进而达到了提升使用插件对应的路由注册表开发应用软件的效率的效果。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1