CN109857444A - 应用程序的更新方法、装置、电子设备和可读存储介质 - Google Patents

应用程序的更新方法、装置、电子设备和可读存储介质 Download PDF

Info

Publication number
CN109857444A
CN109857444A CN201910005839.7A CN201910005839A CN109857444A CN 109857444 A CN109857444 A CN 109857444A CN 201910005839 A CN201910005839 A CN 201910005839A CN 109857444 A CN109857444 A CN 109857444A
Authority
CN
China
Prior art keywords
file
code
application program
differentiation
class
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
CN201910005839.7A
Other languages
English (en)
Other versions
CN109857444B (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.)
Shanghai Lazhasi Information Technology Co Ltd
Original Assignee
Shanghai Lazhasi Information 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 Shanghai Lazhasi Information Technology Co Ltd filed Critical Shanghai Lazhasi Information Technology Co Ltd
Priority to CN201910005839.7A priority Critical patent/CN109857444B/zh
Publication of CN109857444A publication Critical patent/CN109857444A/zh
Application granted granted Critical
Publication of CN109857444B publication Critical patent/CN109857444B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明实施例公开了一种应用程序的更新方法、装置、电子设备和可读存储介质。本发明实施例通过在编译时根据自定义注解和类记录文件获取的代码修改文件和所述类记录文件生成差异化可执行文件,在所述应用程序被执行时加载所述差异化可执行文件完成所述应用程序的更新,由此,可以使得目标客户端不需要下载所述应用程序的安装包便可实现升级,提高了应用程序的更新效率。

Description

