本发明涉及软件开发领域,尤其涉及一种路由预编译系统、路由调用方法、路由预编译方法及装置。
背景技术:
1、移动应用程序的组件化和路由管理是当前移动应用开发中的关键问题,随着应用规模的增长和模块化的推进,传统的路由注册方案面临一些挑战。路由注册包括模块内的路由和页面的映射关系、以及模块之间的映射关系,现有的一些框架通过在运行时扫描应用程序中的所有类文件,实现了路由表的动态注册。然而,这种方法可能存在影响性能的问题,特别是在应用启动时,因为需要在运行时进行大量的类文件扫描,造成了应用启动性能下降,以及还可能引发应用程序的稳定性问题,例如崩溃。
技术实现思路
1、为解决上述的现有技术中路由注册带来的运行时性能下降的问题,本发明的目的在于提供一种能够提高应用启动性能的路由预编译系统、路由调用方法、路由预编译方法及装置。
2、为实现上述发明目的,本发明一实施方式提供一种路由预编译系统,包括:
3、持久化文件,所述持久化文件中存储有第一数据文件和第二数据文件;
4、其中,所述第一数据文件是在gradle脚本项目中使用gradle工具对未编译程序文件进行扫描,提取的路由注解,所述路由注解包括路由类名注解以及路由指向类名注解;
5、所述第二数据文件是在gradle脚本项目中使用asm字节码处理工具对已编译的线上依赖程序文件进行扫描,提取的路由注解。
6、作为本发明的进一步改进,所述第一数据文件和所述第二数据文件均以json形式存储,其中,存储内容均包括模块名称、路由类名称和路由参数名称。
7、作为本发明的进一步改进,所述路由注解还包括层级参数注解,所述层级参数注解用于动态控制路由优先级;
8、所述第一数据文件和所述第二数据文件均包括层级参数。
9、为实现上述发明目的之一,本发明一实施例提供了一种路由调用方法,所述路由调用方法调用的程序文件包括上述的持久化文件,所述路由调用方法包括步骤:
10、当需要调用路由时,在所述持久化文件中寻址,获取路由信息。
11、为实现上述发明目的之一,本发明一实施例提供了一种路由预编译方法,包括如下步骤:
12、建立gradle脚本项目;
13、在所述gradle脚本项目中使用gradle工具对未编译程序文件进行扫描,提取路由注解并存储至第一数据文件,其中,所述路由注解包括路由类名注解以及路由指向类名注解;
14、在所述gradle脚本项目中使用asm字节码处理工具对已编译的线上依赖程序文件进行扫描,提取路由注解并存储至第二数据文件;
15、将所述第一数据文件和所述第二数据文件均写入持久化文件中。
16、作为本发明的进一步改进,所述步骤提取路由注解并存储至第一数据文件包括:
17、将提取的路由注解以json形式存储至第一数据文件,其中,存储内容包括模块名称、路由类名称和路由参数名称;
18、所述步骤提取路由注解并存储至第二数据文件包括:
19、将提取的路由注解以json形式存储至第二数据文件,其中,存储内容包括模块名称、路由类名称和路由参数名称。
20、作为本发明的进一步改进,所述路由预编译方法还包括步骤:
21、定义所述路由注解,其中,所述路由注解包括所述路由类名注解以及所述路由指向类名注解,所述路由类名注解用于标记路由的名称,所述路由指向类名注解用于标记路由指向参数;
22、以及所述路由注解还包括层级参数注解,所述层级参数注解用于动态控制路由优先级,所述第一数据文件和所述第二数据文件均包括层级参数。
23、作为本发明的进一步改进,所述步骤在所述gradle脚本项目中使用gradle工具对未编译程序文件进行扫描还包括:
24、在gradle脚本项目的扫描入口扫描所述未编译程序文件中的模块名称;
25、当所述模块名称为目标名称时,确定该模块为目标模块;
26、在所述gradle脚本项目中使用gradle工具对所述目标模块中的类文件进行扫描。
27、作为本发明的进一步改进,所述路由预编译方法还包括步骤:
28、在所述gradle脚本项目中使用gradle工具对所述未编译程序文件中库模块中的类文件进行扫描。
29、为实现上述发明目的之一,本发明一实施例提供了一种路由预编译装置,包括:
30、建立模块,用于建立gradle脚本项目;
31、第一扫描模块,用于在所述gradle脚本项目中使用gradle工具对未编译程序文件进行扫描,提取路由注解并存储至第一数据文件,其中,所述路由注解包括路由类名注解以及路由指向类名注解;
32、第二扫描模块,用于在所述gradle脚本项目中使用asm字节码处理工具对已编译的线上依赖程序文件进行扫描,提取路由注解并存储至第二数据文件;
33、写入模块,用于将所述第一数据文件和所述第二数据文件均写入持久化文件中。
34、为实现上述发明目的之一,本发明一实施例提供了一种电子设备,包括:
35、存储模块,存储计算机程序;
36、处理模块,执行所述计算机程序时可实现上述的程序文件的路由调用方法、或上述的路由预编译方法中的步骤。
37、为实现上述发明目的之一,本发明一实施例提供了一种可读存储介质,其存储有计算机程序,该计算机程序被处理模块执行时可实现上述的路由调用方法、路由预编译方法中的步骤。
38、与现有技术相比,本发明具有以下有益效果:该路由预编译系统、路由预编译方法及装置通过将路由注册的过程前置到编译期并存储在持久化文件实现持久化,使得路由注册利用编译扫描的过程完成,在程序运行期间需要调用到路由时,直接在持久化文件中完成寻址即可,这样一方面通过gradle构建进行自动地扫描处理,自动化程度高,提高多模块的路由注册流程的便捷性,另一方面避免运行时进行路由注册的性能损耗,使得应用程序的启动的稳定性更好避免崩溃,为移动应用程序的组件化和路由管理带来了显著的改进。
1.一种路由预编译系统,其特征在于,包括:
2.根据权利要求1所述的路由预编译系统,其特征在于,所述第一数据文件和所述第二数据文件均以json形式存储,其中,存储内容均包括模块名称、路由类名称和路由参数名称。
3.根据权利要求1所述的路由预编译系统,其特征在于,所述路由注解还包括层级参数注解,所述层级参数注解用于动态控制路由优先级;
4.一种路由调用方法,其特征在于,所述路由调用方法调用的程序文件包括如权利要求1~3中任一项所述的持久化文件,所述路由调用方法包括步骤:
5.一种路由预编译方法,其特征在于,包括如下步骤:
6.根据权利要求5所述的路由预编译方法,其特征在于,所述步骤提取路由注解并存储至第一数据文件包括:
7.根据权利要求5所述的路由预编译方法,其特征在于,还包括步骤:
8.根据权利要求5所述的路由预编译方法,其特征在于,所述步骤在所述gradle脚本项目中使用gradle工具对未编译程序文件进行扫描还包括:
9.根据权利要求5所述的路由预编译方法,其特征在于,还包括步骤:
10.一种路由预编译装置,其特征在于,包括:
11.一种电子设备,其特征在于,包括: