CN111142922A - 应用程序更新方法、装置、终端及服务器 - Google Patents

应用程序更新方法、装置、终端及服务器 Download PDF

Info

Publication number
CN111142922A
CN111142922A CN201811303291.6A CN201811303291A CN111142922A CN 111142922 A CN111142922 A CN 111142922A CN 201811303291 A CN201811303291 A CN 201811303291A CN 111142922 A CN111142922 A CN 111142922A
Authority
CN
China
Prior art keywords
file
source
target
repair code
executable file
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
CN201811303291.6A
Other languages
English (en)
Other versions
CN111142922B (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201811303291.6A priority Critical patent/CN111142922B/zh
Publication of CN111142922A publication Critical patent/CN111142922A/zh
Application granted granted Critical
Publication of CN111142922B publication Critical patent/CN111142922B/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/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例提供一种应用程序更新方法、装置、终端及服务器。其中,通过比较源安装包及目标安装包,确定至少一个修复代码以及所述至少一个修复代码与所述源安装包中包含的至少一个源可执行文件的对应关系;根据所述至少一个修复代码及所述对应关系,生成补丁文件;将所述补丁文件下发至应用程序,由应用程序基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源可执行文件,以获得至少一个目标可执行文件,并对所述至少一个目标可执行文件同时进行优化。本申请实施例提供的技术方案缩短了优化时间,提高了修复效率。

Description

应用程序更新方法、装置、终端及服务器
技术领域
本申请实施例涉及计算机应用技术领域,尤其涉及一种应用程序更新方法、装置、终端及服务器。
背景技术
App(application,应用程序)上线之后,如果存在bug(故障),就需要对App进行更新,而传统的采用版本更新的方式,需要重新发布新版本的App安装包并由用户主动下载安装,成本较高且更新不及时,因此,目前对于基于Android(安卓)实现的App,通常采用热修复技术进行更新。
App安装包中包括App的可执行文件,App存在bug,通常是可执行文件中的代码存在问题,因此对App进行热修复也即是对可执行文件的代码进行修复。而基于Android实现的App的安装包中的可执行文件为dex(一种文件类型)文件。为了加快App启动速度,安装包首次安装时会进行dex文件优化,将得到的优化文件加载至内存中,即可以直接运行。
现有的一种热修复技术,是通过将新旧安装包进行比较生成差量包,将差量包作为补丁文件下发至App,由App将补丁文件与App中旧的dex文件,也即源dex文件合并之后,整体替换掉源dex文件,再对合并文件进行整体优化,以达到修复的目的。
但是现有这种热修复技术,合并文件通常会比较大,导致优化时间较长,影响修复效率。
发明内容
本申请实施例提供一种应用程序更新方法、装置、终端及服务器,用以解决现有技术中的修复效率问题。
第一方面,本申请实施例中提供了一种应用程序更新方法,包括:
比较源安装包及目标安装包,确定至少一个修复代码以及所述至少一个修复代码与所述源安装包中包含的至少一个源可执行文件的对应关系;
根据所述至少一个修复代码及所述对应关系,生成补丁文件;
将所述补丁文件下发至应用程序,以供所述应用程序基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源可执行文件,以获得至少一个目标可执行文件,并对所述至少一个目标可执行文件同时进行优化。
第二方面,本申请实施例中提供了一种应用程序更新方法,包括:
确定服务端下发的补丁文件;其中,所述补丁文件根据源安装包及目标安装包比较获得的至少一个修复代码以及所述至少一个修复代码与所述源安装包中包含的至少一个源可执行文件的对应关系生成;
基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源可执行文件,以获得至少一个目标可执行文件;
对所述至少一个目标可执行文件同时进行优化,获得至少一个优化文件。
第三方面,本申请实施例中提供了一种应用程序更新方法,包括:
比较源APK及目标APk,确定至少一个修复代码以及所述至少一个修复代码与所述源APK中包含的至少一个源dex文件的对应关系;
根据所述至少一个修复代码及所述对应关系,生成补丁文件;
将所述补丁文件下发至应用程序,以供所述应用程序基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源dex文件,以获得至少一个目标dex文件,并对所述至少一个目标dex文件同时进行优化。
第四方面,本申请实施例中提供了一种应用程序更新方法,包括:
确定服务端下发的补丁文件;其中,所述补丁文件根据源APK及目标APK比较获得的至少一个修复代码以及所述至少一个修复代码与所述源APK中包含的至少一个源dex文件的对应关系生成;
基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源dex文件,以获得至少一个目标dex文件;
对所述至少一个目标dex文件同时进行优化,获得至少一个优化文件。
第五方面,本申请实施例中提供了一种应用程序更新装置,包括:
比较模块,用于比较源安装包及目标安装包,确定至少一个修复代码以及所述至少一个修复代码与所述源安装包中包含的至少一个源可执行文件的对应关系;
补丁生成模块,用于根据所述至少一个修复代码及所述对应关系,生成补丁文件;
补丁下发模块,用于将所述补丁文件下发至应用程序,以供所述应用程序基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源可执行文件,以获得至少一个目标可执行文件,并对所述至少一个目标可执行文件同时进行优化。
第六方面,本申请实施例中提供了一种应用程序更新装置,包括:
补丁获取模块,用于确定服务端下发的补丁文件;其中,所述补丁文件根据源安装包及目标安装包比较获得的至少一个修复代码以及所述至少一个修复代码与所述源安装包中包含的至少一个源可执行文件的对应关系生成;
补丁修复模块,用于基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源可执行文件,以获得至少一个目标可执行文件;
文件优化模块,用于对所述至少一个目标可执行文件同时进行优化,获得至少一个优化文件。
第七方面,本申请实施例中提供了一种服务器,包括处理组件以及存储组件;
所述存储组件存储一个或多个计算机指令;所述一个或多个计算机指令用以被所述处理组件调用执行;
所述处理组件用于:
比较源安装包及目标安装包,确定至少一个修复代码以及所述至少一个修复代码与所述源安装包中包含的至少一个源可执行文件的对应关系;
根据所述至少一个修复代码及所述对应关系,生成补丁文件;
将所述补丁文件下发至应用程序,以供所述应用程序基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源可执行文件,以获得至少一个目标可执行文件,并对所述至少一个目标可执行文件同时进行优化。
第八方面,本申请实施例中提供了一种终端,包括处理组件以及存储组件;
所述存储组件存储一个或多个计算机指令;所述一个或多个计算机指令用以被所述处理组件调用执行;
所述处理组件用于:
确定服务端下发的补丁文件;其中,所述补丁文件根据源安装包及目标安装包比较获得的至少一个修复代码以及所述至少一个修复代码与所述源安装包中包含的至少一个源可执行文件的对应关系生成;
基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源可执行文件,以获得至少一个目标可执行文件;
对所述至少一个目标可执行文件同时进行优化,获得至少一个优化文件。
本申请实施例中,由服务端比较源安装包及目标安装包,不仅确定至少一个修复代码,而且进一步确定了该至少一个修复代码与所述源安装包中包含的至少一个源可执行文件的对应关系,从而生成的补丁文件不仅包括该至少一个修复代码,还包括该对应关系;应用程序根据对应关系,利用所述至少一个修复代码直接修复所述至少一个源可执行文件,以获得至少一个目标可执行文件,从而可以对至少一个目标可执行文件同时进行优化。由于基于对应关系可以直接对源可执行文件进行修复,无需与源可执行文件合并之后再修复,因此可以对至少一个目标可执行文件并行同时进行优化,缩短了优化时间,提高了修复效率。
本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请提供的一种应用程序更新方法一个实施例的流程图;
图2示出了本申请提供的一种应用程序更新方法又一个实施例的流程图;
图3示出了本申请提供的一种应用程序更新方法又一个实施例的交互示意图;
图4示出了本申请提供的一种应用程序更新装置一个实施例的结构示意图;
图5示出了本申请提供的一种服务器一个实施例的结构示意图;
图6示出了本申请提供的一种应用程序更新装置又一个实施例的结构示意图;
图7示出了本申请提供的一种终端一个实施例的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
在本申请的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
本申请实施例的技术方案主要用于对App(application,应用程序)进行热修复的场景中,特别是基于Android实现的App。
以基于Android实现的App为例,正如背景技术中所述,目前的热修复技术是通过比较源APK(Android Package,安卓安装包)及目标APK得到的差量包作为补丁文件下发至App,App再将补丁文件与源APK中的源dex(一种文件类型)文件进行合并,利用合并文件整体替换掉源dex文件,从而对合并文件再进行整体优化,以达到修复目的。其中,源APK也即为旧App,目标APK为新APK,热修复技术即是不需要下载目标APK,通过对源APK中的dex文件进行修复,实现获得目标APK中目标dex文件的目的。其中,源APK与目标APK的差量包即是目标APK中的目标dex文件相较于源APK的源dex文件的差异信息,该差异信息作为修复代码即用来修复源APK中的源dex文件。
由于现有的这种热修复技术,需要将补丁文件与源dex文件进行合并得到的一个完整文件,由于合并文件会比较大,导致优化时间较长,从而影响修复效率。特别是Multidex(多dex)环境下,合并文件不仅占用更大内存,优化时间也会更长,严重影响修复效率。
为了提高修复效率,发明人经过一系列研究提出本申请实施例的技术方案,在本申请实施例中,服务端比较源安装包及目标安装包,不仅确定至少一个修复代码,而且进一步确定了该至少一个修复代码与所述源安装包中包含的至少一个源可执行文件的对应关系,从而生成的补丁文件不仅包括该至少一个修复代码,还包括该对应关系;应用程序获得该补丁文件之后,可以根据对应关系,利用所述至少一个修复代码直接修复所述至少一个源可执行文件,以获得至少一个目标可执行文件,从而可以对至少一个目标可执行文件同时进行优化。由于基于对应关系可以直接对源可执行文件进行修复,无需与源可执行文件合并之后再修复,因此得到的至少一个目标可执行文件也即为目标安装包中对应的可执行文件,因此可以对至少一个目标可执行文件并行同时进行优化,相较于对合并文件进行优化,可以大大缩短优化时间,提高修复效率。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请实施例提供的一种应用程序更新方法一个实施例的流程图,该方法可以包括以下几个步骤:
101:比较源安装包及目标安装包,确定至少一个修复代码以及所述至少一个修复代码与所述源安装包中包含的至少一个源可执行文件的对应关系。
源安装包是指已下载安装包,源安装包可以包括一个或者多个源可执行文件,该一个或多个源可执行文件也即是应用程序内已存储的源可执行文件。
目标安装包是指更新之后的安装包,采用热修复技术,目标安装包无需被下载安装,其包括一个或者多个目标可执行文件。
通过将源安装包以及目标安装包进行差异化比较,可以获得目标安装包中的至少一个目标可执行文件与源安装包括中的至少一个源可执行文件的差异信息,得到至少一个修复代码,该至少一个修复代码即用来修复源安装包中的该至少一个源可执行文件。
且本申请实施例中,基于比较结果,还可以确定该至少一个修复代码与源安装包中包含的至少一个源可执行文件的对应关系。
该对应关系也即可以包括每个修复代码的代码标识及其对应源可执行文件的文件标识。基于对应关系,即可以确定每个修复代码用于修复哪一个源可执行文件。
在实际应用中,可执行文件中存储的为class(类),每一个修复代码也即为一个class,用以替换源可执行文件中出现bug(故障)的class。
102:根据所述至少一个修复代码及所述对应关系,生成补丁文件。
103:将所述补丁文件下发至应用程序,以供所述应用程序基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源可执行文件,以获得至少一个目标可执行文件,并对所述至少一个目标可执行文件同时进行优化。
本实施例中,补丁文件中不仅包括该至少一个修复代码,还包括该对应关系,从而应用程序可以直接利用该对应关系,利用该至少一个修复代码修复源安装包中的至少一个源可执行文件,从而得到修复之后的源安装包中的至少一个目标可执行文件,该至少一个目标可执行文件为已被修复的可执行文件,因此可以平行优化,也即对至少一个目标可执行文件同时进行优化,以缩短优化时间,提高修复效率。
相较于现有技术中的合并文件,包括补丁文件及源可执行文件,由于源可执行文件未被修复,需要在优化时同时进行修复,且合并文件很大,导致优化时间较长,而采用本申请实施例的技术方案,可以直接获得目标可执行文件,因此可以对目标可执行文件同时进行优化,单独的可执行文件相较于合并文件,文件很小,大大缩短了优化时间,因此可以提高修复效率。
图2为本申请实施例提供的一种应用程序更新方法又一个实施例的流程图,本实施例从应用程序角度对技术方案进行详细描述。该方法可以具体包括以下几个步骤:
201:确定服务端下发的补丁文件。
其中,所述补丁文件根据源安装包及目标安装包比较获得的至少一个修复代码以及所述至少一个修复代码与所述源安装包中包含的至少一个源可执行文件的对应关系生成。
其中,补丁文件的获得可以具体上述实施例中所述,在此不再赘述。
202:基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源可执行文件,以获得至少一个目标可执行文件。
203:对所述至少一个目标可执行文件同时进行优化,获得至少一个优化文件。
其中,该至少一个目标可执行文件由对存在bug的源可执行文件修复之后的可执行文件以及未存在bug的源可执行文件构成。
本实施例中,补丁文件中不仅包括该至少一个修复代码,还包括该对应关系,从而应用程序可以直接利用该对应关系,利用该至少一个修复代码修复源安装包中的至少一个源可执行文件,从而得到修复之后的源安装包中的至少一个目标可执行文件,该至少一个目标可执行文件为已被修复的可执行文件,因此可以平行优化,也即对至少一个目标可执行文件同时进行优化,以缩短优化时间,提高修复效率。
其中,对所述至少一个目标可执行文件同时进行优化,获得至少一个优化文件之后,该至少一个优化文件加载至内存之后,才可以被执行。
因此在某些实施例中,所述对所述至少一个目标可执行文件同时进行优化,获得至少一个优化文件之后,所述方法还包括:
将所述至少一个优化文件加载至内存中。
由于在Android应用场景中,可执行文件为dex文件,为了加快应用程序启动速度,会预先从APK中提取出可运行文件,也即将APK中dex文件通过dex优化,得到优化文件,该优化文件可以由Android***直接运行。
其中,对dex文件进行优化可以通过执行dex2oat(dex file to oat file,dex文件转换为oat文件)实现,得到的优化文件即为oat文件,其中,dex以及oat均为文件类型。通过dex2oat将dex文件优化为oat文件,生成的oat文件相较于dex文件一般会膨胀3倍左右,也即一个dex文件一般会优化为3个oat文件,这就导致得到的优化文件也会很多。
现有技术中,由于是对合并文件进行优化,得到的优化文件也会很大,导致加载时间也很长,本申请实施例中,为了进一步优化加载时间,在某些实施例中,所述将所述至少一个优化文件加载至内存中包括:
将所述至少一个优化文件同时加载至内存中。
而由于实际应用中,获得优化文件之后,由于当前应用程序已经启动运行,而优化文件是在应用程序启动时加载至内存中,无法继续加载,因此,在某些实施例中,所述将所述至少一个优化文件同时加载至内存中包括:
在下一次启动时,将所述至少一个优化文件同时加载至内存中。
也即应用应用程序每一次启动时,可以寻找未加载的优化文件,并将未加载的优化文件加载至内存。而若不存在优化文件,则执行优化操作,将源安装包的可执行文件进行优化。
此外,在Android应用场景中,也可以不采用dex2oat对dex文件进行优化,而是将dex文件优化为odex文件,odex文件也会Android***可运行文件,因此得到的优化文件可以具体为该odex文件。
需要说明的是,对dex文件具体优化为何种优化文件,以及具体优化过程,与现有技术相同,本申请不对此进行具体限制。只要是采用本申请实施例通过并行方式实现的优化方案均在本申请实施例的保护范围内。
其中,由上述描述可知,该至少一个目标可执行文件完全替换源安装包中的至少一个源可执行文件,该至少一个目标可执行文件由对存在bug的源可执行文件修复之后的可执行文件以及未存在bug的源可执行文件构成。
利用至少一个修复代码修复所述至少一个源可执行文件可以是指修复该至少一个源可执行文件中该至少一个修复代码各自对应的源可执行文件。
也即本申请实施例中,利用该至少一个修复代码修复了源安装包中存在bug的源可执行文件,被修复之后的源安装包中的源可执行文件即作为目标可执行文件,根据不同实际应用场景,该目标可执行文件可以包括一个或者多个。
作为一种可选方式,所述基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源可执行文件,以获得至少一个目标可执行文件包括:
拷贝所述源安装包中包含的所述至少一个源可执行文件,得到至少一个拷贝文件;
基于所述对应关系,利用所述至少一个修复代码修复所述至少一个拷贝文件;
将修复之后的所述至少一个拷贝文件分别作为目标可执行文件,写入所述源安装包以替换所述至少一个源可执行文件。
可选地,基于所述对应关系,利用所述至少一个修复代码修复所述至少一个拷贝文件可以是基于所述对应关系,利用所述至少一个修复代码修复各自对应源可执行文件的拷贝文件,从而修复之后的该至少一个拷贝文件中级具体包括存在bug且修复之后的拷贝文件,以及未存在bug未被修复的拷贝文件。
在该可选方式中,首先将源安装包中包含的至少一个源可执行文件分别进行拷贝,得到至少一个拷贝文件,从而对该至少一个拷贝文件进行修复,再将修复之后的该至少一个拷贝文件整体替换掉源安装包中的所有源可执行文件,来达到修复目的。
在Android应用场景中,该可选方式可以适用于运行ART(Android runtime,一种用于Android平台的应用运行模式)的Android***。本领域技术人员可以理解的是,在ART模式下将至少一个目标可执行文件写入所述源安装包之前,还可能会执行诸如代码内联等满足ART运行的必要操作,在此不再赘述。
作为另一种可选方式,所述基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源可执行文件,以获得所述目标安装包对应的至少一个目标可执行文件可以包括:
基于所述对应关系,确定所述至少一个修复代码对应的源可执行文件;
分别拷贝所述至少一个修复代码对应的源可执行文件,获得所述至少一个修复代码对应的拷贝文件;
利用所述至少一个修复代码修复各自对应的拷贝文件;
将修复之后的所述至少一个修复代码各自对应的拷贝文件写入所述源安装包,以替换所述至少一个修复代码各自对应的源可执行文件,获得所述源安装包中重新获得的至少一个目标可执行文件。
该可选方式,只将源安装包中存在bug的源可执行文件进行拷贝,也即该至少一个修复代码分别对应的源可执行文件进行拷贝,并利用至少一个修复代码修复各自对应的拷贝文件,从而仅利用修复之后的拷贝文件替换源安装包中至少一个修复代码各自对应的源可执行文件,以实现修复的目的,被修复之后的源安装包的可执行文件即为目标可执行文件。
在Android应用场景中,该可选方式可以适用于运行dalvik(一种用于Android平台的虚拟机)的Android***。
在实际应用中,基于Android实现的App通常会采用热修复技术对App进行更新,在Android应用场景中,安装包也即为APK,可执行文件通常为dex文件,优化文件可以为oat文件或者odex文件。
因此,作为又一个实施例,本申请实施例还提供了一种应用程序更新方法,包括:
比较源APK及目标APk,确定至少一个修复代码以及所述至少一个修复代码与所述源APK中包含的至少一个源dex文件的对应关系;
根据所述至少一个修复代码及所述对应关系,生成补丁文件;
将所述补丁文件下发至应用程序,以供所述应用程序基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源dex文件,以获得至少一个目标dex文件,并对所述至少一个目标dex文件同时进行优化。
作为又一个实施例,本申请实施例还提供了一种应用程序更新方法,包括:
确定服务端下发的补丁文件;其中,所述补丁文件根据源APK及目标APK比较获得的至少一个修复代码以及所述至少一个修复代码与所述源APK中包含的至少一个源dex文件的对应关系生成;
基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源dex文件,以获得至少一个目标dex文件;
对所述至少一个目标dex文件同时进行优化,获得至少一个优化文件。
以基于Android实现的App为例,如图3所示,本申请实施例提供的应用程序更新方法可以包括:
301:服务端比较源APK及目标APk,确定至少一个修复代码以及所述至少一个修复代码与所述源APK中包含的至少一个源dex文件的对应关系;
302:服务度根据所述至少一个修复代码及所述对应关系,生成补丁文件;
303:服务端将所述补丁文件下发至应用程序。
304:应用程序基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源dex文件,以获得至少一个目标dex文件;
305:应用程序对所述至少一个目标dex文件同时进行优化,获得至少一个优化文件。
其中,一个目标dex文件可以会优化得到一个或多个优化文件。
306:应用程序下一次启动时,将所述至少一个优化文件同时加载至内存中。
也即获得至少一个优化文件之后,在应用程序重新启动之后,即可以被加载至内存进行运行,达到修复目的,
在某些实施例中,所述基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源dex文件,以获得至少一个目标dex文件可以包括:
拷贝所述源APK中包含的所述至少一个源dex文件,得到至少一个拷贝文件;
基于所述对应关系,利用所述至少一个修复代码修复所述至少一个拷贝文件;
将修复之后的所述至少一个拷贝文件分别作为目标dex文件,写入所述源安装包以替换所述至少一个源dex文件。
在某些实施例中,所述基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源dex文件,以获得至少一个目标dex文件可以包括:
基于所述对应关系,确定所述至少一个修复代码对应的源dex文件;
分别拷贝所述至少一个修复代码对应的源dex文件,获得所述至少一个修复代码对应的拷贝文件;
利用所述至少一个修复代码修复各自对应的拷贝文件;
将修复之后的所述至少一个修复代码各自对应的拷贝文件写入所述源安装包,以替换所述至少一个修复代码各自对应的源dex文件,获得所述源安装包中重新得到的至少一个目标dex文件。
图4为本申请实施例提供的一种应用程序更新装置一个实施例的结构示意图,该装置可以包括:
比较模块401,用于比较源安装包及目标安装包,确定至少一个修复代码以及所述至少一个修复代码与所述源安装包中包含的至少一个源可执行文件的对应关系;
补丁生成模块402,用于根据所述至少一个修复代码及所述对应关系,生成补丁文件;
补丁下发模块403,用于将所述补丁文件下发至应用程序,以供所述应用程序基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源可执行文件,以获得至少一个目标可执行文件,并对所述至少一个目标可执行文件同时进行优化。
其中,该对应关系包括每个修复代码的代码标识及其对应源可执行文件的文件标识。
在Android应用场景中,所述比较模块即具体用于比较源APK及目标APk,确定至少一个修复代码以及所述至少一个修复代码与所述源APK中包含的至少一个源dex文件的对应关系;
所述补丁生成模块具体用于根据所述至少一个修复代码及所述对应关系,生成补丁文件;
所述补丁下发模块具体用于将所述补丁文件下发至应用程序,以供所述应用程序基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源dex文件,以获得至少一个目标dex文件,并对所述至少一个目标dex文件同时进行优化。
图4所述的应用程序更新装置可以执行图1所示实施例所述的应用程序更新方法,其实现原理和技术效果不再赘述。对于上述实施例中的应用程序更新装置其中各个模块、单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
在一个可能的设计中,图4所示实施例的应用程序更新装置可以实现为服务器,如图5所示,该服务器可以包括存储组件501以及处理组件502;
所述存储组件501一条或多条计算机指令,其中,所述一条或多条计算机指令供所述处理组件502调用执行。
所述处理组件502用于:
比较源安装包及目标安装包,确定至少一个修复代码以及所述至少一个修复代码与所述源安装包中包含的至少一个源可执行文件的对应关系;
根据所述至少一个修复代码及所述对应关系,生成补丁文件;
将所述补丁文件下发至应用程序,以供所述应用程序基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源可执行文件,以获得至少一个目标可执行文件,并对所述至少一个目标可执行文件同时进行优化。
其中,处理组件502可以包括一个或多个处理器来执行计算机指令,以完成上述的方法中的全部或部分步骤。当然处理组件也可以为一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
存储组件501被配置为存储各种类型的数据以支持在服务器的操作。存储组件可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
当然,服务器必然还可以包括其他部件,例如输入/输出接口、通信组件等。
本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被计算机执行时可以实现上述图1所示实施例的应用程序更新方法。
图6为本申请实施例提供的一种应用程序更新装置一个实施例的结构示意图,该装置可以包括:
补丁获取模块601,用于确定服务端下发的补丁文件;其中,所述补丁文件根据源安装包及目标安装包比较获得的至少一个修复代码以及所述至少一个修复代码与所述源安装包中包含的至少一个源可执行文件的对应关系生成;
补丁修复模块602,用于基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源可执行文件,以获得至少一个目标可执行文件;
文件优化模块603,用于对所述至少一个目标可执行文件同时进行优化,获得至少一个优化文件。
作为一种可选方式,所述补丁修复模块具体用于:
拷贝所述源安装包中包含的所述至少一个源可执行文件,得到至少一个拷贝文件;
基于所述对应关系,利用所述至少一个修复代码修复所述至少一个拷贝文件;
将修复之后的所述至少一个拷贝文件分别作为目标可执行文件,写入所述源安装包以替换所述至少一个源可执行文件。
作为另一种可选方式,所述补丁修复模块具体用于:
基于所述对应关系,确定所述至少一个修复代码对应的源可执行文件;
分别拷贝所述至少一个修复代码对应的源可执行文件,获得所述至少一个修复代码对应的拷贝文件;
利用所述至少一个修复代码修复各自对应的拷贝文件;
将修复之后的所述至少一个修复代码各自对应的拷贝文件写入所述源安装包,以替换所述至少一个修复代码各自对应的源可执行文件,获得所述源安装包中重新得到的至少一个目标可执行文件。
在某些实施例中,该装置还可以包括:
加载模块,用于将所述至少一个优化文件加载至内存中。
可选地,所述加载模块可以具体用于将所述至少一个优化文件同时加载至内存中。
在某些实施例中,所述加载模块可以具体是在下一次启动时,将所述至少一个优化文件同时加载至内存中。
图6所述的应用程序更新装置可以执行图2所示实施例所述的应用程序更新方法,其实现原理和技术效果不再赘述。对于上述实施例中的应用程序更新装置其中各个模块、单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
在一个可能的设计中,图6所示实施例的应用程序更新装置可以实现为终端,如图7所示,该终端可以包括存储组件701以及处理组件702;
所述存储组件701存储一条或多条计算机指令,其中,所述一条或多条计算机指令供所述处理组件702调用执行。
所述处理组件702用于:
确定服务端下发的补丁文件;其中,所述补丁文件根据源安装包及目标安装包比较获得的至少一个修复代码以及所述至少一个修复代码与所述源安装包中包含的至少一个源可执行文件的对应关系生成;
基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源可执行文件,以获得至少一个目标可执行文件;
对所述至少一个目标可执行文件同时进行优化,获得至少一个优化文件。
其中,处理组件702可以包括一个或多个处理器来执行计算机指令,以完成上述的方法中的全部或部分步骤。当然处理组件也可以为一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
存储组件701被配置为存储各种类型的数据以支持在终端的操作。存储组件可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
当然,该终端必然还可以包括其他部件,例如输入/输出接口、通信组件等。
本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被计算机执行时可以实现上述图2所示实施例的应用程序更新方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (14)

1.一种应用程序更新方法,其特征在于,包括:
比较源安装包及目标安装包,确定至少一个修复代码以及所述至少一个修复代码与所述源安装包中包含的至少一个源可执行文件的对应关系;
根据所述至少一个修复代码及所述对应关系,生成补丁文件;
将所述补丁文件下发至应用程序,以供所述应用程序基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源可执行文件,以获得至少一个目标可执行文件,并对所述至少一个目标可执行文件同时进行优化。
2.根据权利要求1所述的方法,其特征在于,所述对应关系包括每个修复代码的代码标识及其对应源可执行文件的文件标识。
3.一种应用程序更新方法,其特征在于,包括:
确定服务端下发的补丁文件;其中,所述补丁文件根据源安装包及目标安装包比较获得的至少一个修复代码以及所述至少一个修复代码与所述源安装包中包含的至少一个源可执行文件的对应关系生成;
基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源可执行文件,以获得至少一个目标可执行文件;
对所述至少一个目标可执行文件同时进行优化,获得至少一个优化文件。
4.根据权利要求3所述的方法,其特征在于,所述基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源可执行文件,以获得至少一个目标可执行文件包括:
拷贝所述源安装包中包含的所述至少一个源可执行文件,得到至少一个拷贝文件;
基于所述对应关系,利用所述至少一个修复代码修复所述至少一个拷贝文件;
将修复之后的所述至少一个拷贝文件分别作为目标可执行文件,写入所述源安装包以替换所述至少一个源可执行文件。
5.根据权利要求3所述的方法,其特征在于,所述基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源可执行文件,以获得所述目标安装包对应的至少一个目标可执行文件包括:
基于所述对应关系,确定所述至少一个修复代码对应的源可执行文件;
分别拷贝所述至少一个修复代码对应的源可执行文件,获得所述至少一个修复代码对应的拷贝文件;
利用所述至少一个修复代码修复各自对应的拷贝文件;
将修复之后的所述至少一个修复代码各自对应的拷贝文件写入所述源安装包,以替换所述至少一个修复代码各自对应的源可执行文件,获得所述源安装包中重新得到的至少一个目标可执行文件。
6.根据权利要求3所述的方法,其特征在于,所述对所述至少一个目标可执行文件同时进行优化,获得至少一个优化文件之后,所述方法还包括:
将所述至少一个优化文件加载至内存中。
7.根据权利要求6所述的方法,其特征在于,所述将所述至少一个优化文件加载至内存中包括:
将所述至少一个优化文件同时加载至内存中。
8.根据权利要求7所述的方法,其特征在于,所述将所述至少一个优化文件同时加载至内存中包括:
在下一次启动时,将所述至少一个优化文件同时加载至内存中。
9.一种应用程序更新方法,其特征在于,包括:
比较源APK及目标APk,确定至少一个修复代码以及所述至少一个修复代码与所述源APK中包含的至少一个源dex文件的对应关系;
根据所述至少一个修复代码及所述对应关系,生成补丁文件;
将所述补丁文件下发至应用程序,以供所述应用程序基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源dex文件,以获得至少一个目标dex文件,并对所述至少一个目标dex文件同时进行优化。
10.一种应用程序更新方法,其特征在于,包括:
确定服务端下发的补丁文件;其中,所述补丁文件根据源APK及目标APK比较获得的至少一个修复代码以及所述至少一个修复代码与所述源APK中包含的至少一个源dex文件的对应关系生成;
基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源dex文件,以获得至少一个目标dex文件;
对所述至少一个目标dex文件同时进行优化,获得至少一个优化文件。
11.一种应用程序更新装置,其特征在于,包括:
比较模块,用于比较源安装包及目标安装包,确定至少一个修复代码以及所述至少一个修复代码与所述源安装包中包含的至少一个源可执行文件的对应关系;
补丁生成模块,用于根据所述至少一个修复代码及所述对应关系,生成补丁文件;
补丁下发模块,用于将所述补丁文件下发至应用程序,以供所述应用程序基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源可执行文件,以获得至少一个目标可执行文件,并对所述至少一个目标可执行文件同时进行优化。
12.一种应用程序更新装置,其特征在于,包括:
补丁获取模块,用于确定服务端下发的补丁文件;其中,所述补丁文件根据源安装包及目标安装包比较获得的至少一个修复代码以及所述至少一个修复代码与所述源安装包中包含的至少一个源可执行文件的对应关系生成;
补丁修复模块,用于基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源可执行文件,以获得至少一个目标可执行文件;
文件优化模块,用于对所述至少一个目标可执行文件同时进行优化,获得至少一个优化文件。
13.一种服务器,其特征在于,包括处理组件以及存储组件;
所述存储组件存储一个或多个计算机指令;所述一个或多个计算机指令用以被所述处理组件调用执行;
所述处理组件用于:
比较源安装包及目标安装包,确定至少一个修复代码以及所述至少一个修复代码与所述源安装包中包含的至少一个源可执行文件的对应关系;
根据所述至少一个修复代码及所述对应关系,生成补丁文件;
将所述补丁文件下发至应用程序,以供所述应用程序基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源可执行文件,以获得至少一个目标可执行文件,并对所述至少一个目标可执行文件同时进行优化。
14.一种终端,其特征在于,包括处理组件以及存储组件;
所述存储组件存储一个或多个计算机指令;所述一个或多个计算机指令用以被所述处理组件调用执行;
所述处理组件用于:
确定服务端下发的补丁文件;其中,所述补丁文件根据源安装包及目标安装包比较获得的至少一个修复代码以及所述至少一个修复代码与所述源安装包中包含的至少一个源可执行文件的对应关系生成;
基于所述对应关系,利用所述至少一个修复代码修复所述至少一个源可执行文件,以获得至少一个目标可执行文件;
对所述至少一个目标可执行文件同时进行优化,获得至少一个优化文件。
CN201811303291.6A 2018-11-02 2018-11-02 应用程序更新方法、装置、终端及服务器 Active CN111142922B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811303291.6A CN111142922B (zh) 2018-11-02 2018-11-02 应用程序更新方法、装置、终端及服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811303291.6A CN111142922B (zh) 2018-11-02 2018-11-02 应用程序更新方法、装置、终端及服务器

Publications (2)

Publication Number Publication Date
CN111142922A true CN111142922A (zh) 2020-05-12
CN111142922B CN111142922B (zh) 2023-04-25

Family

ID=70516032

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811303291.6A Active CN111142922B (zh) 2018-11-02 2018-11-02 应用程序更新方法、装置、终端及服务器

Country Status (1)

Country Link
CN (1) CN111142922B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112612502A (zh) * 2020-12-23 2021-04-06 苏州三六零智能安全科技有限公司 补丁生成方法、装置、设备及存储介质
CN112799690A (zh) * 2021-02-01 2021-05-14 联想(北京)有限公司 信息处理方法、装置、设备和存储介质
CN114610516A (zh) * 2022-03-10 2022-06-10 北京字节跳动网络技术有限公司 应用程序的修复方法、装置、计算机设备以及存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050055686A1 (en) * 2003-09-08 2005-03-10 Microsoft Corporation Method and system for servicing software
US20060075001A1 (en) * 2004-09-30 2006-04-06 Canning Jeffrey C System, method and program to distribute program updates
US9477461B1 (en) * 2014-03-12 2016-10-25 Cloud Linux Zug GmbH Systems and methods for generating and applying operating system live updates
CN106095502A (zh) * 2016-06-13 2016-11-09 北京奇虎科技有限公司 一种安卓应用的热修复方法、装置、服务器和***
CN106951280A (zh) * 2017-02-28 2017-07-14 努比亚技术有限公司 移动终端及应用修复方法
CN107329781A (zh) * 2017-06-21 2017-11-07 努比亚技术有限公司 软件热修复方法、终端、***及计算机可读存储介质
CN107391107A (zh) * 2017-06-12 2017-11-24 北京明朝万达科技股份有限公司 一种应用程序的修复方法和装置
CN107451474A (zh) * 2016-05-31 2017-12-08 百度在线网络技术(北京)有限公司 用于终端的软件漏洞修复方法和装置
CN108399080A (zh) * 2018-03-05 2018-08-14 深圳市华讯方舟软件信息有限公司 一种Android App热更新方法
CN108491216A (zh) * 2018-03-05 2018-09-04 北京指掌易科技有限公司 一种Android***无感知应用安装升级的方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050055686A1 (en) * 2003-09-08 2005-03-10 Microsoft Corporation Method and system for servicing software
US20060075001A1 (en) * 2004-09-30 2006-04-06 Canning Jeffrey C System, method and program to distribute program updates
US9477461B1 (en) * 2014-03-12 2016-10-25 Cloud Linux Zug GmbH Systems and methods for generating and applying operating system live updates
CN107451474A (zh) * 2016-05-31 2017-12-08 百度在线网络技术(北京)有限公司 用于终端的软件漏洞修复方法和装置
CN106095502A (zh) * 2016-06-13 2016-11-09 北京奇虎科技有限公司 一种安卓应用的热修复方法、装置、服务器和***
CN106951280A (zh) * 2017-02-28 2017-07-14 努比亚技术有限公司 移动终端及应用修复方法
CN107391107A (zh) * 2017-06-12 2017-11-24 北京明朝万达科技股份有限公司 一种应用程序的修复方法和装置
CN107329781A (zh) * 2017-06-21 2017-11-07 努比亚技术有限公司 软件热修复方法、终端、***及计算机可读存储介质
CN108399080A (zh) * 2018-03-05 2018-08-14 深圳市华讯方舟软件信息有限公司 一种Android App热更新方法
CN108491216A (zh) * 2018-03-05 2018-09-04 北京指掌易科技有限公司 一种Android***无感知应用安装升级的方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112612502A (zh) * 2020-12-23 2021-04-06 苏州三六零智能安全科技有限公司 补丁生成方法、装置、设备及存储介质
CN112799690A (zh) * 2021-02-01 2021-05-14 联想(北京)有限公司 信息处理方法、装置、设备和存储介质
CN114610516A (zh) * 2022-03-10 2022-06-10 北京字节跳动网络技术有限公司 应用程序的修复方法、装置、计算机设备以及存储介质
CN114610516B (zh) * 2022-03-10 2023-07-04 抖音视界有限公司 应用程序的修复方法、装置、计算机设备以及存储介质

Also Published As

Publication number Publication date
CN111142922B (zh) 2023-04-25

Similar Documents

Publication Publication Date Title
US10019256B2 (en) Systems and methods for incremental software development
US10642596B2 (en) Embedded device and program updating method
US20200073657A1 (en) Systems And Methods For Software Integrity Validation Using Blockchain
US9027014B2 (en) Updating firmware compatibility data
JP2021002317A (ja) アプリケーションをアップグレードするための方法、装置、デバイスならびに記憶媒体
CN104915595B (zh) 云平台虚拟化漏洞修复的方法及装置
US11017091B2 (en) Firmware map data
US20110320794A1 (en) Flash System And Method For Updating The Flash System
CN111142922B (zh) 应用程序更新方法、装置、终端及服务器
CN105677415A (zh) 热更新方法及装置
TW201502974A (zh) 可延伸韌體抽取技術
CN110162429B (zh) ***修复方法、服务器及存储介质
CN105786537A (zh) 一种热补丁的实现方法和装置
CA3155732A1 (en) Business process configuring method, business request processing method, and devices
US20210311711A1 (en) Desired state model for managing lifecycle of virtualization software
US20210311717A1 (en) Desired state model for managing lifecycle of virtualization software
CN109688472A (zh) 电视***升级方法、装置、设备及存储介质
CN109375953B (zh) 一种操作***启动方法及装置
CN105677409A (zh) 一种***升级方法及装置
CN112835601A (zh) 一种固件更新方法、装置、设备及存储介质
CN116775061A (zh) 微服务应用的部署方法、装置、设备及存储介质
CN114391136A (zh) 增强的虚拟机镜像管理***
US20130173527A1 (en) Life Cycle Management Of Rule Sets
CN110716723A (zh) 一种固件升级方法及***
CN111949290B (zh) 一种热补丁管理方法、装置、电子设备及存储介质

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