应用程序的更新方法、装置、电子设备和可读存储介质
技术领域
本发明涉及计算机技术领域,更具体地,涉及一种应用程序的更新方法、装置、电子设备和可读存储介质。
背景技术
随着互联网软件技术的发展,并且用户的需求越来越多样化及多变化,使得应用程序的开发越来越趋于复杂化。而为了修复bug、增加新的应用需求,应用程序通常需要进行版本升级。与之对应地,应用程序的版本升级也变得越来越频繁。
在新版本应用程序发布前,一般会选取一些目标客户端下载更新新版本应用程序,并获取这些目标客户端的反馈信息,在这些目标客户端反馈信息仍然出现bug或功能未达到预期时,需要进一步修改应用程序,直至目标客户端反馈信息基本满足预期,正式发布新版本的应用程序。由此,新版本的应用程序在正式发布前,需要一部分目标客户端至少下载更新一次新版本应用程序以完成新版本应用程序的测试。若在测试过程中下发完整的新版本应用程序的安装包给目标客户端,对于体积较大的安装包,需要耗费较长的下载时间,并且更新时需要中断目标客户端当前的操作,这使得应用程序更新的效率较低。
发明内容
有鉴于此,本发明实施例提供一种应用程序的更新方法、装置、电子设备和可读存储介质,以使得目标客户端不需要下载所述应用程序的安装包便可实现升级,提高了应用程序的更新效率。
第一方面,本发明实施例提供一种应用程序的更新方法,所述方法包括:
加载所述应用程序的各功能的代码文件,其中,修改后的所述代码文件具有对应的自定义注解;
加载类记录文件,所述类记录文件包括所述功能的代码文件的类名和地址;
在编译时根据所述自定义注解和所述类记录文件获取代码修改文件,所述代码修改文件包括修改后的所述代码文件的代码;
根据所述代码修改文件和所述类记录文件生成差异化可执行文件,所述差异化可执行文件被加载执行时更新所述应用程序;以及
将差异化可执行文件发送到目标客户端。
进一步可选地,所述方法还包括:
获取所述类记录文件。
进一步可选地,所述获取所述类记录文件包括:
在编译时,在所述功能的代码文件中载入预设代码,所述预设代码被配置为根据修改标识在所述应用程序被执行时执行修改后的所述代码文件的代码;以及
记录所有载入所述预设代码的代码文件的类名和地址以获取所述类记录文件。
进一步可选地,所述预设代码被配置为响应于所述修改标识为第一状态,执行修改后的所述代码文件的代码。
进一步可选地,所述在编译时根据所述自定义注解和所述类记录文件获取代码修改文件包括:
在编译时根据所述自定义注解和所述类记录文件基于字节码操作获取代码修改文件。
进一步可选地,所述自定义注解包括新增注解和修改注解。
进一步可选地,所述应用程序的各功能对应不同的差异化可执行文件;
所述将差异化可执行文件发送到目标客户端包括:
将所述不同的差异化可执行文件发送到同一个目标客户端或不同的目标客户端。
进一步可选地,所述方法还包括:
获取所述目标客户端更新所述应用程序后的反馈信息。
第二方面,本发明实施例提供一种应用程序的更新方法,所述方法包括:
获取至少一个差异化可执行文件;以及
在执行所述应用程序时加载所述差异化可执行文件,以更新所述应用程序中与所述差异化可执行文件对应的功能;
其中,所述差异化可执行文件根据代码修改文件和类记录文件生成,所述代码修改文件包括修改后的所述应用程序的功能的代码文件的代码,所述类记录文件包括所述功能的代码文件的类名和地址;所述代码修改文件根据修改后的代码文件对应的自定义注解和所述功能对应的类记录文件生成。
进一步可选地,所述应用程序的功能的代码文件中包括预设代码,所述预设代码被配置为根据修改标识在所述应用程序被执行时执行修改后的代码文件的代码。
进一步可选地,所述在执行所述应用程序时加载所述差异化可执行文件,以更新所述应用程序中与所述差异化可执行文件对应的功能包括:
根据所述类记录文件将修改后的代码文件中的预设代码的修改标识置为第一状态;
根据所述类记录文件将所述差异化可行执行文件中的修改后的代码文件的代码载入所述预设代码中;以及
响应于所述修改标识为第一状态,执行载入的修改后的代码文件的代码以更新所述应用程序中与所述差异化可执行文件对应的功能。
进一步可选地,所述方法还包括:
发送更新应用程序后的反馈信息。
第三方面,本发明实施例提供一种应用程序的更新装置,所述装置包括:
代码文件加载单元,被配置为加载所述应用程序的各功能的代码文件,其中,修改后的所述代码文件具有对应的自定义注解;
类记录文件加载单元,被配置为加载类记录文件,所述类记录文件包括所述功能的代码文件的类名和地址;
代码修改文件获取单元,被配置为在编译时根据所述自定义注解和所述类记录文件获取代码修改文件,所述代码修改文件包括修改后的所述代码文件的代码;
差异化可执行文件获取单元,被配置为根据所述代码修改文件和所述类记录文件生成差异化可执行文件,所述差异化可执行文件被加载执行时更新所述应用程序;以及
发送单元,被配置为将差异化可执行文件发送到目标客户端。
进一步可选地,所述装置还包括:
类记录文件获取单元,被配置为获取所述类记录文件。
进一步可选地,所述类记录文件获取单元包括:
预设代码载入子单元,被配置为在编译时,在所述功能的代码文件中载入预设代码,所述预设代码被配置为根据修改标识在所述应用程序被执行时执行修改后的代码文件的代码;以及
类记录文件获取子单元,被配置为记录所有载入所述预设代码的代码文件的类名和地址以获取所述类记录文件。
进一步可选地,所述预设代码被配置为响应于所述修改标识为第一状态,执行修改后的代码文件的代码。
进一步可选地,所述代码修改文件获取单元包括:
代码修改文件获取子单元,被配置为在编译时根据所述自定义注解和所述类记录文件基于字节码操作获取代码修改文件。
进一步可选地,所述自定义注解包括新增注解和修改注解。
进一步可选地,所述应用程序的各功能对应不同的差异化可执行文件;
所述发送单元包括:
发送子单元,被配置为将所述不同的差异化可执行文件发送到同一个目标客户端或不同的目标客户端。
进一步可选地,所述装置还包括:
反馈信息获取单元,被配置为获取所述目标客户端更新所述应用程序后的反馈信息。
第四方面,本发明实施例提供一种应用程序的更新装置,所述装置包括:
获取单元,被配置为获取至少一个差异化可执行文件;以及
更新单元,被配置为在执行所述应用程序时加载所述差异化可执行文件,以更新所述应用程序中与所述差异化可执行文件对应的功能;
其中,所述差异化可执行文件根据代码修改文件和类记录文件生成,所述代码修改文件包括修改后的所述应用程序的功能的代码文件的代码,所述类记录文件包括所述功能的代码文件的类名和地址;所述代码修改文件根据修改后的代码文件对应的自定义注解和所述功能对应的类记录文件生成。
进一步可选地,所述应用程序的功能的代码文件中包括预设代码,所述预设代码被配置为根据修改标识在所述应用程序被执行时选择执行修改后的代码文件的代码。
进一步可选地,所述更新单元包括:
修改标识设置子单元,被配置为根据所述类记录文件将修改后的代码文件中的预设代码的修改标识置为第一状态;
修改代码加载子单元,被配置为根据所述类记录文件将所述差异化可行执行文件中的修改后的代码文件的代码载入所述预设代码中;以及更新子单元,被配置为响应于所述修改标识为第一状态,执行载入的所述修改后的代码文件的代码以更新所述应用程序中与所述差异化可执行文件对应的功能。
进一步可选地,所述装置还包括:
反馈信息发送单元,被配置为发送更新应用程序后的反馈信息。
第五方面,本发明提供一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理器执行以实现如下步骤:
加载所述应用程序的各功能的代码文件,其中,修改后的所述代码文件具有对应的自定义注解;
加载类记录文件,所述类记录文件包括所述功能的代码文件的类名和地址;
在编译时根据所述自定义注解和所述类记录文件获取代码修改文件,所述代码修改文件包括修改后的所述代码文件的代码;
根据所述代码修改文件和所述类记录文件生成差异化可执行文件,所述差异化可执行文件被加载执行时更新所述应用程序;以及
将差异化可执行文件发送到目标客户端。
进一步可选地,所述步骤还包括:
获取所述类记录文件。
进一步可选地,所述获取所述类记录文件包括:
在编译时,在所述功能的代码文件中载入预设代码,所述预设代码被配置为根据修改标识在所述应用程序被执行时执行修改后的所述代码文件的代码;以及
记录所有载入所述预设代码的代码文件的类名和地址以获取所述类记录文件。
进一步可选地,所述预设代码被配置为响应于所述修改标识为第一状态,执行修改后的所述代码文件的代码。
进一步可选地,所述在编译时根据所述自定义注解和所述类记录文件获取代码修改文件包括:
在编译时根据所述自定义注解和所述类记录文件基于字节码操作获取代码修改文件。
进一步可选地,所述自定义注解包括新增注解和修改注解。
进一步可选地,所述应用程序的各功能对应不同的差异化可执行文件;
所述将差异化可执行文件发送到目标客户端包括:
将所述不同的差异化可执行文件发送到同一个目标客户端或不同的目标客户端。
进一步可选地,所述步骤还包括:
获取所述目标客户端更新所述应用程序后的反馈信息。
第六方面,本发明实施例提供一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理器执行以实现如下步骤:
获取至少一个差异化可执行文件;以及
在执行所述应用程序时加载所述差异化可执行文件,以更新所述应用程序中与所述差异化可执行文件对应的功能;
其中,所述差异化可执行文件根据代码修改文件和类记录文件生成,所述代码修改文件包括修改后的所述应用程序的功能的代码文件的代码,所述类记录文件包括所述功能的代码文件的类名和地址;所述代码修改文件根据修改后的代码文件对应的自定义注解和所述功能对应的类记录文件生成。
进一步可选地,所述应用程序的功能的代码文件中包括预设代码,所述预设代码被配置为根据修改标识在所述应用程序被执行时执行修改后的代码文件的代码。
进一步可选地,所述在执行所述应用程序时加载所述差异化可执行文件,以更新所述应用程序中与所述差异化可执行文件对应的功能包括:
根据所述类记录文件将修改后的代码文件中的预设代码的修改标识置为第一状态;
根据所述类记录文件将所述差异化可行执行文件中的修改后的代码文件的代码载入所述预设代码中;以及
响应于所述修改标识为第一状态,执行载入的所述修改后的代码文件的代码以更新所述应用程序中与所述差异化可执行文件对应的功能。
进一步可选地,所述步骤还包括:
发送更新应用程序后的反馈信息。
第七方面,本发明实施例提供一种计算机可读存储介质,其上存储计算机程序指令,所述计算机程序指令在被处理器执行时实现如本发明实施例的第一方面所述的方法。
第八方面,本发明实施例提供一种计算机可读存储介质,其上存储计算机程序指令,所述计算机程序指令在被处理器执行时实现如本发明实施例的第二方面所述的方法。
本发明实施例通过在编译时根据自定义注解和类记录文件获取的代码修改文件和所述类记录文件生成差异化可执行文件,在所述应用程序被执行时加载所述差异化可执行文件完成所述应用程序的更新,由此,可以使得目标客户端不需要下载所述应用程序的安装包便可实现升级,提高了应用程序的更新效率。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1是本发明第一实施例的应用程序的更新方法的流程图;
图2是本发明第一实施例的类记录文件获取方法的流程图;
图3是本发明第二实施例的应用程序的更新方法的流程图;
图4是本发明第二实施例的一种实施方式的应用程序的更新方法的流程图;
图5是本发明实施例的应用程序的更新过程的示意图;
图6是本发明第三实施例的应用程序的更新装置的示意图;
图7是本发明第四实施例的应用程序的更新装置的示意图;
图8是本发明第五实施例的电子设备的示意图。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。
此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
图1是本发明第一实施例的应用程序的更新方法的流程图。如图1所示,本实施例的应用程序的更新方法包括以下步骤:
步骤S110,加载应用程序的各功能的代码文件,其中,修改后的应用程序的各功能的代码文件具有对应的自定义注解。也就是说,在对已发布的应用程序进行优化时,对现有的各功能的代码文件中的代码进行修改,同时,对修改的代码文件添加对应的自定义注解。其中,在编译时,若扫描到自定义注解,则将该自定义注解对应的修改后的代码文件的代码提取出来。应理解,应用程序可实现多个功能,各功能分别包括多个代码文件。
注解可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明和注释。注解是以“@注解名”的形式存在于代码中,注解不会直接影响到程序的语义,但是可以实现创建文档、跟踪代码中的依赖性、执行基本编译的检查等功能。例如,在Android系统中,java注解可以应用在构建项目时。其中,项目构建过程包括生成源码,编译源码,生成xml文件,打包编译的源码和文件到APK安装包等。其中,项目构建工具会依照特定的注解扫码java代码,以根据这些注解生成源码或文件。
在本实施例中,在修改后的代码文件中添加对应的自定义注解,以使得在编译时通过该自定义注解获取修改后的代码文件的代码内容。在一种可选的实现方式中,本实施例的自定义注解包括新增注解@Add和修改注解@Modify。其中,在代码文件中新增代码时添加新增注解@Add。在代码文件修改代码时添加修改注解@Modify。例如,在修改Android系统中的应用程序的功能的代码文件时,在修改后的代码文件中添加的新增注解@Add和修改注解@Modify为java注解。由此,可以在编译时可以根据新增注解@Add和修改注解@Modify生成包含有修改后的代码文件的代码的代码修改文件。
步骤S120,加载类记录文件。其中,类记录文件包括所述功能的代码文件的类名和地址。
步骤S130,在编译时根据自定义注解和类记录文件获取代码修改文件。其中,代码修改文件包括修改后的代码文件的代码。具体地,在编译过程中,加载器基于类记录文件加载应用程序的功能对应的代码文件,并在扫描到对应的自定义注解时获取修改后的代码文件的代码内容,由此,可以获取该功能对应的多个代码修改文件。在一种可选的实现方式中,在编译时根据自定义注解和类记录文件基于字节码操作获取代码修改文件。字节码(Byte-code)是一种包含执行程序,由一序列op代码/数据对组成的二进制文件,是一种中间码。字节码操作具备在运行时或是编译时都能修改程序的能力。也就是说,字节码操作通常被用来执行类的修改,或者由程序自动创建执行类等相关方面的操作。
步骤S140,根据代码修改文件和类记录文件生成差异化可执行文件。其中,该差异化可执行文件被加载执行时更新应用程序。在一种可选的实现方式中,在Android系统中,差异化可执行文件为dex文件。dex文件是一种可被原生Android系统加载的可执行文件格式。其中,dex文件可以在应用程序被执行时被类加载器DexClassLoader动态加载到应用程序中,以实现应用程序功能的变更。类加载器DexClassLoader是Android系统中原生的一种类加载器,多被用以加载dex文件。类加载器DexClassLoader具有以下特性:在一个子类加载器收到类加载请求时,此子类加载器不会自己尝试去加载该类加载请求对应的类,而是将该类加载请求委托给父类加载器完成。只有在父类加载器的搜索范围内找不到该类加载请求对应的类时,子加载器才会尝试去加载,由此,可以确保一个类只被加载一次。
步骤S150,将差异化可执行文件发送到目标客户端。在一种可选的实现方式中,应用程序的各功能对应不同的差异化可执行文件。容易理解,应用程序的各功能也分别对应不同的类记录文件。目标客户端可以通过下载对应的差异化可执行文件,并在执行应用程序时加载并执行对应的差异化可执行文件以完成对应用程序的功能更新,由此可以提高应用程序的更新效率。
在一种可选的实现方式中,本实施例的应用程序的更新方法还包括:获取目标客户端更新应用程序后的反馈信息。
具体地,将不同的差异化可执行文件发送到同一个目标客户端或不同的目标客户端,以使得目标客户端针对不同的功能进行更新,从而反馈所更新的功能的使用信息。由此,本实施例的应用程序的更新方法可应用于新版本的应用程序在正式发布前的测试阶段。
在现有技术中,通常在测试过程中下发完整的新版本应用程序的安装包给目标客户端。这会使得应用市场轻易获取该新版本应用程序的安装包,若新版本应用程序的安装包被广泛同步到应用市场,会造成非目标客户端下载该新版本应用程序的安装包。而由于非目标客户端可能会存在访问受限的问题,因此,可能会造成样本失控,不能获取较为准确客观的反馈信息的情况。
而根据本实施例的应用程序的更新方法,服务器将一个差异化可执行文件或多个不同的差异化可执行文件下发给目标客户端。其中,目标客户端可以为预先选择的忠实用户的客户端。各目标客户端只需要下载差异化可执行文件,在执行应用程序时便可以通过加载执行该差异化可执行文件来完成应用程序中对应的功能的更新。同时,一个目标客户端可以只下载各不同的差异化可执行文件中的一个,以获取该差异化可执行文件对应的功能更新后的反馈信息。一个目标客户端也可以下载多个不同的差异化可执行文件,以获取这多个不同的差异化可执行文件对应的多个功能更新后的反馈信息。由此,目标客户端无需下载新版本应用程序的安装包便可完成对应的功能更新,使得在新版本应用程序的测试过程中,目标客户端无需反复下载新版本应用程序的安装包,提高了新版本应用程序的测试效率。同时,在测试过程中服务器不需要下发完整的新版本应用程序的安装包给目标客户端。因此,新版本应用程序的安装包不会被同步到应用市场,非目标客户端也不会下载该新版本应用程序的安装包。由此,可以获取较为准确客观的反馈信息的情况。
本实施例的应用程序的更新方法还包括:获取类记录文件。
图2是本发明第一实施例的类记录文件获取方法的流程图。如图2所示,本实施例的类记录文件获取方法包括以下步骤:
步骤S210,在编译时,在应用程序的功能的代码文件中载入预设代码。其中,预设代码被配置为根据修改标识在应用程序被执行时执行修改后的代码文件的代码。其中,修改前的代码文件为已发布的应用程序的功能的代码文件,修改后的代码文件为对已发布的应用程序的功能的代码文件进行修改而获得的代码文件。在应用程序的测试过程中,修改前的代码文件也可以为前一次下发给目标客户端的差异化可执行文件对应的代码文件,修改后的代码文件为对前一次下发给目标客户端的差异化可执行文件对应的代码文件进行修改而获得的代码文件。在一种可选的实现方式中,该预设代码被配置为响应于修改标识为第一状态,执行修改后的代码文件的代码。
步骤S220,记录所有载入预设代码的代码文件的类名和地址以获取上述类记录文件。
在一种可选的实现方式中,上述预设代码在应用程序被发布前被基于字节码操作方法被添加至对应的代码文件中。应理解,在更新过程中加载的类记录文件为已发布版本的应用程序对应的类记录文件,也就是说,目标客户端已经下载安装的应用程序中包括该预设代码。
在一种可选的实现方式中,该预设代码为一个判断函数,具体可以为:
if(codeChanged){
//通过反射机制载入修改后的代码文件的代码的方法,以在
codeChanged被置为第一状态时在此处载入修改后的代码文件的代码
}
else{
//原代码文件的代码
}
其中,codeChanged为修改标识,在修改标识codeChanged被设置为第一状态,该预设代码加载修改后的代码文件的代码。应理解,在目标客户端未下载新的差异化可执行文件时,修改标识codeChanged处于默认状态,也即修改标识codeChanged为第二状态,以执行原代码文件的代码。
以下采用一个代码文件x为例对获取差异化可执行文件进行描述,应理解,以下代码仅仅是示例性的,并不代表实际应用中的代码文件。
在未编译时,代码文件x的代码为:
public viod showDialog(){
dialog.show();
}
在编译时,载入预设代码,则代码文件x为:
代码文件x被修改,添加自定义注解@Modify,本实施例以自定义注解添加在代码文件的代码头部为例,应理解,本实施例并不对自定义注解的添加位置进行限制,其还可以添加在代码的修改处等。修改后的代码文件x的代码为:
在编译时根据类记录文件在扫描到自定义注解@Modify获取的代码修改文件x'为:
由此,根据类记录文件,获取代码文件x对应的功能的所有代码修改文件,以获取该功能对应的差异化可执行文件X。
由此,目标客户端在下载了最新的差异化可执行文件后,在执行应用程序时,通过类加载器加载该差异化可执行文件,并基于类记录文件将被修改的代码文件对应的预设代码中的修改标识codeChanged设置为第一状态,以使得预设代码加载执行修改后的代码文件的代码,从而完成该差异化可执行文件对应的功能的更新。
本实施例通过在编译时根据自定义注解和类记录文件获取的代码修改文件和所述类记录文件生成差异化可执行文件,在所述应用程序被执行时加载所述差异化可执行文件完成所述应用程序的更新,由此,可以使得目标客户端不需要下载所述应用程序的安装包便可实现升级,提高了应用程序的更新效率。
图3是本发明第二实施例的应用程序的更新方法的流程图。如图3所示,本实施例的应用程序的更新方法包括以下步骤:
步骤S310,获取至少一个差异化可执行文件。在一种可选的实现方式中,首先判断目标客户端是否存在该版本的差异化可执行文件。在该目标客户端不存在该版本的差异化可执行文件时,下载该版本的差异化可执行文件。若目标客户端中存在与该差异化可执行文件对应于同一个功能,并且版本比该差异化可执行文件低的差异化可执行文件,则删除低版本的差异化可执行文件,并将下载的最新版本的差异化可执行文件存储在原文件夹中(也即低版本的差异化可执行文件的存储文件夹)。由此,可以使得同一个目标客户端对于应用程序的同一个功能的多次更新,实现了功能的快速迭代。
步骤S320,在执行应用程序时加载该差异化可执行文件,以更新应用程序中与该差异化可执行文件对应的功能。
其中,差异化可执行文件根据代码修改文件和类记录文件生成。代码修改文件包括修改后的应用程序的功能的代码文件的代码。类记录文件包括应用程序的功能的代码文件的类名和地址。代码修改文件根据修改后的代码文件中的自定义注解和功能对应的类记录文件生成。
其中,目标客户端已安装的应用程序的功能对应的代码文件中已经被添加预设代码。该预设代码被配置为根据修改标识在应用程序被执行时执行修改后的代码文件的代码。
图4是本发明第二实施例的一种实施方式的应用程序的更新方法的流程图。如图4所示,在执行应用程序时加载该差异化可执行文件,以更新应用程序中与该差异化可执行文件对应的功能具体为包括以下步骤:
步骤S321,根据类记录文件将修改后的代码文件中的预设代码的修改标志置为第一状态。在一种可选的实现方式中,该预设代码为一个判断函数,具体可以为:
if(codeChanged){
//通过反射机制载入修改后的代码文件的代码的方法,以在
codeChanged被置为第一状态时在此处载入修改后的代码文件的代码
}
else{
//原代码文件的代码
}
其中,codeChanged为修改标识,在修改标识codeChanged被设置为第一状态,该预设代码被执行时加载修改后的代码文件的代码。
步骤S322,根据类记录文件将差异化可执行文件中的修改后的代码文件的代码载入预设代码中。
步骤S323,响应于修改标识为第一状态,执行载入的修改后的代码文件的代码以更新应用程序中与差异化可执行文件对应的功能。
在一种可选的实现方式中,根据类记录文件基于JAVA的反射机制将应用程序中的功能对应的代码文件中的修改标识codeChanged设置为第一状态,并将差异化可执行文件中的修改后的代码文件的代码载入目标位置。
依然采用上述差异化可执行文件X及代码文件x为例,并基于JAVA的反射机制对应用程序的更新进行描述。
首先采用类加载器加载原代码文件生成一个oldclass对象,再采用类加载器加载差异化可执行文件X生成一个newclass对象。根据类记录文件对oldclass对象进行类名查找,找到修改的类对象(public viod showDialog()),进而找到类对象public viodshowDialog()中的修改标识codeChanged,通过JAVA的反射机制将修改标识codeChanged设置为true(也即第一状态),并通过JAVA的反射机制将newclass对象中的代码载入到public viod showDialog()的代码逻辑中。由此,在应用程序被执行时,加载差异化可执行文件X,执行的代码逻辑为:
由此,在客户端下载差异化可执行文件X后,在在应用程序被执行时,public viodshowDialog()执行的代码逻辑为:
if(dialog!=null){dialog.show()}
由此,可以实现更新应用程序中差异化可执行文件X对应的功能。
JAVA反射机制是在应用程序的运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。这种动态获取的信息以及动态调用对象的方法的功能称为JAVA语言的反射机制。由此,可以基于类记录文件并利用JAVA的反射机制实现在应用程序处于运行状态时,动态加载差异化可执行文件中的代码,从而更新应用程序中该差异化可执行文件对应的功能。
本实施例通过获取并加载执行差异化可执行文件,以更新应用程序中该差异化可执行文件对应的功能,其中,该差异化可执行文件由根据自定义注解和类记录文件获取的代码修改文件和类记录文件生成,由此,可以使得目标客户端不需要下载所述应用程序的安装包便可实现升级,提高了应用程序的更新效率。
本实施例的应用程序的更新方法还包括:发送更新应用程序后的反馈信息。在一种可选的实现方式中,本实施例的应用程序的更新方法可应用于新版本的应用程序在正式发布前的测试阶段。
应用程序的各功能对应不同的差异化可执行文件。容易理解,应用程序的各功能也分别对应不同的类记录文件。目标客户端可以通过下载一个差异化可执行文件或多个不同的差异化可执行文件,并在执行应用程序时加载并执行其下载的差异化可执行文件以完成对应用程序的一个或多个功能的更新。并且,将功能更新后的使用信息反馈给服务器,从而使得应用程序开发者基于反馈信息进一步调整该功能或正式发布新版本的应用程序的安装包。由此,可以使得在测试过程中服务器不需要下发完整的新版本应用程序的安装包给目标客户端,提高了目标客户端的更新效率。同时,在本实施例中,基本不存在样本失控的风险,由此可以获取较为准确客观的反馈信息的情况。
图5是本发明实施例的应用程序的更新过程的示意图。本实施例以Android系统中的应用程序更新为例。该应用程序需要更新功能A、功能B和功能C。其中,在已发布的应用程序中,功能A对应于类记录文件A,功能B对应于类记录文件B,功能C对应于类记录文件C。如图5所示,根据本发明第一实施例的应用程序的更新方法生成了差异化可执行文件dexA、差异化可执行文件dexB和差异化可执行文件dexC。其中,将差异化可执行文件dexA下发给目标客户端1。目标客户端1下载差异化可执行文件dexA,并将原存储中功能A对应低版本的dex文件删除,将差异化可执行文件dexA存储在对应的文件中。在对功能A更新之前,功能A中的一个代码文件1a中的预设代码的修改标识为false,也即修改标识处于第二状态。在下载差异化可执行文件dexA后,目标客户端1运行该应用程序以更新功能A。具体地,通过类加载器DexClassLoader加载差异化可执行文件dexA,并基于java的反射机制根据类记录文件A将代码文件1a中的预设代码的修改标识设置为true(也即第一状态),并将从差异化可执行文件dexA加载出的修改后的代码文件1a的代码内容载入目标位置。同理,采用上述方法将功能A的其他修改后的代码文件的代码内容载入对应的目标位置。由此,该应用程序被执行时,加载执行了差异化可执行文件dexA中修改后的代码,完成了对功能A的更新。在完成更新后,目标客户端1将更新后的使用信息反馈给服务器,以完成功能A的更新测试。
将差异化可执行文件dexB下发给目标客户端2。目标客户端2执行该应用程序,并通过类加载器DexClassLoader加载差异化可执行文件dexB,以完成功能B的更新,并将更新后的使用信息反馈给服务器,以完成功能B的更新测试。
将差异化可执行文件dexB和dexC下发给目标客户端3。目标客户端3执行该应用程序,并通过类加载器DexClassLoader加载差异化可执行文件dexB和dexC,以完成功能B和功能C的更新,并将更新后的使用信息反馈给服务器,以完成功能B和功能C的更新测试。
由此,通过将差异化可执行文件下发给目标客户端,使得目标客户端在没有下载和重新安装的感知下完成应用程序的功能更新,提高了应用程序更新的效率。并且,通过将多个不同的差异化可执行文件分别下发给不同的目标客户端,或者将多个不同的差异化可执行文件下发给一个目标客户端,并获取目标客户端在功能更新后的反馈信息,以完成对不同功能的测试,提高了应用程序的测试效率。
图6是本发明第三实施例的应用程序的更新装置的示意图。如图6所示,本实施例的应用程序的更新装置6包括代码文件加载单元61、类记录文件加载单元62、代码修改文件获取单元63、差异化可执行文件获取单元64和发送单元65。其中,代码文件加载单元61被配置为加载所述应用程序的各功能的代码文件。其中,修改后的所述代码文件具有对应的自定义注解。自定义注解包括新增注解和修改注解。类记录文件加载单元62被配置为加载类记录文件。其中,所述类记录文件包括所述功能的代码文件的类名和地址。代码修改文件获取单元63被配置为在编译时根据所述自定义注解和所述类记录文件获取代码修改文件。其中,所述代码修改文件包括修改后的所述代码文件的代码。在一种可选的实现方式中,代码修改文件获取单元63包括代码修改文件获取子单元631。代码修改文件获取子单元631被配置为被配置为在编译时根据所述自定义注解和所述类记录文件基于字节码操作获取代码修改文件。差异化可执行文件获取单元64被配置为根据所述代码修改文件和所述类记录文件生成差异化可执行文件。其中,所述差异化可执行文件被加载执行时更新所述应用程序。发送单元65被配置为将差异化可执行文件发送到目标客户端。其中,所述应用程序的各功能对应不同的差异化可执行文件。发送单元65包括发送子单元651。发送子单元651被配置为将所述不同的差异化可执行文件发送到同一个目标客户端或不同的目标客户端。
在一种可选的实现方式中,应用程序的更新装置6还包括类记录文件获取单元66。类记录文件获取单元66被配置为获取所述类记录文件。可选的,类记录文件获取单元66包括预设代码载入子单元661和类记录文件获取子单元662。预设代码载入子单元661被配置为在编译时,在所述功能的代码文件中载入预设代码,所述预设代码被配置为根据修改标识在所述应用程序被执行时执行修改后的代码文件的代码。类记录文件获取子单元662被配置为记录所有载入所述预设代码的代码文件的类名和地址以获取所述类记录文件。其中,所述预设代码被配置为响应于所述修改标识为第一状态,执行修改后的代码文件的代码。
在一种可选的实现方式中,应用程序的更新装置6还包括反馈信息获取单元67。反馈信息获取单元67被配置为获取所述目标客户端更新所述应用程序后的反馈信息。
本实施例通过在编译时根据自定义注解和类记录文件获取的代码修改文件和所述类记录文件生成差异化可执行文件,在所述应用程序被执行时加载所述差异化可执行文件完成所述应用程序的更新,由此,可以使得目标客户端不需要下载所述应用程序的安装包便可实现升级,提高了应用程序的更新效率。
图7是本发明第四实施例的应用程序的更新装置的示意图。如图7所示,本实施例的应用程序的更新装置7包括获取单元71和更新单元72。获取单元71被配置为获取至少一个差异化可执行文件。更新单元72被配置为在执行所述应用程序时加载所述差异化可执行文件,以更新所述应用程序中与所述差异化可执行文件对应的功能。其中,所述差异化可执行文件根据代码修改文件和类记录文件生成,所述代码修改文件包括修改后的所述应用程序的功能的代码文件的代码,所述类记录文件包括所述功能的代码文件的类名和地址;所述代码修改文件根据修改后的代码文件对应的自定义注解和所述功能对应的类记录文件生成。所述应用程序的功能的代码文件中包括预设代码,所述预设代码被配置为根据修改标识在所述应用程序被执行时执行修改后的代码文件的代码。
在一种可选的实现方式中,更新单元72包括修改标识设置子单元721、修改代码加载子单元722和更新子单元723。修改标识设置子单元721被配置为根据所述类记录文件将修改后的代码文件中的预设代码的修改标识置为第一状态。修改代码加载子单元722被配置为根据所述类记录文件将所述差异化可行执行文件中的修改后的代码文件的代码载入所述预设代码中。更新子单元723被配置为响应于所述修改标识为第一状态,执行载入的所述修改后的代码文件的代码以更新所述应用程序中与所述差异化可执行文件对应的功能。
在一种可选的实现方式中,应用程序的更新装置7还包括反馈信息发送单元73。反馈信息发送单元73被配置为发送更新应用程序后的反馈信息。
本实施例通过获取并加载执行差异化可执行文件,以更新应用程序中该差异化可执行文件对应的功能,其中,该差异化可执行文件由根据自定义注解和类记录文件获取的代码修改文件和类记录文件生成,由此,可以使得目标客户端不需要下载所述应用程序的安装包便可实现升级,提高了应用程序的更新效率。
图8是本发明第五实施例的电子设备的示意图。如图8所示,该电子设备:至少包括一个处理器801;以及,与至少一个处理器801通信连接的存储器802;以及,与扫描装置通信连接的通信组件803,通信组件803在处理器801的控制下接收和发送数据;其中,存储器802存储有可被至少一个处理器801执行的指令,指令被至少一个处理器801执行以实现:
加载所述应用程序的各功能的代码文件,其中,修改后的所述代码文件具有对应的自定义注解;
加载类记录文件,所述类记录文件包括所述功能的代码文件的类名和地址;
在编译时根据所述自定义注解和所述类记录文件获取代码修改文件,所述代码修改文件包括修改后的所述代码文件的代码;
根据所述代码修改文件和所述类记录文件生成差异化可执行文件,所述差异化可执行文件被加载执行时更新所述应用程序;以及
将差异化可执行文件发送到目标客户端。
进一步可选地,指令被至少一个处理器801执行还用以实现:
获取所述类记录文件。
进一步可选地,所述获取所述类记录文件包括:
在编译时,在所述功能的代码文件中载入预设代码,所述预设代码被配置为根据修改标识在所述应用程序被执行时执行修改后的代码文件的代码;以及
记录所有载入所述预设代码的代码文件的类名和地址以获取所述类记录文件。
进一步可选地,所述预设代码被配置为响应于所述修改标识为第一状态,执行修改后的代码文件的代码。
进一步可选地,所述在编译时根据所述自定义注解和所述类记录文件获取代码修改文件包括:
在编译时根据所述自定义注解和所述类记录文件基于字节码操作获取代码修改文件。
进一步可选地,所述自定义注解包括新增注解和修改注解。
进一步可选地,所述应用程序的各功能对应不同的差异化可执行文件;
所述将差异化可执行文件发送到目标客户端包括:
将所述不同的差异化可执行文件发送到同一个目标客户端或不同的目标客户端。
进一步可选地,指令被至少一个处理器801执行还用以实现:
获取所述目标客户端更新所述应用程序后的反馈信息。
指令被至少一个处理器801执行以实现:
获取至少一个差异化可执行文件;以及
在执行所述应用程序时加载所述差异化可执行文件,以更新所述应用程序中与所述差异化可执行文件对应的功能;
其中,所述差异化可执行文件根据代码修改文件和类记录文件生成,所述代码修改文件包括修改后的所述应用程序的功能的代码文件的代码,所述类记录文件包括所述功能的代码文件的类名和地址;所述代码修改文件根据修改后的代码文件对应的自定义注解和所述功能对应的类记录文件生成。
进一步可选地,所述应用程序的功能的代码文件中包括预设代码,所述预设代码被配置为根据修改标识在所述应用程序被执行时执行修改后的代码文件的代码。
进一步可选地,所述在执行所述应用程序时加载所述差异化可执行文件,以更新所述应用程序中与所述差异化可执行文件对应的功能包括:
根据所述类记录文件将修改后的代码文件中的预设代码的修改标识置为第一状态;
根据所述类记录文件将所述差异化可行执行文件中的修改后的代码文件的代码载入所述预设代码中;以及
响应于所述修改标识为第一状态,执行载入的所述修改后的代码文件的代码以更新所述应用程序中与所述差异化可执行文件对应的功能。
进一步可选地,指令被至少一个处理器801执行还用以实现:
发送更新应用程序后的反馈信息。
具体地,该电子设备包括:一个或多个处理器801以及存储器802,图8中以一个处理器801为例。处理器801、存储器802可以通过总线或者其他方式连接,图8中以通过总线连接为例。存储器802作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器801通过运行存储在存储器802中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现本发明第一实施例的应用程序的更新方法或本发明第二实施例的应用程序的更新方法。
存储器802可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器802可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施方式中,存储器802可选包括相对于处理器801远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器802中,当被一个或者多个处理器801执行时,执行上述任意方法实施方式中的应用程序的更新方法。
上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施方式中详尽描述的技术细节,可参见本发明实施方式所提供的方法。
本发明实施例通过在编译时根据自定义注解和类记录文件获取的代码修改文件和所述类记录文件生成差异化可执行文件,目标客户端在执行所述应用程序时加载所述差异化可执行文件完成所述应用程序的更新,由此,可以使得目标客户端不需要下载所述应用程序的安装包便可实现升级,提高了应用程序的更新效率。
本发明的第六实施例涉及一种非易失性存储介质,用于存储计算机可读程序,所述计算机可读程序用于供计算机执行上述部分或全部的方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlBMemorB)、随机存取存储器(RAM,Random Access MemorB)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
本发明实施例公开了A1、一种应用程序的更新方法,所述方法包括:
加载所述应用程序的各功能的代码文件,其中,修改后的所述代码文件具有对应的自定义注解;
加载类记录文件,所述类记录文件包括所述功能的代码文件的类名和地址;
在编译时根据所述自定义注解和所述类记录文件获取代码修改文件,所述代码修改文件包括修改后的所述代码文件的代码;
根据所述代码修改文件和所述类记录文件生成差异化可执行文件,所述差异化可执行文件被加载执行时更新所述应用程序;以及
将差异化可执行文件发送到目标客户端。
A2、根据A1所述的方法,其中,所述方法还包括:
获取所述类记录文件。
A3、根据A2所述的方法,其中,所述获取所述类记录文件包括:
在编译时,在所述功能的代码文件中载入预设代码,所述预设代码被配置为根据修改标识在所述应用程序被执行时执行修改后的所述代码文件的代码;以及
记录所有载入所述预设代码的代码文件的类名和地址以获取所述类记录文件。
A4、根据A3所述的方法,其中,所述预设代码被配置为响应于所述修改标识为第一状态,执行修改后的所述代码文件的代码。
A5、根据A1所述的方法,其中,所述在编译时根据所述自定义注解和所述类记录文件获取代码修改文件包括:
在编译时根据所述自定义注解和所述类记录文件基于字节码操作获取代码修改文件。
A6、根据A1所述的方法,其中,所述自定义注解包括新增注解和修改注解。
A7、根据A1所述的方法,其中,所述应用程序的各功能对应不同的差异化可执行文件;
所述将差异化可执行文件发送到目标客户端包括:
将所述不同的差异化可执行文件发送到同一个目标客户端或不同的目标客户端。
A8、根据A1所述的方法,其中,所述方法还包括:
获取所述目标客户端更新所述应用程序后的反馈信息。
本发明实施例还公开了B1、一种应用程序的更新方法,所述方法包括:
获取至少一个差异化可执行文件;以及
在执行所述应用程序时加载所述差异化可执行文件,以更新所述应用程序中与所述差异化可执行文件对应的功能;
其中,所述差异化可执行文件根据代码修改文件和类记录文件生成,所述代码修改文件包括修改后的所述应用程序的功能的代码文件的代码,所述类记录文件包括所述功能的代码文件的类名和地址;所述代码修改文件根据修改后的代码文件对应的自定义注解和所述功能对应的类记录文件生成。
B2、根据B1所述的方法,其中,所述应用程序的功能的代码文件中包括预设代码,所述预设代码被配置为根据修改标识在所述应用程序被执行时执行修改后的代码文件的代码。
B3、根据B2所述的方法,其中,所述在执行所述应用程序时加载所述差异化可执行文件,以更新所述应用程序中与所述差异化可执行文件对应的功能包括:
根据所述类记录文件将修改后的代码文件中的预设代码的修改标识置为第一状态;
根据所述类记录文件将所述差异化可行执行文件中的修改后的代码文件的代码载入所述预设代码中;以及
响应于所述修改标识为第一状态,执行载入的修改后的代码文件的代码以更新所述应用程序中与所述差异化可执行文件对应的功能。
B4、根据B1所述的方法,其中,所述方法还包括:
发送更新应用程序后的反馈信息。
本发明实施例还公开了C1、一种应用程序的更新装置,所述装置包括:
代码文件加载单元,被配置为加载所述应用程序的各功能的代码文件,其中,修改后的所述代码文件具有对应的自定义注解;
类记录文件加载单元,被配置为加载类记录文件,所述类记录文件包括所述功能的代码文件的类名和地址;
代码修改文件获取单元,被配置为在编译时根据所述自定义注解和所述类记录文件获取代码修改文件,所述代码修改文件包括修改后的所述代码文件的代码;
差异化可执行文件获取单元,被配置为根据所述代码修改文件和所述类记录文件生成差异化可执行文件,所述差异化可执行文件被加载执行时更新所述应用程序;以及
发送单元,被配置为将差异化可执行文件发送到目标客户端。
C2、根据C1所述的装置,其中,所述装置还包括:
类记录文件获取单元,被配置为获取所述类记录文件。
C3、根据C2所述的装置,其中,所述类记录文件获取单元包括:
预设代码载入子单元,被配置为在编译时,在所述功能的代码文件中载入预设代码,所述预设代码被配置为根据修改标识在所述应用程序被执行时执行修改后的代码文件的代码;以及
类记录文件获取子单元,被配置为记录所有载入所述预设代码的代码文件的类名和地址以获取所述类记录文件。
C4、根据C3所述的装置,其中,所述预设代码被配置为响应于所述修改标识为第一状态,执行修改后的代码文件的代码。
C5、根据C1所述的装置,其中,所述代码修改文件获取单元包括:
代码修改文件获取子单元,被配置为在编译时根据所述自定义注解和所述类记录文件基于字节码操作获取代码修改文件。
C6、根据C1所述的装置,其中,所述自定义注解包括新增注解和修改注解。
C7、根据C1所述的装置,其中,所述应用程序的各功能对应不同的差异化可执行文件;
所述发送单元包括:
发送子单元,被配置为将所述不同的差异化可执行文件发送到同一个目标客户端或不同的目标客户端。
C8、根据C1所述的装置,其中,所述装置还包括:
反馈信息获取单元,被配置为获取所述目标客户端更新所述应用程序后的反馈信息。
本实施例公开了D1、一种应用程序的更新装置,所述装置包括:
获取单元,被配置为获取至少一个差异化可执行文件;以及
更新单元,被配置为在执行所述应用程序时加载所述差异化可执行文件,以更新所述应用程序中与所述差异化可执行文件对应的功能;
其中,所述差异化可执行文件根据代码修改文件和类记录文件生成,所述代码修改文件包括修改后的所述应用程序的功能的代码文件的代码,所述类记录文件包括所述功能的代码文件的类名和地址;所述代码修改文件根据修改后的代码文件对应的自定义注解和所述功能对应的类记录文件生成。
D2、根据D1所述的装置,其中,所述应用程序的功能的代码文件中包括预设代码,所述预设代码被配置为根据修改标识在所述应用程序被执行时选择执行修改后的代码文件的代码。
D3、根据D2所述的装置,其中,所述更新单元包括:
修改标识设置子单元,被配置为根据所述类记录文件将修改后的代码文件中的预设代码的修改标识置为第一状态;
修改代码加载子单元,被配置为根据所述类记录文件将所述差异化可行执行文件中的修改后的代码文件的代码载入所述预设代码中;以及更新子单元,被配置为响应于所述修改标识为第一状态,执行载入的所述修改后的代码文件的代码以更新所述应用程序中与所述差异化可执行文件对应的功能。
D4、根据D1所述的装置,其中,所述装置还包括:
反馈信息发送单元,被配置为发送更新应用程序后的反馈信息。
本发明实施例还公开了E1、一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理器执行以实现如下步骤:
加载所述应用程序的各功能的代码文件,其中,修改后的所述代码文件具有对应的自定义注解;
加载类记录文件,所述类记录文件包括所述功能的代码文件的类名和地址;
在编译时根据所述自定义注解和所述类记录文件获取代码修改文件,所述代码修改文件包括修改后的所述代码文件的代码;
根据所述代码修改文件和所述类记录文件生成差异化可执行文件,所述差异化可执行文件被加载执行时更新所述应用程序;以及
将差异化可执行文件发送到目标客户端。
E2、根据E1所述的电子设备,其中,所述步骤还包括:
获取所述类记录文件。
E3、根据E2所述的电子设备,其中,所述获取所述类记录文件包括:
在编译时,在所述功能的代码文件中载入预设代码,所述预设代码被配置为根据修改标识在所述应用程序被执行时执行修改后的所述代码文件的代码;以及
记录所有载入所述预设代码的代码文件的类名和地址以获取所述类记录文件。
E4、根据E3所述的电子设备,其中,所述预设代码被配置为响应于所述修改标识为第一状态,执行修改后的所述代码文件的代码。
E5、根据E1所述的电子设备,其中,所述在编译时根据所述自定义注解和所述类记录文件获取代码修改文件包括:
在编译时根据所述自定义注解和所述类记录文件基于字节码操作获取代码修改文件。
E6、根据E1所述的电子设备,其中,所述自定义注解包括新增注解和修改注解。
E7、根据E1所述的电子设备,其中,所述应用程序的各功能对应不同的差异化可执行文件;
所述将差异化可执行文件发送到目标客户端包括:
将所述不同的差异化可执行文件发送到同一个目标客户端或不同的目标客户端。
E8、根据E1所述的电子设备,其中,所述步骤还包括:
获取所述目标客户端更新所述应用程序后的反馈信息。
本发明实施例还公开了F1、一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理器执行以实现如下步骤:
获取至少一个差异化可执行文件;以及
在执行所述应用程序时加载所述差异化可执行文件,以更新所述应用程序中与所述差异化可执行文件对应的功能;
其中,所述差异化可执行文件根据代码修改文件和类记录文件生成,所述代码修改文件包括修改后的所述应用程序的功能的代码文件的代码,所述类记录文件包括所述功能的代码文件的类名和地址;所述代码修改文件根据修改后的代码文件对应的自定义注解和所述功能对应的类记录文件生成。
F2、根据F1所述的电子设备,其中,所述应用程序的功能的代码文件中包括预设代码,所述预设代码被配置为根据修改标识在所述应用程序被执行时执行修改后的代码文件的代码。
F3、根据F2所述的电子设备,其中,所述在执行所述应用程序时加载所述差异化可执行文件,以更新所述应用程序中与所述差异化可执行文件对应的功能包括:
根据所述类记录文件将修改后的代码文件中的预设代码的修改标识置为第一状态;
根据所述类记录文件将所述差异化可行执行文件中的修改后的代码文件的代码载入所述预设代码中;以及
响应于所述修改标识为第一状态,执行载入的所述修改后的代码文件的代码以更新所述应用程序中与所述差异化可执行文件对应的功能。
F4、根据F1所述的电子设备,其中,所述步骤还包括:
发送更新应用程序后的反馈信息。
本发明实施例还公开了G1、一种计算机可读存储介质,其上存储计算机程序指令,其中,所述计算机程序指令在被处理器执行时实现如A1-A8中任一项所述的方法。
本发明实施例还公开了H1、一种计算机可读存储介质,其上存储计算机程序指令,其中,所述计算机程序指令在被处理器执行时实现如B1-B4中任一项所述的方法。

