一种基于ASM字节码插桩实现点击防抖的方法及装置与流程

文档序号:28427875发布日期:2022-01-12 00:36阅读:204来源:国知局
一种基于ASM字节码插桩实现点击防抖的方法及装置与流程
一种基于asm字节码插桩实现点击防抖的方法及装置
技术领域
1.本发明属于安卓应用软件技术领域,具体涉及一种基于asm字节码插桩实现点击防抖的方法及装置。


背景技术:

2.现有的安卓应用中第三方验证码系统中,应用程序需要在一定时间内防止用户快速点击,因为快速点击会造成异常,如连续跳转多个相同的页面,这就需要用到点击防抖技术。点击防抖技术是防止应用程序出现异常所必须的,因为若不采用点击防抖技术会给安卓用户带来不好的体验。
3.点击防抖技术是开发人员注意并解决的问题,现有的解决方案最常用的就是在每个需要点击防抖的步骤中手动加上防抖逻辑。此外还有编写通用点击方法的方案,在通用点击方法内部做防抖处理,替换原有未加防抖的点击方法。但现有的方案都在安卓应用代码编写期做的处理,也就是无论哪种方案都需要在编写代码时把防抖逻辑手动加进去,开发效率低。因为每个需要点击防抖的步骤我们都需要去手动处理,不仅工作量大,还容易造成错误,再者当开发团队有人员变动时,对新来的开发人员来说,也很不友好。
4.此为现有技术的不足,因此,针对现有技术中的上述缺陷,提供一种基于asm字节码插桩实现点击防抖的方法及装置,是非常有必要的。


技术实现要素:

