控件注入方法、装置及终端设备制造方法及图纸

技术编号:25834121 阅读:15 留言:0更新日期:2020-10-02 14:15
本申请公开了一种控件注入方法、装置及终端设备,方法包括:在接入代码段的SDK程序中,获取R类;其中,代码段用于改变SDK程序获取资源索引值的方式,资源索引值用于指引SDK程序获取对应的资源;根据代码段中的插件,对R类进行扫描截取,生成基于字符串的SqR类;将SqR类作为资源名向第一预设接口传递,以使第一预设接口根据资源名从SDK程序中获取资源索引值;将获取到的资源索引值通过第二预设接口获取对应的控件。

【技术实现步骤摘要】
控件注入方法、装置及终端设备
本申请涉及计算机
,尤其涉及一种控件注入方法、装置及终端设备。
技术介绍
在Android开发中,是采用资源id,即资源索引值的方式获取到界面上控件子控件,从而实现控件注入的。而在常规编码中,android工具aapt会为开发者将资源索引值保存在R类中供开发者编码时使用。其中,R类是指在Android系统中,管理应用程序资源索引的一个类,该类的名字为R。SDK的程序代码通常可以通过使用SDK包名下的R类来获取应用程序资源的索引值,从而根据该索引值进行控件的注入。但是在为接入了SDK的游戏包注入控件的融合场景中,由于融合时资源索引值会进行重构,而资源索引值每次重新构建时产生的可能不一致,导致应用程序调用SDK接口时,SDK无法找到对应的R类中的资源索引值,因而无法正常访问SDK的资源。为解决上述问题,在为接入了SDK的游戏包注入控件的融合场景中,将通过R类获取的资源索引值来实现控件注入的方式,改为通过调用系统接口getIdentifier获取的资源索引值来实现控件注入。然而,由于传入getIdentifier的资源名是自定义的字符串常量,使得该资源名的准确性无法被验证,导致当该资源名出错时,无法准确查找控件,进而在游戏SDK包的融合场景中无法实现控件的注入。
技术实现思路
本申请实施例所要解决的技术问题在于,解决通过调用系统接口getIdentifier获取的资源索引值来实现控件注入时,易造成无法准确查找控件的问题。为解决上述问题,本申请实施例提供一种控件注入方法,适于在计算装置中执行,至少包括如下步骤:在接入代码段的SDK程序中,获取R类;其中,所述代码段用于改变所述SDK程序获取资源索引值的方式,所述资源索引值用于指引所述SDK程序获取对应的资源;根据所述代码段中的插件,对所述R类进行扫描截取,生成基于字符串的SqR类;将SqR类作为资源名向所述第一预设接口传递,以使所述第一预设接口根据所述资源名从所述SDK程序中获取所述资源索引值;将获取到的所述资源索引值通过所述第二预设接口获取对应的控件。进一步的,根据所述代码段中的插件,对所述R类中进行扫描截取,生成基于字符串的SqR类,包括:将所述R类进行字符串过滤,获取过滤后的R类;其中,当过滤后的R类中字符串的关键字与预设的特征字具有相同特征时,则完成所述R类的字符串过滤;对所述过滤后的R类进行正则表达式过滤,生成基于字符串的SqR类。进一步的,所述相同特征包括所述关键字的哈希值的映射位置为所述特征字的哈希值的映射位置的子集。进一步的,将SqR类作为资源名向所述第一预设接口传递,包括:将所述SqR类作为第一注解参数进行扫描;根据所述第一注解参数的扫描结果,接入所述第一预设接口,并将所述第一注解参数作为资源名向所述第一预设接口传递。进一步的,将SqR类作为资源名向所述第一预设接口传递,包括:将所述SqR类作为注解参数集中的任一第二注解参数,扫描所述注解参数集;其中,所述注解参数集包括由SqR类生成的至少一个第二注解参数,以及由自定义的字符串常量生成的至少一个第二注解参数;检测扫描到的注解参数集在R类中是否有对应属性存在;其中,当未检测到所述注解参数集均在R类中有对应属性存在时,抛出异常,否则,将所述注解参数集作为资源名向所述第一预设接口传递。进一步的,根据所述第一注解参数的扫描结果,接入所述第一预设接口,包括:根据所述第一注解参数,将所述SDK程序获取所述资源索引值的初始方式,修改为通过所述第一预设接口获取所述资源索引值;其中,所述初始方式为在对所述SDK原始程序进行编译后所默认采用的获取所述资源索引值的方式。进一步的,还包括:根据所述第一注解参数的扫描结果接入所述第二预设接口。进一步的,所述第一预设接口为getIdentifier接口,所述第二预设接口为findViewById接口。进一步的,还提供一种控件注入装置,包括:数据获取模块,用于在接入代码段的SDK程序中,获取R类;其中,所述代码段用于改变所述SDK程序获取资源索引值的方式,所述资源索引值用于指引所述SDK程序获取对应的资源;数据生成模块,用于根据所述代码段中的插件,对所述R类进行扫描截取,生成基于字符串的SqR类;数据传递模块,用于将SqR类作为资源名向所述第一预设接口传递,以使所述第一预设接口根据所述资源名从所述SDK程序中获取所述资源索引值;控件注入模块,用于将获取到的所述资源索引值通过所述第二预设接口获取对应的控件。进一步的,所述数据生成模块具体用于:将所述R类进行字符串过滤,获取过滤后的R类;其中,当过滤后的R类中字符串的关键字与预设的特征字具有相同特征时,则完成所述R类的字符串过滤;对所述过滤后的R类进行正则表达式过滤,生成基于字符串的SqR类;其中,所述相同特征包括所述关键字的哈希值的映射位置为所述特征字的哈希值的映射位置的子集。进一步的,述数据传递模块具体用于:将所述SqR类作为第一注解参数进行扫描;根据所述第一注解参数的扫描结果,接入所述第一预设接口,并将所述第一注解参数作为资源名向所述第一预设接口传递。进一步的,所述数据传递模块还用于:将所述SqR类作为注解参数集中的任一第二注解参数,扫描所述注解参数集;其中,所述注解参数集包括由SqR类生成的至少一个第二注解参数,以及由自定义的字符串常量生成的至少一个第二注解参数;检测扫描到的注解参数集在R类中是否有对应属性存在;其中,当未检测到所述注解参数集均在R类中有对应属性存在时,抛出异常,否则,将所述注解参数集作为资源名向所述第一预设接口传递。进一步的,还提供一种终端设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如上述实施例所述控件注入方法的步骤。与现有技术相比,本实施例通过对R类进行扫描截取,生成基于字符串的SqR类后,将SqR类作为资源名向第一预设接口传递,以使第一预设接口根据资源名从SDK程序中获取资源索引值,并将获取到的资源索引值通过第二预设接口获取对应的控件的方式,使得getIdentifier接口的资源名由扫描R类的字符串后获得的SqR类生成,不存在由于是自定义的字符串常量而导致准确性无法被验证的问题,进而能够准确查找控件,实现控件注入。附图说明图1是使用R类获取资源的流程示意图;图2是现有技术中使用getIdentifier接口获取资源的流程示意图;图3是一实施例提供的控件注入方法的流程示意图;图4是另一实施例提供的控件注入方法的流程示意图;图5是又一实施例提供的控件注入方法的流程示意图;图6是一实施例提供的控件注入装置的结构示意图;图7是一个实施例提供的终端设备的结构示意图。具体本文档来自技高网...