Claims (10)

1.一种应用程序的更新方法,其特征在于,所述方法包括:
加载所述应用程序的各功能的代码文件,其中,修改后的所述代码文件具有对应的自定义注解;
加载类记录文件,所述类记录文件包括所述功能的代码文件的类名和地址;
在编译时根据所述自定义注解和所述类记录文件获取代码修改文件,所述代码修改文件包括修改后的所述代码文件的代码;
根据所述代码修改文件和所述类记录文件生成差异化可执行文件,所述差异化可执行文件被加载执行时更新所述应用程序;以及
将差异化可执行文件发送到目标客户端。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述类记录文件。
3.根据权利要求2所述的方法,其特征在于,所述获取所述类记录文件包括:
在编译时,在所述功能的代码文件中载入预设代码,所述预设代码被配置为根据修改标识在所述应用程序被执行时执行修改后的所述代码文件的代码;以及
记录所有载入所述预设代码的代码文件的类名和地址以获取所述类记录文件。
4.一种应用程序的更新方法,其特征在于,所述方法包括:
获取至少一个差异化可执行文件;以及
在执行所述应用程序时加载所述差异化可执行文件,以更新所述应用程序中与所述差异化可执行文件对应的功能;
其中,所述差异化可执行文件根据代码修改文件和类记录文件生成,所述代码修改文件包括修改后的所述应用程序的功能的代码文件的代码,所述类记录文件包括所述功能的代码文件的类名和地址;所述代码修改文件根据修改后的代码文件对应的自定义注解和所述功能对应的类记录文件生成。
5.一种应用程序的更新装置,其特征在于,所述装置包括:
代码文件加载单元,被配置为加载所述应用程序的各功能的代码文件,其中,修改后的所述代码文件具有对应的自定义注解;
类记录文件加载单元,被配置为加载类记录文件,所述类记录文件包括所述功能的代码文件的类名和地址;
代码修改文件获取单元,被配置为在编译时根据所述自定义注解和所述类记录文件获取代码修改文件,所述代码修改文件包括修改后的所述代码文件的代码;
差异化可执行文件获取单元,被配置为根据所述代码修改文件和所述类记录文件生成差异化可执行文件,所述差异化可执行文件被加载执行时更新所述应用程序;以及
发送单元,被配置为将差异化可执行文件发送到目标客户端。
6.一种应用程序的更新装置,其特征在于,所述装置包括:
获取单元,被配置为获取至少一个差异化可执行文件;以及
更新单元,被配置为在执行所述应用程序时加载所述差异化可执行文件,以更新所述应用程序中与所述差异化可执行文件对应的功能;
其中,所述差异化可执行文件根据代码修改文件和类记录文件生成,所述代码修改文件包括修改后的所述应用程序的功能的代码文件的代码,所述类记录文件包括所述功能的代码文件的类名和地址;所述代码修改文件根据修改后的代码文件对应的自定义注解和所述功能对应的类记录文件生成。
7.一种电子设备,包括存储器和处理器,其特征在于,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理器执行以实现如下步骤:
加载所述应用程序的各功能的代码文件,其中,修改后的所述代码文件具有对应的自定义注解;
加载类记录文件,所述类记录文件包括所述功能的代码文件的类名和地址;
在编译时根据所述自定义注解和所述类记录文件获取代码修改文件,所述代码修改文件包括修改后的所述代码文件的代码;
根据所述代码修改文件和所述类记录文件生成差异化可执行文件,所述差异化可执行文件被加载执行时更新所述应用程序;以及
将差异化可执行文件发送到目标客户端。
8.一种电子设备,包括存储器和处理器,其特征在于,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理器执行以实现如下步骤:
获取至少一个差异化可执行文件;以及
在执行所述应用程序时加载所述差异化可执行文件,以更新所述应用程序中与所述差异化可执行文件对应的功能;
其中,所述差异化可执行文件根据代码修改文件和类记录文件生成,所述代码修改文件包括修改后的所述应用程序的功能的代码文件的代码,所述类记录文件包括所述功能的代码文件的类名和地址;所述代码修改文件根据修改后的代码文件对应的自定义注解和所述功能对应的类记录文件生成。
9.一种计算机可读存储介质,其上存储计算机程序指令,其特征在于,所述计算机程序指令在被处理器执行时实现如权利要求1-3中任一项所述的方法。
10.一种计算机可读存储介质,其上存储计算机程序指令,其特征在于,所述计算机程序指令在被处理器执行时实现如权利要求4所述的方法。
CN201910005839.7A 2019-01-03 2019-01-03 应用程序的更新方法、装置、电子设备和可读存储介质 Active CN109857444B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910005839.7A CN109857444B (zh) 2019-01-03 2019-01-03 应用程序的更新方法、装置、电子设备和可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910005839.7A CN109857444B (zh) 2019-01-03 2019-01-03 应用程序的更新方法、装置、电子设备和可读存储介质