5.针对现有技术的上述现有的点击防抖方案都需要在编写代码时,把防抖逻辑手动加进去,开发效率低的缺陷,本发明提供一种基于asm字节码插桩实现点击防抖的方法及装置,以解决上述技术问题。
6.第一方面,本发明提供一种基于asm字节码插桩实现点击防抖的方法,包括如下步骤:
7.s1.在安卓应用代码编写阶段对每个需要点击防抖的组件中进行防抖标注,并为安卓应用设置插件接口;
8.s2.生asm成点击防抖框架,在安卓应用的编译阶段对经过防抖标注的组件插入防抖逻辑代码,生成防抖插件,实现编译插桩;
9.s3.安卓应用执行时,自动通过插件接口启动防抖插件,实现点击防抖。
10.进一步地,步骤s1具体步骤如下:
11.s11.获取安卓应用在编写阶段的代码;
12.s12.查找每个需要点击防抖的组件对应的代码,通过java注解的方式进行防抖标注;
13.s13.在安卓应用的代码中设置插件接口。插件接口用于编写防抖插件以及防抖插件与安卓应用的互动。
14.进一步地,步骤s2具体步骤如下:
15.s21.生成asm点击防抖框架;
16.s22.通过asm点击防抖框架对编译阶段的安卓应用代码进行扫描,查找需要点击的组件;
17.s23.通过asm点击防抖框架判断需要点击的组件对应代码中是否存在java注解形式的防抖标注;
18.若是,将该需要点击的组件设置为点击防抖组件,进入步骤s24;
19.若否,结束;
20.s24.通过asm点击防抖框架为点击防抖组件插入预先设置的防抖逻辑代码,实现编译插桩;
21.s25.asm点击防抖框架将预先设置的防抖逻辑代码生成防抖插件,通过插件接口建立防抖插件与点击防抖组件的连接。预先设置的防抖逻辑代码生成gradle插件;开发人员对需要点击的组件以java注解的形式进行防抖标注,未进行防抖标注的需要点击组件,则不进行插桩。
22.进一步地,步骤s21中,添加asm依赖,生成asm点击防抖框架;
23.步骤s22具体步骤如下:
24.s221.asm点击防抖框架执行javac命令对安卓应用的java代码进行编译,得到安卓应用的类文件;
25.s222.asm点击防抖框架对安卓应用的类文件进行扫描,查找需要点击的组件对应代码;
26.步骤s24具体步骤如下:
27.s241.asm点击防抖框架创建asm类,并从桌面读取安卓应用的类文件;
28.s242.asm点击防抖动框架将预先设置的防抖逻辑代码插桩到点击防抖组件中,并输出新的字节码文件类文件,实现编译插桩。javac命令以生成类文件的方式对原有java格式的安卓应用文件进行编译,生成类文件。
29.进一步地,步骤s3具体步骤如下:
30.s31.启动安卓应用;
31.s32.当每个需要点击防抖的组件运行时,自动通过插件接口执行防抖插件,实现点击防抖。完成编译插桩后,点击防抖组件运行时,会自动触发防抖插件,进行防抖处理。
32.第二方面,本发明提供一种基于asm字节码插桩实现点击防抖的装置,包括:
33.点击步骤防抖标注模块,用于在安卓应用代码编写阶段对每个需要点击防抖的组件中进行防抖标注,并为安卓应用设置插件接口;
34.防抖逻辑编译插桩模块,用于生asm成点击防抖框架,在安卓应用的编译阶段对经过防抖标注的组件插入防抖逻辑代码,生成防抖插件,实现编译插桩;
35.点击防抖执行模块,用于安卓应用执行时,自动通过插件接口启动防抖插件,实现点击防抖。
36.进一步地,点击步骤防抖标注模块包括:
37.编写代码获取单元,用于获取安卓应用在编写阶段的代码;
38.防抖标注单元,用于查找每个需要点击防抖的组件对应的代码,通过java注解的方式进行防抖标注;
39.插件接口设置单元,用于在安卓应用的代码中设置插件接口。
40.进一步地,防抖逻辑编译插桩模块包括:
41.防抖框架生成单元,用于生成asm点击防抖框架;
42.代码扫描单元,用于通过asm点击防抖框架对编译阶段的安卓应用代码进行扫描,查找需要点击的组件;
43.防抖标注判断单元,用于通过asm点击防抖框架判断需要点击的组件对应代码中是否存在java注解形式的防抖标注;
44.点击防抖步骤设置单元,用于当存在java注解形式的防抖标注时,将该需要点击的组件设置为点击防抖组件;
45.防抖逻辑插入单元,用于通过asm点击防抖框架为点击防抖组件插入预先设置的防抖逻辑代码,实现编译插桩;
46.防抖插件生成单元,用于通过asm点击防抖框架将预先设置的防抖逻辑代码生成防抖插件,通过插件接口建立防抖插件与点击防抖组件的连接。
47.进一步地,防抖框架生成单元中,添加asm依赖,生成asm点击防抖框架;
48.代码扫描单元包括:
49.java代码编译子单元,用于通过asm点击防抖框架执行javac命令对安卓应用的java代码进行编译,得到安卓应用的类文件;
50.类文件扫描子单元,用于通过asm点击防抖框架对安卓应用的类文件进行扫描,查找需要点击的组件对应代码;
51.防抖逻辑插入单元包括:
52.asm类创建子单元,用于通过asm点击防抖框架创建asm类,并从桌面读取安卓应用的类文件;
53.编译创建子单元,用于通过asm点击防抖动框架将预先设置的防抖逻辑代码插桩到点击防抖组件中,并输出新的字节码文件类文件,实现编译插桩。
54.进一步地,点击防抖执行模块包括:
55.安卓应用启动单元,用于启动安卓应用;
56.点击防抖执行单元,用于当每个需要点击防抖的组件运行时,自动通过插件接口执行防抖插件,实现点击防抖。
57.本发明的有益效果在于:
58.本发明提供的基于asm字节码插桩实现点击防抖的方法及装置,通过gradle插件及asm字节码插桩技术,在编译阶段对安卓应用需要防抖的点击组件进行插桩,而无需开发人员手动编写代码,大大减少了开发人员的工作量,降低了开发难度,提高了开发效率,并减少了出错的几率,且在编译期对安卓应用代码进行插桩,避免了对安卓应用性能的影响。
59.此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
60.由此可见,本发明与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。
附图说明
61.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现
有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
62.图1是本发明基于asm字节码插桩实现点击防抖的方法实施例1流程示意图。
63.图2是本发明基于asm字节码插桩实现点击防抖的方法实施例2流程示意图。
64.图3为本发明基于asm字节码插桩实现点击防抖的装置示意图。
65.图中,1-点击步骤防抖标注模块;1.1-编写代码获取单元;1.2-防抖标注单元;1.3-插件接口设置单元;2-防抖逻辑编译插桩模块;2.1-防抖框架生成单元;2.2-代码扫描单元;2.3-防抖标注判断单元;2.4-点击防抖步骤设置单元;2.5-防抖逻辑插入单元;2.6-防抖插件生成单元;3-点击防抖执行模块;3.1-安卓应用启动单元;3.2-点击防抖执行单元。
具体实施方式
66.为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
67.实施例1:
68.如图1所示,本发明提供一种基于asm字节码插桩实现点击防抖的方法,包括如下步骤:
69.s1.在安卓应用代码编写阶段对每个需要点击防抖的组件中进行防抖标注,并为安卓应用设置插件接口;
70.s2.生asm成点击防抖框架,在安卓应用的编译阶段对经过防抖标注的组件插入防抖逻辑代码,生成防抖插件,实现编译插桩;
71.s3.安卓应用执行时,自动通过插件接口启动防抖插件,实现点击防抖。
72.本发明提供的基于asm字节码插桩实现点击防抖的方法,通过gradle插件及asm字节码插桩技术,在编译阶段对安卓应用需要防抖的点击组件进行插桩,而无需开发人员手动编写代码,大大减少了开发人员的工作量,降低了开发难度,提高了开发效率,并减少了出错的几率,且在编译期对安卓应用代码进行插桩,避免了对安卓应用性能的影响。
73.实施例2:
74.如图2所示,本发明提供一种基于asm字节码插桩实现点击防抖的方法,包括如下步骤:
75.s1.在安卓应用代码编写阶段对每个需要点击防抖的组件中进行防抖标注,并为安卓应用设置插件接口;具体步骤如下:
76.s11.获取安卓应用在编写阶段的代码;
77.s12.查找每个需要点击防抖的组件对应的代码,通过java注解的方式进行防抖标注;
78.s13.在安卓应用的代码中设置插件接口;
79.s2.生asm成点击防抖框架,在安卓应用的编译阶段对经过防抖标注的组件插入防
抖逻辑代码,生成防抖插件,实现编译插桩;具体步骤如下:
80.s21.生成asm点击防抖框架;
81.s22.通过asm点击防抖框架对编译阶段的安卓应用代码进行扫描,查找需要点击的组件;
82.s23.通过asm点击防抖框架判断需要点击的组件对应代码中是否存在java注解形式的防抖标注;
83.若是,将该需要点击的组件设置为点击防抖组件,进入步骤s24;
84.若否,结束;
85.s24.通过asm点击防抖框架为点击防抖组件插入预先设置的防抖逻辑代码,实现编译插桩;
86.s25.asm点击防抖框架将预先设置的防抖逻辑代码生成防抖插件,通过插件接口建立防抖插件与点击防抖组件的连接;
87.s3.安卓应用执行时,自动通过插件接口启动防抖插件,实现点击防抖;具体步骤如下:
88.s31.启动安卓应用;
89.s32.当每个需要点击防抖的组件运行时,自动通过插件接口执行防抖插件,实现点击防抖。
90.在上述实施例2中,步骤s21中,添加asm依赖,生成asm点击防抖框架;
91.步骤s22具体步骤如下:
92.s221.asm点击防抖框架执行javac命令对安卓应用的java代码进行编译,得到安卓应用的类文件;
93.s222.asm点击防抖框架对安卓应用的类文件进行扫描,查找需要点击的组件对应代码;
94.步骤s24具体步骤如下:
95.s241.asm点击防抖框架创建asm类,并从桌面读取安卓应用的类文件;
96.s242.asm点击防抖动框架将预先设置的防抖逻辑代码插桩到点击防抖组件中,并输出新的字节码文件类文件,实现编译插桩。
97.实施例3:
98.如图3所示,本发明提供一种基于asm字节码插桩实现点击防抖的装置,包括:
99.点击步骤防抖标注模块1,用于在安卓应用代码编写阶段对每个需要点击防抖的组件中进行防抖标注,并为安卓应用设置插件接口;点击步骤防抖标注模块1包括:
100.编写代码获取单元1.1,用于获取安卓应用在编写阶段的代码;
101.防抖标注单元1.2,用于查找每个需要点击防抖的组件对应的代码,通过java注解的方式进行防抖标注;
102.插件接口设置单元1.3,用于在安卓应用的代码中设置插件接口;
103.防抖逻辑编译插桩模块2,用于生asm成点击防抖框架,在安卓应用的编译阶段对经过防抖标注的组件插入防抖逻辑代码,生成防抖插件,实现编译插桩;防抖逻辑编译插桩模块2包括:
104.防抖框架生成单元2.1,用于生成asm点击防抖框架;
105.代码扫描单元2.2,用于通过asm点击防抖框架对编译阶段的安卓应用代码进行扫描,查找需要点击的组件;
106.防抖标注判断单元2.3,用于通过asm点击防抖框架判断需要点击的组件对应代码中是否存在java注解形式的防抖标注;
107.点击防抖步骤设置单元2.4,用于当存在java注解形式的防抖标注时,将该需要点击的组件设置为点击防抖组件;
108.防抖逻辑插入单元2.5,用于通过asm点击防抖框架为点击防抖组件插入预先设置的防抖逻辑代码,实现编译插桩;
109.防抖插件生成单元2.6,用于通过asm点击防抖框架将预先设置的防抖逻辑代码生成防抖插件,通过插件接口建立防抖插件与点击防抖组件的连接;
110.点击防抖执行模块3,用于安卓应用执行时,自动通过插件接口启动防抖插件,实现点击防抖;点击防抖执行模块3包括:
111.安卓应用启动单元3.1,用于启动安卓应用;
112.点击防抖执行单元3.2,用于当每个需要点击防抖的组件运行时,自动通过插件接口执行防抖插件,实现点击防抖。
113.在上述实施例3中,防抖框架生成单元2.1中,添加asm依赖,生成asm点击防抖框架;
114.代码扫描单元2.2包括:
115.java代码编译子单元,用于通过asm点击防抖框架执行javac命令对安卓应用的java代码进行编译,得到安卓应用的类文件;
116.类文件扫描子单元,用于通过asm点击防抖框架对安卓应用的类文件进行扫描,查找需要点击的组件对应代码;
117.防抖逻辑插入单元2.5包括:
118.asm类创建子单元,用于通过asm点击防抖框架创建asm类,并从桌面读取安卓应用的类文件;
119.编译创建子单元,用于通过asm点击防抖动框架将预先设置的防抖逻辑代码插桩到点击防抖组件中,并输出新的字节码文件类文件,实现编译插桩。
120.本发明提供的基于asm字节码插桩实现点击防抖的装置,通过gradle插件及asm字节码插桩技术,在编译阶段对安卓应用需要防抖的点击组件进行插桩,而无需开发人员手动编写代码,大大减少了开发人员的工作量,降低了开发难度,提高了开发效率,并减少了出错的几率,且在编译期对安卓应用代码进行插桩,避免了对安卓应用性能的影响。
121.尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1