CN115543342A - 在编译时替换启动页面的方法、电子设备、存储介质 - Google Patents

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

Info

Publication number
CN115543342A
CN115543342A CN202211495763.9A CN202211495763A CN115543342A CN 115543342 A CN115543342 A CN 115543342A CN 202211495763 A CN202211495763 A CN 202211495763A CN 115543342 A CN115543342 A CN 115543342A
Authority
CN
China
Prior art keywords
page
replaced
information
replacing
class information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202211495763.9A
Other languages
English (en)
Other versions
CN115543342B (zh
Inventor
冯啸
刘明宇
陈宝祥
贾方荣
李梦余
韩培刚
王宏坤
曾程
温亮
席杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianjin Hualai Technology Co Ltd
Original Assignee
Tianjin Hualai Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tianjin Hualai Technology Co Ltd filed Critical Tianjin Hualai Technology Co Ltd
Priority to CN202211495763.9A priority Critical patent/CN115543342B/zh
Publication of CN115543342A publication Critical patent/CN115543342A/zh
Application granted granted Critical
Publication of CN115543342B publication Critical patent/CN115543342B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Library & Information Science (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明涉及基于Android开发语言的计算机数字处理技术领域,尤其涉及在编译时替换启动页面的方法、电子设备、存储介质。当App启动的时候会优先执行到插入的替换代码,将待替换页面C页面的类信息给到被替换B页面的中间复制信息,当执行到启动页面被替换B页面的逻辑时,在编译期间已经将被替换B页面的类信息替换成了中间复制信息,所以系统读取到的启动信息时待替换C页面的信息,达到启动页面替换的目的,完成隐式代码调用,实现有效地避免代码的侵入性,降低耦合性的目的。

Description

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

Claims (6)

1.一种在编译时替换启动页面的方法,其特征在于,包括在Android语言下的如下步骤:
S1.在编码期间,对扩展模块中待替换页面的类增加注解,注解中包含了待替换页面的类信息和被替换页面的类信息;
S2.在编译期间,向原模块中被替换页面插入中间复制信息;
S3.在编译期间,在原模块中扫描所有调用被替换页面的类信息的位置,将调用被替换页面的类信息指令替换成调用被替换页面的中间复制信息的指令;
S4.在编译期间,在原模块中通过编译器扫描在步骤S1中添加的注解,获取到注解中包含的待替换页面的类信息,并保存下来;
S5.在编译期间,在原模块中的App启动的位置插入替换代码,将步骤S4中保存的待替换页面的类信息赋值给被替换页面的中间复制信息。
2.根据权利要求1所述的在编译时替换启动页面的方法,其特征在于,所述中间复制信息复制被替换页面的类信息。
3.根据权利要求1所述的在编译时替换启动页面的方法,其特征在于,所述注解为附加在代码中的元信息,用于编译和运行时进行解析和使用。
4.根据权利要求1至3任一项所述的在编译时替换启动页面的方法,其特征在于,步骤S2、步骤S3、步骤S5通过ASM框架对原模块进行插桩。
5.一种电子设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至4任一项所述在编译时替换启动页面的方法的步骤。
6.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述在编译时替换启动页面的方法的步骤。
CN202211495763.9A 2022-11-28 2022-11-28 在编译时替换启动页面的方法、电子设备、存储介质 Active CN115543342B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211495763.9A CN115543342B (zh) 2022-11-28 2022-11-28 在编译时替换启动页面的方法、电子设备、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211495763.9A CN115543342B (zh) 2022-11-28 2022-11-28 在编译时替换启动页面的方法、电子设备、存储介质

Publications (2)

Publication Number Publication Date
CN115543342A true CN115543342A (zh) 2022-12-30
CN115543342B CN115543342B (zh) 2023-03-24

Family

ID=84721727

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211495763.9A Active CN115543342B (zh) 2022-11-28 2022-11-28 在编译时替换启动页面的方法、电子设备、存储介质

Country Status (1)

Country Link
CN (1) CN115543342B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6895581B1 (en) * 2000-03-30 2005-05-17 Microsoft Corporation Replaceable classes and virtual constructors for object-oriented programming languages
US20130019231A1 (en) * 2011-07-15 2013-01-17 Infineon Technologies Ag Distributed compiling process with instruction signature support
US20190310835A1 (en) * 2017-03-28 2019-10-10 Tencent Technology (Shenzhen) Company Limited Application development method, tool, and device, and storage medium
CN112817657A (zh) * 2021-01-29 2021-05-18 北京奇艺世纪科技有限公司 一种应用程序启动项加载方法、装置、系统及存储介质
CN113391811A (zh) * 2020-03-13 2021-09-14 北京字节跳动网络技术有限公司 函数编译方法、装置、电子设备及计算机可读存储介质
CN114385162A (zh) * 2020-10-16 2022-04-22 腾讯科技(深圳)有限公司 页面编辑方法、装置、设备及存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6895581B1 (en) * 2000-03-30 2005-05-17 Microsoft Corporation Replaceable classes and virtual constructors for object-oriented programming languages
US20130019231A1 (en) * 2011-07-15 2013-01-17 Infineon Technologies Ag Distributed compiling process with instruction signature support
US20190310835A1 (en) * 2017-03-28 2019-10-10 Tencent Technology (Shenzhen) Company Limited Application development method, tool, and device, and storage medium
CN113391811A (zh) * 2020-03-13 2021-09-14 北京字节跳动网络技术有限公司 函数编译方法、装置、电子设备及计算机可读存储介质
CN114385162A (zh) * 2020-10-16 2022-04-22 腾讯科技(深圳)有限公司 页面编辑方法、装置、设备及存储介质
CN112817657A (zh) * 2021-01-29 2021-05-18 北京奇艺世纪科技有限公司 一种应用程序启动项加载方法、装置、系统及存储介质

Also Published As

Publication number Publication date
CN115543342B (zh) 2023-03-24

Similar Documents

Publication Publication Date Title
EP3441876B1 (en) Patch upgrade-based file processing method and device, terminal, and storage medium
Schwartz et al. Incremental compilation in Magpie
CN110059456B (zh) 代码保护方法、代码保护装置、存储介质与电子设备
CN108647032B (zh) 应用加载方法及装置、计算机装置和计算机可读存储介质
CN111359219B (zh) 虚幻引擎的文件处理方法、装置、设备及存储介质
CN108089873A (zh) 一种应用组件即时更新的方法及终端
CN112612502A (zh) 补丁生成方法、装置、设备及存储介质
CN110908734A (zh) 基于插件化的应用组合方法、装置、终端设备及存储介质
CN114003235A (zh) 内核模块编译方法、装置、计算机设备和存储介质
CN114721688A (zh) 一种sdk升级方法、装置以及计算机设备
CN114528204A (zh) 处理代码的方法、处理异常的方法以及各自的装置
CN115543342B (zh) 在编译时替换启动页面的方法、电子设备、存储介质
CN112612833A (zh) 规则包更新方法、装置、设备及存储介质
CN110688320A (zh) 全局变量的检测方法、装置及终端设备
CN115220873A (zh) 一种在Android系统中运行Open Harmony应用的方法
CN112015497B (zh) 换肤方法及装置
CN114721709A (zh) 程序包生成方法、装置、存储介质及计算机设备
WO2024114122A1 (zh) 在编译时替换启动页面的方法、电子设备、储存介质
CN114296764A (zh) 系统升级方法、装置、存储介质和电子设备
CN113641389A (zh) 基于OpenCPU的软件升级方法、装置及设备
CN111399842A (zh) 一种代码编译方法及装置
CN112256324B (zh) 安卓应用程序构建过程中对文件的处理方法及装置
CN116776031B (zh) 开放版式文档ofd中附件内容的查看方法及装置
CN113672238B (zh) 基于实时操作系统模块化管理的运行方法、装置及设备
EP4276610A1 (en) Exception handling method and relevant apparatus

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Feng Xiao

Inventor after: Xi Jie

Inventor after: Liu Mingyu

Inventor after: Chen Baoxiang

Inventor after: Jia Fangrong

Inventor after: Li Mengyu

Inventor after: Han Peigang

Inventor after: Wang Hongkun

Inventor after: Zeng Cheng

Inventor after: Wen Liang

Inventor before: Feng Xiao

Inventor before: Xi Jie

Inventor before: Liu Mingyu

Inventor before: Chen Baoxiang

Inventor before: Jia Fangrong

Inventor before: Li Mengyu

Inventor before: Han Peigang

Inventor before: Wang Hongkun

Inventor before: Zeng Cheng

Inventor before: Wen Liang