Publications (2)

Publication Number Publication Date
CN109857444A true CN109857444A (zh) 2019-06-07
CN109857444B CN109857444B (zh) 2022-04-12

Family

ID=66893937

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910005839.7A Active CN109857444B (zh) 2019-01-03 2019-01-03 应用程序的更新方法、装置、电子设备和可读存储介质

Country Status (1)

Country Link
CN (1) CN109857444B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110727581A (zh) * 2019-09-06 2020-01-24 网宿科技股份有限公司 崩溃定位方法与电子设备
CN111324359A (zh) * 2020-02-27 2020-06-23 支付宝(杭州)信息技术有限公司 插件部署方法及装置
CN111796865A (zh) * 2020-06-28 2020-10-20 北京字节跳动网络技术有限公司 一种字节码文件修改方法、装置、终端设备及介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140165034A1 (en) * 2012-12-06 2014-06-12 International Business Machines Corporation Program code library selection in an integrated development environment
CN105354073A (zh) * 2015-10-27 2016-02-24 中通服公众信息产业股份有限公司 一种基于安卓系统的单机应用网络化方法和系统
CN105700931A (zh) * 2016-02-23 2016-06-22 北京蓝海讯通科技股份有限公司 一种代码注入方法及装置
US20170123857A1 (en) * 2010-04-13 2017-05-04 Et International, Inc. Runspace method, system and apparatus
CN107153536A (zh) * 2017-03-31 2017-09-12 北京三快在线科技有限公司 一种应用处理方法及装置
CN107391218A (zh) * 2017-07-07 2017-11-24 北京小米移动软件有限公司 编译方法及装置、电子设备和计算机可读存储介质
CN108733397A (zh) * 2018-05-28 2018-11-02 北京小米移动软件有限公司 更新状态确定方法、设备及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170123857A1 (en) * 2010-04-13 2017-05-04 Et International, Inc. Runspace method, system and apparatus
US20140165034A1 (en) * 2012-12-06 2014-06-12 International Business Machines Corporation Program code library selection in an integrated development environment
CN105354073A (zh) * 2015-10-27 2016-02-24 中通服公众信息产业股份有限公司 一种基于安卓系统的单机应用网络化方法和系统
CN105700931A (zh) * 2016-02-23 2016-06-22 北京蓝海讯通科技股份有限公司 一种代码注入方法及装置
CN107153536A (zh) * 2017-03-31 2017-09-12 北京三快在线科技有限公司 一种应用处理方法及装置
CN107391218A (zh) * 2017-07-07 2017-11-24 北京小米移动软件有限公司 编译方法及装置、电子设备和计算机可读存储介质
CN108733397A (zh) * 2018-05-28 2018-11-02 北京小米移动软件有限公司 更新状态确定方法、设备及存储介质

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110727581A (zh) * 2019-09-06 2020-01-24 网宿科技股份有限公司 崩溃定位方法与电子设备
CN110727581B (zh) * 2019-09-06 2024-04-05 网宿科技股份有限公司 崩溃定位方法与电子设备
CN111324359A (zh) * 2020-02-27 2020-06-23 支付宝(杭州)信息技术有限公司 插件部署方法及装置
CN111796865A (zh) * 2020-06-28 2020-10-20 北京字节跳动网络技术有限公司 一种字节码文件修改方法、装置、终端设备及介质
CN111796865B (zh) * 2020-06-28 2024-04-16 北京字节跳动网络技术有限公司 一种字节码文件修改方法、装置、终端设备及介质