【技术保护点】
1.一种控件注入方法,其特征在于,包括:/n在接入代码段的SDK程序中,获取R类;其中,所述代码段用于改变所述SDK程序获取资源索引值的方式,所述资源索引值用于指引所述SDK程序获取对应的资源;/n根据所述代码段中的插件,对所述R类进行扫描截取,生成基于字符串的SqR类;/n将SqR类作为资源名向所述第一预设接口传递,以使所述第一预设接口根据所述资源名从所述SDK程序中获取所述资源索引值;/n将获取到的所述资源索引值通过所述第二预设接口获取对应的控件。/n

【技术特征摘要】
1.一种控件注入方法,其特征在于,包括:
在接入代码段的SDK程序中,获取R类;其中,所述代码段用于改变所述SDK程序获取资源索引值的方式,所述资源索引值用于指引所述SDK程序获取对应的资源;
根据所述代码段中的插件,对所述R类进行扫描截取,生成基于字符串的SqR类;
将SqR类作为资源名向所述第一预设接口传递,以使所述第一预设接口根据所述资源名从所述SDK程序中获取所述资源索引值;
将获取到的所述资源索引值通过所述第二预设接口获取对应的控件。


2.根据权利要求1所述的控件注入方法,其特征在于,根据所述代码段中的插件,对所述R类中进行扫描截取,生成基于字符串的SqR类,包括:
将所述R类进行字符串过滤,获取过滤后的R类;其中,当过滤后的R类中字符串的关键字与预设的特征字具有相同特征时,则完成所述R类的字符串过滤;
对所述过滤后的R类通过正则表达式进行扫描截取,生成基于字符串的SqR类。


3.根据权利要求2所述的控件注入方法,其特征在于,所述相同特征包括所述关键字的哈希值的映射位置为所述特征字的哈希值的映射位置的子集。


4.根据权利要求1所述的控件注入方法,其特征在于,将SqR类作为资源名向所述第一预设接口传递,包括:
将所述SqR类作为第一注解参数进行扫描;
根据所述第一注解参数的扫描结果,接入所述第一预设接口,并将所述第一注解参数作为资源名向所述第一预设接口传递。


5.根据权利要求1所述的控件注入方法,其特征在于,将SqR类作为资源名向所述第一预设接口传递,包括:
将所述SqR类作为注解参数集中的任一第二注解参数,扫描所述注解参数集;其中,所述注解参数集包括由SqR类生成的至少一个第二注解参数,以及由自定义的字符串常量生成的至少一个第二注解参数;
检测扫描到的注解参数集在R类中是否有对应属性存在;其中,当未检测到所述注解参数集均在R类中有对应属性存在时,抛出异常,否则,将所述注解参数集作为资源名向所述第一预设接口传递。


6.根据权利要求4所述的控件注入方法,其特征在于,还包括:根据所述第一注解参数的扫描结果接入所述第二预设接口。


7.根据权利要求1所述的控件注入方法,其特征在于,所述...

【专利技术属性】
技术研发人员:陶学诚张国祥朱晓鑫
申请(专利权)人:广州三七网络科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1