一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

在编译时替换启动页面的方法、电子设备、存储介质与流程

2023-01-16 22:17:48 来源:中国专利 TAG:


1.本发明涉及基于android开发语言的计算机数字处理技术领域,尤其涉及在编译时替换启动页面的方法、电子设备、存储介质。


背景技术:

2.android是一个基于linux内核与其他开源软件的开放源代码的移动操作系统,而android开发用的是java语言,现有的android系统呈现的多个模块的结构,例如图1所示,现有的a页面跳转到b页面,是将其通过语言写入一个模块中,而在进行模块扩展开发时,发现原模块中a页面跳转到b页面逻辑不符合跳转到c页面的需求时,需要在原模块增加跳转方法或修改原跳转方法,从而导致原模块其它代码或者设计,要做相应的更改以适应新的跳转要求。这样的代码具有侵入性,耦合性高。
3.综上所述,如何有效地避免代码的侵入性,降低耦合性,是目前本领域技术人员急需解决的技术问题。


技术实现要素:

4.本发明旨在至少解决相关技术中存在的技术问题之一。为此,本发明提供一种在编译时替换启动页面的方法,实现有效地避免代码的侵入性,降低耦合性的目的。
5.本发明提供一种在编译时替换启动页面的方法,包括在android语言下的如下步骤:s1.在编码期间,对扩展模块中待替换页面的类增加注解,注解中包含了待替换页面的类信息和被替换页面的类信息;s2.在编译期间,向原模块中被替换页面插入中间复制信息;s3.在编译期间,在原模块中扫描所有调用被替换页面的类信息的位置,将调用被替换页面的类信息指令替换成调用被替换页面的中间复制信息的指令;s4.在编译期间,在原模块中通过编译器扫描在步骤s1中添加的注解,获取到注解中包含的待替换页面的类信息,并保存下来;s5.在编译期间,在原模块中的app启动的位置插入替换代码,将步骤s4中保存的待替换页面的类信息赋值给被替换页面的中间复制信息。
6.根据本发明提供的所述中间复制信息复制被替换页面的类信息。
7.根据本发明提供的所述注解为附加在代码中的元信息,用于编译和运行时进行解析和使用。
8.根据本发明提供的步骤s2、步骤s3、步骤s5通过asm框架对原模块进行插桩。
9.本发明还提供一种电子设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述在编译时替换启动页面的方法的步骤。
10.本发明还提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器
执行时实现上述在编译时替换启动页面的方法的步骤。
11.本发明实施例中的上述一个或多个技术方案,至少具有如下技术效果之一:本发明当app启动时,优先执行到s5步骤插入的替换代码,将待替换页面的类信息给到被替换页面自定义属性,当执行到启动被替换页面的逻辑时,步骤s3将被替换页面的类信息替换成了插入的自定义属性,所以系统读取到的启动信息时待替换页面的信息。
12.此种做法对原有代码没有侵入性,并对扩展模块动态支持,不引用不修改,对原有逻辑没有影响。
13.本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
14.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
15.图1是现有技术页面替换的原理图;图2是本发明页面替换的原理图,其中箭头方向表示页面跳转方向,实线表示有显示调用代码,虚线表示隐式调用代码;图3是本发明提供的电子设备的结构示意图。
16.附图标记:810.处理器;820.通信接口;830.存储器(memory);840.通信总线。
具体实施方式
17.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。以下实施例用于说明本发明,但不能用来限制本发明的范围。
18.在本发明实施例的描述中,需要说明的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明实施例和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明实施例的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
19.在本发明实施例的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明实施例中的具体含义。
20.在本发明实施例中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。
21.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明实施例的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
22.下面结合图2描述本发明的在编译时替换启动页面的方法、电子设备、存储介质。
23.本发明提供一种在编译时替换启动页面的方法,实现有效地避免代码的侵入性,降低耦合性的目的。
24.本发明提供一种在编译时替换启动页面的方法,包括在android语言下的如下步骤:s1.在编码期间,开发人员在扩展模块中待替换c页面的类增加指定注解,注解中包含了替换和被替换页面的信息(此注解可以为自定义注解,只需要和在执行插桩时的注解为同一个注解就可以)。
25.s2.在编译期间,向原模块中被替换b页面插入一个中间复制信息,中间复制信息的类型为被替换b页面的类信息,在页面启动时需要使用,包含了被替换b页面的类信息的全类名等信息。
26.s3.在编译期间,扫描所有调用被替换b页面类信息属性的地方,将调用被替换b页面的类信息指令替换成调用被替换b页面中间复制信息的指令。
27.s4.在编译期间,通过编译器扫描在步骤一中添加的注解,获取到注解中包含的替换信息,并保存下来。
28.s5.在编译期间,在app启动的位置插入替换代码,将待替换页面c页面的类信息赋值给被替换b页面的中间复制信息。
29.当app启动的时候会优先执行到s5插入的替换代码,将待替换页面c页面的类信息给到被替换b页面的中间复制信息,当执行到启动页面被替换b页面的逻辑时,在编译期间步骤s3已经将被替换b页面的类信息替换成了中间复制信息,所以系统读取到的启动信息时待替换c页面的信息,达到启动页面替换的目的,完成隐式代码调用。
30.本例中注解是附加在代码中的一些元信息,用于编译和运行时进行解析和使用,起到说明、配置的功能。 注解不会影响代码的实际逻辑,仅仅起到辅助性的作用。
31.本例中asm框架是一个 java 类信息操控框架。它能够以二进制形式修改已有类或者动态生成类。asm 可以直接产生二进制 class 文件,也可以在类被加载入 java 虚拟机之前动态改变类行为。asm 从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。步骤s2、步骤s3、步骤s5通过asm框架对原模块进行插桩。插桩
是对二进制代码指令进行增加,修改或删除。
32.本例中类信息是一种包含执行程序,由一序列 op 代码/数据对组成的二进制文件,是一种中间码。
33.本发明当app启动时,优先执行到s5步骤插入的替换代码,将待替换页面的类信息给到被替换页面自定义属性,当执行到启动被替换页面的逻辑时,步骤s3将被替换页面的类信息替换成了插入的自定义属性,所以系统读取到的启动信息时待替换页面的信息。
34.此种做法对原有代码没有侵入性,并对扩展模块动态支持,不引用不修改,对原有逻辑没有影响。
35.图3示例了一种电子设备的实体结构示意图,如图3所示,该电子设备可以包括:处理器(processor)810、通信接口(communications interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑指令,以执行在编译时替换启动页面的方法。
36.此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
37.又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述提供的在编译时替换启动页面的方法。
38.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
39.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
40.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献