Also Published As

Publication number Publication date
CN109857444B (zh) 2022-04-12

Similar Documents

Publication Publication Date Title
US9201632B2 (en) Systems and methods for incremental software development
EP3134810B1 (en) Dependency-driven co-specialization of specialized classes
JP5007046B2 (ja) コンポーネントベースのソフトウェア・プロダクトの保守
CN102193810B (zh) 模块间内联候选标识
CN109857444A (zh) 应用程序的更新方法、装置、电子设备和可读存储介质
US20070156715A1 (en) Tagged property files for system configurations
US8214810B2 (en) Method of compiling source code, compiler, computer system, and computer program product
US20120101801A1 (en) System and method for deploying a software program
US20080301636A1 (en) Per-instance and per-class aspects
CN104503778A (zh) 一种应用程序的安装方法和装置
US10182122B2 (en) Action flow fragment management
US20110078659A1 (en) Java-Based Application Server that Supports Multiple Component Models
Hill Measuring and reducing modeling effort in domain-specific modeling languages with examples
CN111880804A (zh) 应用程序代码的处理方法及装置
US9063723B2 (en) Function-based software comparison method
CN113791794B (zh) 面向超算应用的算例自动部署方法及系统
Büchner et al. Introspective model-driven development
Muller et al. Semantic patches considered helpful
CN108170415B (zh) 一种基于可配置控件的轻型应用程序创建方法
CN109460255A (zh) 内存地址的查询方法及装置
Wehrmeister et al. AMoDE-RT: Advancing Model-Driven Engineering for embedded real-time systems
US9519879B1 (en) Just in time compilation (JIT) for business process execution
US10901706B1 (en) Partially immutable model
WO2016089242A1 (en) Vectorization apparatus
US20080320447A1 (en) Method of accessing web parameters

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