CN107506221A - 应用程序升级方法、装置及设备 - Google Patents

应用程序升级方法、装置及设备 Download PDF

Info

Publication number
CN107506221A
CN107506221A CN201710895889.8A CN201710895889A CN107506221A CN 107506221 A CN107506221 A CN 107506221A CN 201710895889 A CN201710895889 A CN 201710895889A CN 107506221 A CN107506221 A CN 107506221A
Authority
CN
China
Prior art keywords
file
loader
new
installation kit
upgrade 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
CN201710895889.8A
Other languages
English (en)
Other versions
CN107506221B (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.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co 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 CN201710895889.8A priority Critical patent/CN107506221B/zh
Publication of CN107506221A publication Critical patent/CN107506221A/zh
Application granted granted Critical
Publication of CN107506221B publication Critical patent/CN107506221B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

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

Abstract

本说明书实施例提供一种应用程序升级方法、装置及设备,该方法包括:在目标应用程序启动过程中,若获得目标应用程序的新版程序安装包,则可以基于该新版程序安装包获得升级所需的升级文件,在可写存储区中为该升级文件创建目录,并将该升级文件存放在创建的目录中,此外,还可以动态构建用于替换旧加载器的新加载器,以便利用所构建的新加载器从所创建的目录中加载升级文件。

Description

应用程序升级方法、装置及设备
技术领域
本说明书涉及软件升级技术领域,尤其涉及应用程序升级方法、装置及设备。
背景技术
随着移动通信技术的发展,为了满足用户的需求,或者完善软件产品的功能,需要对终端中安装的应用程序(Application,APP)进行升级,以使升级后的应用程序比旧版本的性能更好,得到优化的效果。
在Android系统中,在检测到新版程序安装包时,若用户确认进行升级,则可以利用新版程序安装包进行覆盖安装。可见,提供一种免覆盖即可进行应用程序升级的方案显得尤为重要。
发明内容
为克服相关技术中存在的问题,本说明书提供了应用程序升级方法、装置及设备。
一种应用程序升级方法,所述方法应用在目标应用程序中,所述方法包括:
在所述目标应用程序启动时,若获得所述目标应用程序的新版程序安装包,基于所述新版程序安装包获得升级所需的升级文件;
在可写存储区中为所述升级文件创建目录,并将所述升级文件存放在创建的目录中;
构建用于替换旧加载器的新加载器;
利用所构建的新加载器从所述目录中加载升级文件。
可选的,所述升级文件包括可执行文件和资源文件,所述基于所述新版程序安装包获得升级所需的升级文件包括:
从所述新版程序安装包中提取出可执行文件;
将所述新版程序安装包作为资源文件。
可选的,所述可执行文件包括可执行代码文件和动态链接库,所述可执行代码文件、动态链接库、资源文件分别存放在不同的目录中。
可选的,所构建的加载器继承于DexClassLoader,所述构建用于替换旧加载器的新加载器,包括:
构建继承于DexClassLoader的加载器;基于所创建的目录获得所述升级文件的目录路径,将所述目录路径传给所构建的加载器;基于所构建的加载器修改LoadedAPK类中ClassLoader的属性值以及Resources的属性值,获得用于替换旧加载器的新加载器。
可选的,所述基于所述新版程序安装包获得升级所需的升级文件,包括:
对所述新版程序安装包进行合法性验证,若验证通过,则基于所述新版程序安装包获得升级所需的升级文件。
可选的,所述方法还包括:若验证失败,则清除所述新版程序安装包。
可选的,所述构建新加载器之前,所述方法还包括:
若所述升级文件存放失败,则清除所述升级文件。
一种应用程序升级装置,所述装置应用在目标应用程序中,所述装置包括:
文件获得模块,用于在所述目标应用程序启动时,若获得所述目标应用程序的新版程序安装包,基于所述新版程序安装包获得升级所需的升级文件;
信息存放模块,用于在可写存储区中为所述升级文件创建目录,并将所述升级文件存放在创建的目录中;
加载器构建模块,用于构建用于替换旧加载器的新加载器;
信息加载模块,用于利用所构建的新加载器从所述目录中加载升级文件。
可选的,所述升级文件包括可执行文件和资源文件,所述文件获得模块,用于:
从所述新版程序安装包中提取出可执行文件;
将所述新版程序安装包作为资源文件。
可选的,所述可执行文件包括可执行代码文件和动态链接库,所述可执行代码文件、动态链接库、资源文件分别存放在不同的目录中。
可选的,所构建的加载器继承于DexClassLoader,所述加载器构建模块用于:
构建继承于DexClassLoader的加载器;基于所创建的目录获得所述升级文件的目录路径,将所述目录路径传给所构建的加载器;基于所构建的加载器修改LoadedAPK类中ClassLoader的属性值以及Resources的属性值,获得用于替换旧加载器的新加载器。
一种计算机设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
在所述目标应用程序启动时,若获得所述目标应用程序的新版程序安装包,基于所述新版程序安装包获得升级所需的升级文件;
在可写存储区中为所述升级文件创建目录,并将所述升级文件存放在创建的目录中;
构建用于替换旧加载器的新加载器;
利用所构建的新加载器从所述目录中加载升级文件。
本说明书的实施例提供的技术方案可以包括以下有益效果:
应用本说明书实施例,可以在目标应用程序启动过程中,若获得目标应用程序的新版程序安装包,则可以基于该新版程序安装包获得升级所需的升级文件,在可写存储区中为该升级文件创建目录,并将该升级文件存放在创建的目录中,此外,还可以动态构建用于替换旧加载器的新加载器,以便利用所构建的新加载器从所创建的目录中加载升级文件,实现无需用户确认、也无需覆盖安装,即可实现应用程序升级,提高了新版程序安装包的安装率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
图1为本说明书根据一示例性实施例示出的一种应用程序升级方法的流程图。
图2为本说明书根据一示例性实施例示出的另一种应用程序升级方法的流程图。
图3为本说明书根据一示例性实施例示出的一种应用程序升级方法的类图。
图4为本说明书应用程序升级装置所在计算机设备的一种硬件结构图。
图5为本说明书根据一示例性实施例示出的一种应用程序升级装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
应用程序升级,可以是应用程序从低版本向高版本的更新。由于高版本常常修复低版本的部分漏洞(bug)或者相对于低版本新增更多功能等,所以更新后的应用程序往往比原版本的性能更好,得到优化的效果,用户也能有更好的体验。在Android设备中首次安装应用程序时,直接进行安装。当有新版本推送到Android设备时,往往先下载最新的APP,再跳转到APP Installer进行覆盖安装。基于终端与用户的博弈,每次更新都需要用户确认后才能覆盖安装,即接收到确认升级指令后才能覆盖安装,鉴于此,提供一种免覆盖就能自动进行应用程序升级的方案显得尤为重要。
本说明书实施例可以应用在需要升级应用程序的电子设备中。电子设备可以是各种可以运行软件的电子设备,电子设备可以是手持电子设备或其它电子设备。例如,可以是蜂窝电话、媒体播放器或其它手持便携式设备、诸如腕表设备、吊坠设备的稍微更小的便携式设备或其它可穿戴或小型化设备、游戏装备、平板计算机、笔记本计算机、集成于计算机显示器中的计算机或其它的电子装备。
本说明书提供了应用程序升级方法,该方法可以应用在目标应用程序中,该方法的部分流程可参照图1所示,图1为本说明书根据一示例性实施例示出的一种应用程序升级方法的流程图,方法可以包括步骤101、102、103和104。
在步骤101中,在所述目标应用程序启动时,若获得所述目标应用程序的新版程序安装包,基于所述新版程序安装包获得升级所需的升级文件。
在步骤102中,在可写存储区中为所述升级文件创建目录,并将所述升级文件存放在创建的目录中。
在步骤103中,构建用于替换旧加载器的新加载器。
在步骤104中,利用所构建的新加载器从所述目录中加载升级文件。
其中,Android APP可以运行在一个独立空间里,即可以运行在一个单独的进程中。如果需要启动应用程序,Android系统可以为应用程序创建一个新的进程并启动,这个进程会持续运行直到被系统杀死。目前,Android中往往使用PathClassLoader类作为Android的默认的类加载器,PathClassLoader可以从文件系统中加载类文件。PathClassLoade本身继承自BaseDexClassLoader。PathClassLoade只能加载已经安装到Android系统中的Apk(AndroidPackage,即Android安装包)文件,即/data/app目录下的Apk文件,因此,在有新版程序安装包时,需要将Apk文件复制到程序目录下,实现覆盖安装。
而本说明书把旧版APP作为新版APP的启动加载器,通过替换APP原生Application为New Application,以实现替换入口逻辑,利用新版程序安装包获得的升级文件替换运行期的可执行文件和资源文件,从而实现加载新的可执行文件和新的资源文件。其中,Android Application可以作为程序的入口。
在目标应用程序需要启动时,系统可以为目标应用程序创建一个新的进程。在目标应用程序启动过程中,可以获得目标应用程序的新版程序安装包。新版程序安装包可以是升级应用程序所需的完整安装包。
在一个例子中,可以将目标应用程序的当前版本标识与线上发布的最新版本标识进行比较,根据比较结果下载所述目标应用程序的新版应用程序包。
其中,版本标识可以是版本号等能唯一表示版本的标识,以便进行版本区分。例如,版本标识可以是versionCode,则新版程序安装包的versionCode大于当前安装APP的versionCode,该versionCode一般指定在APP配置文件中。最新版本标识,可以是本执行端主动从服务端获取得到,也可以基于服务端推送获得。
该例子中,可以根据版本标识的比较结果,直接从服务器中下载目标应用程序的新版应用程序包,提高获得新版应用程序包的效率。
在另一个例子中,由于服务端下发时可能只下发增量升级包,增量升级包是针对差异部分的升级包,增量升级包中不包括与旧版应用程序中的相同部分。鉴于此,可以将增量升级包与旧版应用程序进行结合,获得一个完整的新版程序安装包。
可见,从网络上下载增量升级包,由于增量升级包比完整程序安装包(全量安装包)小,因此,可以减轻网络传输压力。
在某些例子中,可以判断新版程序安装包是否下载成功,若成功,则执行基于该新版程序安装包获得升级所需的升级文件步骤,若失败,则清除下载的文件。
在获得目标应用程序的新版程序安装包后,可以基于该新版程序安装包获得升级所需的升级文件。升级文件可以包括可执行文件和资源文件。其中,可执行文件可以包括可执行代码文件以及动态链接库。例如,可执行代码文件可以包括Android Dalvik/ARTruntime的可执行代码;动态链接库可以是由C或C++语言生成的动态链接库等;资源文件可以包括可访问/可渲染的图片、音频、视频、资源和ID的映射文件等。作为一个例子,可以从所述新版程序安装包中提取可执行文件。例如,将新版程序安装包进行解压,然后提取出可执行文件。作为一个例子,可以直接将新版程序安装包作为资源文件,以便后续将老资源替换为新资源。Android中合法的资源包可以是APP文件,因此可以将新版程序安装包直接作为新的资源包。
在某些例子中,为了提高执行效率,所述基于所述新版程序安装包获得升级所需的升级文件,可以包括:对基于所述新版程序安装包获得的初始可执行文件进行优化,从而获得优化后的可执行文件。优化过程可以是将初始可执行文件执行一遍,以将初始可执行文件转换为在当前设备上执行效率最高的可执行文件。例如,通过调用dex 2oat接口将dex文件转换为oat文件,从而提高执行效率。
进一步的,在获得升级文件过程中,还可以对新版程序安装包进行合法性验证,若验证通过,再基于该新版程序安装包获得升级所需的升级文件。在进行合法性验证时,如果新版程序安装包是被压缩的安装包,则可以先进行解压缩后再验证合法性。合法性验证的目的是为了保证安装包的安全性,作为例子,可以验证新版程序安装包的包名、签名等。例如,验证包名和签名是否分别与当前安装APP的包名和签名一致等。只有在新版程序安装包合法的情况下才进行后续升级过程,从而提高安全性。
进一步的,如果验证失败,则清除该新版程序安装包。可见,针对不合法的新版程序安装包,可以通过验证的方式实现自动清除。在清除新版程序安装包后,可以加载当前版本(旧版)应用程序中的文件,实现运行当前版本的应用程序。
在某些例子中,在获得升级文件后,还可以对升级文件进行合法性验证,可以验证升级文件的完整性、签名等信息,避免升级文件被篡改,如果升级文件不满足合法性验证(如被篡改),则清除升级文件,并加载当前版本(旧版)应用程序中的文件,实现运行当前版本的应用程序。
在基于所述新版程序安装包获得升级所需的升级文件后,可以在可写存储区中为该升级文件创建目录,并将所述升级文件存放在创建的目录中。于应用程序而言,对某些存储区域只有读取的权限,对某些存储区域具有读写权限。鉴于此,可以在目标应用程序可写存储区中为升级文件创建目录。针对不同类型的升级文件创建不同目录,以使不同类型的升级文件存放在不同的目录中。例如,所述可执行代码文件、动态链接库、资源文件分别存放在不同的目录中,以便从不同的存储路径中加载不同的文件。
将所述升级文件存放到创建的目录中后,可以获得不同升级文件的目录路径,因此,可以基于各升级文件的目录路径更新目标应用程序中当前版本的可执行文件的目录路径以及资源文件的目录路径,以便后续加载时,根据可执行文件的目录路径,将可执行文件传给ClassLoader,实现利用ClassLoader替换可执行文件;根据资源文件的目录路径,将资源文件传给Resources,实现利用Resources替换资源。
在本实施例中,可以构建用于替换旧加载器的新加载器,例如,构建继承于DexClassLoader的NewClassLoader,以实现动态替换旧APP中的PathClassLoader,因此,可以hook住代码逻辑执行,包括dex code和native code。
例如,构建继承于DexClassLoader的加载器;基于所创建的目录获得所述升级文件的目录路径,将所述目录路径传给所构建的加载器,在目录路径传给新加载器后可以构建一个全新的DexPathList。基于所构建的加载器修改LoadedAPK类中ClassLoader的属性值以及Resources的属性值,获得用于替换旧加载器的新加载器,以便在后续加载时,利用所构建的新加载器从所述目录中加载可执行文件和资源文件。本实施例通过动态修改LoadedAPK类里面的属性值,便于后续加载可执行文件或资源时,从新的目录路径中加载相应的可执行文件或资源,实现可执行文件和资源的替换。
可见,本实施例通过修改Class Loader的属性值实现可执行文件的替换,通过修改Resources的属性值,实现资源替换,从而无需用户确认,即可通过应用程序本身实现自动升级,既可以提高新版本程序安装包的使用率,又可以使用户在无需操作的情况下享受升级带来的高性能。
在某些例子中,第一次安装目标应用程序时,目标应用程序的文件存储在目标应用程序只有读权限的存储区域中,而针对后续升级版本,目标应用程序可以基于当前版本进行目录节点区分,将不同版本的升级文件存储在不同的目录中。在一个例子中,不同版本的升级文件可以同时保存,以便后续查找历史版本的升级文件。在另一个例子中,比当前版本低的升级文件可以清除,以节省存储空间。例如,第一次安装目标应用程序时版本号为1.0,目标应用程序由1.0版本升级为2.0版本时,可以将升级文件存放在2.0的目录下(可以理解的是2.0目录中可以有多个子目录,用于分别存放不同类型的文件),在加载文件时,直接加载2.0目录下的可执行文件和资源文件;当目标应用程序由2.0版本升级为3.0版本时,可以将升级文件存放在3.0的目录下,与此同时,还可以清除2.0目录下的可执行文件和资源文件。在加载文件时,直接加载2.0目录下的可执行文件和资源文件。
在构建新加载器后,还可以判断存放、构建等操作是否成功,若成功,则进入下一步,若失败,则清除文件,加载当前版本的应用程序文件。进一步的,若成功,还可以进行文件合法性验证,以避免信息被篡改等。验证通过后,可以利用所构建的新加载器从所述目录中加载升级文件,从而实现加载新资源和新可执行文件。
以上实施方式中的各种技术特征可以任意进行组合,只要特征之间的组合不存在冲突或矛盾,但是限于篇幅,未进行一一描述,因此上述实施方式中的各种技术特征的任意进行组合也属于本说明书公开的范围。
以下以其中一种组合进行示例说明。
如图2所示,图2为本说明书根据一示例性实施例示出的另一种应用程序升级方法的流程图,在该实施例中,可以将目标应用程序的当前版本标识与线上发布的最新版本标识进行比较,若根据比较结果确定存在新版程序安装包时,下载新版程序安装包(步骤201),如果下载失败,则清除文件,加载当前版本(老APP)的文件(步骤202)。如果下载成功,则基于所述新版程序安装包获得升级所需的升级文件,在可写存储区中为所述升级文件创建目录,并将所述升级文件存放在创建的目录中,构建用于替换旧加载器的新加载器(步骤203)。若步骤203释放APP过程释放失败,则执行步骤202,若释放成功,则进行安全性验证(步骤204),例如,验证升级文件是否完整,签名是否与当前版本的签名相同等等。若验证失败,则执行步骤202,若验证成功,则利用所构建的新加载器从创建的目录中加载升级文件(步骤205)。
相应的,本说明书还结合其中一个实施例的类图进行示例说明。如图3所示,图3为本说明书根据一示例性实施例示出的一种应用程序升级方法的类图。
在该示意图中,可以包括LoadedAPK、NewClassLoader、DeexClassLoader、BaseDexClassLoader、DexPathList、Element以及DexFile等。
LoadedApk:代表Android APP运行过程中进程的实例,包含了可执行文件的加载器ClassLoader和加载资源的实例Resources。
NewClassLoader:代表着升级后APP的类加载器,是DexClassLoader的子类,指向着新APP的可执行文件路径。通过运行时构造一个全新的ClassLoader去修改LoadedAPK类中mClassLoader的属性值以及mResources的属性值,这样就能在程序运行过程中完成代码逻辑的替换以及资源的替换,以实现升级的目的。
BaseDexClassLoader:Android运行时的实际可执行文件加载器,是DexClassLoader的父类。通过findClass(String name)查找并加载Java类,通过findLibrary(String name)查找静态链接库,而此操作都是由pathList属性完成。BaseDexClassLoader将findClass方法委托给pathList对象的findClass方法,pathList对象是在NewDexClassLoader的构造函数中new出来的,它的类型是DexPathList。直接遍历dexElements列表,然后通过调用element.dexFile对象上的loadClass()方法来加载类,如果返回值不是null,就表示加载类成功,会将这个Class对象返回。
DexPathList:包含dex文件的集合dexElements和动态链接库文件路径集合nativeLibraryDirectories,是真正负责加载可执行文件的地方。DexPathList对象中的dexElements列表是类加载的一个核心,一个类如果能被成功加载,则它的dex会出现在dexElements所对应的dex文件中。
Element:包含Dex文件的地址file和dex映射到内存里的对象dexFile。
DexFile:负责映射dex文件到内存,并负责执行加载Java类。
可见,本实施例将基于新版程序安装包获得的可执行文件和资源存放在创建的目录中,通过替换可执行文件和资源的方式,实现无需用户确认,即实现应用程序自动升级。
与前述应用程序升级方法的实施例相对应,本说明书还提供了应用程序升级装置及其所应用的电子设备的实施例。
本说明书应用程序升级装置的实施例可以应用在计算机设备。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在计算机设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,为本说明书应用程序升级装置所在计算机设备的一种硬件结构图,除了图4所示的处理器410、内存430、网络接口420、以及非易失性存储器440之外,实施例中装置431所在的计算机设备通常根据该设备的实际功能,还可以包括其他硬件,对此不再赘述。
如图5所示,是本说明书根据一示例性实施例示出的一种应用程序升级装置的框图,所述装置包括:
文件获得模块510,用于在所述目标应用程序启动时,若获得所述目标应用程序的新版程序安装包,基于所述新版程序安装包获得升级所需的升级文件。
信息存放模块520,用于在可写存储区中为所述升级文件创建目录,并将所述升级文件存放在创建的目录中。
加载器构建模块530,用于构建用于替换旧加载器的新加载器。
信息加载模块540,用于利用所构建的新加载器从所述目录中加载升级文件。
在一个可选的实现方式中,所述升级文件包括可执行文件和资源文件,所述文件获得模块510,用于:
从所述新版程序安装包中提取出可执行文件;
将所述新版程序安装包作为资源文件。
在一个可选的实现方式中,所述可执行文件包括可执行代码文件和动态链接库,所述可执行代码文件、动态链接库、资源文件分别存放在不同的目录中。
在一个可选的实现方式中,所述加载器构建模块530用于:
构建继承于DexClassLoader的加载器;基于所创建的目录获得所述升级文件的目录路径,将所述目录路径传给所构建的加载器;基于所构建的加载器修改LoadedAPK类中ClassLoader的属性值以及Resources的属性值,获得用于替换旧加载器的新加载器。
在一个可选的实现方式中,所述文件获得模块510,用于:
对所述新版程序安装包进行合法性验证,若验证通过,则基于所述新版程序安装包获得升级所需的升级文件。
在一个可选的实现方式中,所述装置还包括清除模块(图5未示出),用于:
若验证失败,则清除所述新版程序安装包。
在一个可选的实现方式中,所述构建新加载器之前,所述装置还包括清除模块(图5未示出),用于:
若所述升级文件存放失败,则清除所述升级文件。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
相应的,本说明书实施例还提供一种计算机设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:
在所述目标应用程序启动时,若获得所述目标应用程序的新版程序安装包,基于所述新版程序安装包获得升级所需的升级文件;
在可写存储区中为所述升级文件创建目录,并将所述升级文件存放在创建的目录中;
构建用于替换旧加载器的新加载器;
利用所构建的新加载器从所述目录中加载升级文件。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
一种计算机存储介质,所述存储介质中存储有程序指令,所述程序指令包括:
在所述目标应用程序启动时,若获得所述目标应用程序的新版程序安装包,基于所述新版程序安装包获得升级所需的升级文件;
在可写存储区中为所述升级文件创建目录,并将所述升级文件存放在创建的目录中;
构建用于替换旧加载器的新加载器;
利用所构建的新加载器从所述目录中加载升级文件。
本说明书实施例可采用在一个或多个其中包含有程序代码的存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。计算机可用存储介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括但不限于:相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。

Claims (12)

1.一种应用程序升级方法,所述方法应用在目标应用程序中,所述方法包括:
在所述目标应用程序启动时,若获得所述目标应用程序的新版程序安装包,基于所述新版程序安装包获得升级所需的升级文件;
在可写存储区中为所述升级文件创建目录,并将所述升级文件存放在创建的目录中;
构建用于替换旧加载器的新加载器;
利用所构建的新加载器从所述目录中加载升级文件。
2.根据权利要求1所述的方法,所述升级文件包括可执行文件和资源文件,所述基于所述新版程序安装包获得升级所需的升级文件包括:
从所述新版程序安装包中提取出可执行文件;
将所述新版程序安装包作为资源文件。
3.根据权利要求2所述的方法,所述可执行文件包括可执行代码文件和动态链接库,所述可执行代码文件、动态链接库、资源文件分别存放在不同的目录中。
4.根据权利要求1所述的方法,所述构建用于替换旧加载器的新加载器,包括:
构建继承于DexClassLoader的加载器;基于所创建的目录获得所述升级文件的目录路径,将所述目录路径传给所构建的加载器;基于所构建的加载器修改LoadedAPK类中ClassLoader的属性值以及Resources的属性值,获得用于替换旧加载器的新加载器。
5.根据权利要求1至4任一项所述的方法,所述基于所述新版程序安装包获得升级所需的升级文件,包括:
对所述新版程序安装包进行合法性验证,若验证通过,则基于所述新版程序安装包获得升级所需的升级文件。
6.根据权利要求5所述的方法,所述方法还包括:
若验证失败,则清除所述新版程序安装包。
7.根据权利要求1至4任一项所述的方法,所述构建新加载器之前,所述方法还包括:
若所述升级文件存放失败,则清除所述升级文件。
8.一种应用程序升级装置,所述装置包括:
文件获得模块,用于在目标应用程序启动时,若获得所述目标应用程序的新版程序安装包,基于所述新版程序安装包获得升级所需的升级文件;
信息存放模块,用于在可写存储区中为所述升级文件创建目录,并将所述升级文件存放在创建的目录中;
加载器构建模块,用于构建用于替换旧加载器的新加载器;
信息加载模块,用于利用所构建的新加载器从所述目录中加载升级文件。
9.根据权利要求8所述的装置,所述升级文件包括可执行文件和资源文件,所述文件获得模块,用于:
从所述新版程序安装包中提取出可执行文件;
将所述新版程序安装包作为资源文件。
10.根据权利要求9所述的装置,所述可执行文件包括可执行代码文件和动态链接库,所述可执行代码文件、动态链接库、资源文件分别存放在不同的目录中。
11.根据权利要求8所述的装置,所述加载器构建模块用于:
构建继承于DexClassLoader的加载器;基于所创建的目录获得所述升级文件的目录路径,将所述目录路径传给所构建的加载器;基于所构建的加载器修改LoadedAPK类中ClassLoader的属性值以及Resources的属性值,获得用于替换旧加载器的新加载器。
12.一种计算机设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
在所述目标应用程序启动时,若获得所述目标应用程序的新版程序安装包,基于所述新版程序安装包获得升级所需的升级文件;
在可写存储区中为所述升级文件创建目录,并将所述升级文件存放在创建的目录中;
构建用于替换旧加载器的新加载器;
利用所构建的新加载器从所述目录中加载升级文件。
CN201710895889.8A 2017-09-28 2017-09-28 应用程序升级方法、装置及设备 Active CN107506221B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710895889.8A CN107506221B (zh) 2017-09-28 2017-09-28 应用程序升级方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710895889.8A CN107506221B (zh) 2017-09-28 2017-09-28 应用程序升级方法、装置及设备

Publications (2)

Publication Number Publication Date
CN107506221A true CN107506221A (zh) 2017-12-22
CN107506221B CN107506221B (zh) 2020-08-04

Family

ID=60699263

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710895889.8A Active CN107506221B (zh) 2017-09-28 2017-09-28 应用程序升级方法、装置及设备

Country Status (1)

Country Link
CN (1) CN107506221B (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108491236A (zh) * 2018-03-23 2018-09-04 努比亚技术有限公司 一种插件加载方法、装置及计算机可读存储介质
CN108762772A (zh) * 2018-05-07 2018-11-06 百度在线网络技术(北京)有限公司 应用的加载方法及装置
CN109739544A (zh) * 2018-12-25 2019-05-10 北京三快在线科技有限公司 用于生成应用安装包的方法、装置及电子设备
WO2019157891A1 (zh) * 2018-02-13 2019-08-22 中兴通讯股份有限公司 应用安装方法、应用安装包的生成方法
CN110427198A (zh) * 2018-04-27 2019-11-08 中兴通讯股份有限公司 应用程序的热修复方法、装置及终端、存储介质
CN110806888A (zh) * 2019-12-23 2020-02-18 北京奇艺世纪科技有限公司 一种应用程序的升级方法、装置及电子设备
CN110851204A (zh) * 2019-11-08 2020-02-28 北京字节跳动网络技术有限公司 应用启动的方法及装置、应用打包的方法及装置
CN111625256A (zh) * 2020-05-15 2020-09-04 广东浪潮大数据研究有限公司 一种应用程序升级方法、系统、设备及计算机存储介质
CN112486555A (zh) * 2020-12-07 2021-03-12 浙江诺诺网络科技有限公司 软件增量升级方法、装置、设备及计算机可读存储介质
CN112486520A (zh) * 2020-12-07 2021-03-12 深圳市欢太科技有限公司 应用程序升级方法及其装置、移动终端和服务器
CN112947976A (zh) * 2021-04-26 2021-06-11 统信软件技术有限公司 一种操作系统升级方法、计算设备及存储介质
WO2021248337A1 (zh) * 2020-06-09 2021-12-16 深圳市欢太科技有限公司 一种应用安装方法、装置、设备及计算机可读存储介质
CN115495716A (zh) * 2022-08-15 2022-12-20 荣耀终端有限公司 一种本地鉴权方法和电子设备
CN117762430A (zh) * 2024-02-22 2024-03-26 腾讯科技(深圳)有限公司 基于应用程序的处理方法、装置、计算机设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105786538A (zh) * 2014-12-24 2016-07-20 博雅网络游戏开发(深圳)有限公司 基于安卓系统的软件升级方法和装置
CN106325964A (zh) * 2015-06-18 2017-01-11 龙芯中科技术有限公司 动态编译调度方法及装置
CN107233068A (zh) * 2017-08-08 2017-10-10 佛山讯源医疗设备有限公司 一种高度可调节医疗用视力检测辅助椅

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105786538A (zh) * 2014-12-24 2016-07-20 博雅网络游戏开发(深圳)有限公司 基于安卓系统的软件升级方法和装置
CN106325964A (zh) * 2015-06-18 2017-01-11 龙芯中科技术有限公司 动态编译调度方法及装置
CN107233068A (zh) * 2017-08-08 2017-10-10 佛山讯源医疗设备有限公司 一种高度可调节医疗用视力检测辅助椅

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019157891A1 (zh) * 2018-02-13 2019-08-22 中兴通讯股份有限公司 应用安装方法、应用安装包的生成方法
CN110162311A (zh) * 2018-02-13 2019-08-23 中兴通讯股份有限公司 一种应用安装方法、应用安装包的生成方法
CN108491236A (zh) * 2018-03-23 2018-09-04 努比亚技术有限公司 一种插件加载方法、装置及计算机可读存储介质
CN110427198A (zh) * 2018-04-27 2019-11-08 中兴通讯股份有限公司 应用程序的热修复方法、装置及终端、存储介质
CN108762772A (zh) * 2018-05-07 2018-11-06 百度在线网络技术(北京)有限公司 应用的加载方法及装置
CN109739544B (zh) * 2018-12-25 2022-11-04 北京三快在线科技有限公司 用于生成应用安装包的方法、装置及电子设备
CN109739544A (zh) * 2018-12-25 2019-05-10 北京三快在线科技有限公司 用于生成应用安装包的方法、装置及电子设备
CN110851204B (zh) * 2019-11-08 2023-04-18 北京字节跳动网络技术有限公司 应用启动的方法及装置、应用打包的方法及装置
CN110851204A (zh) * 2019-11-08 2020-02-28 北京字节跳动网络技术有限公司 应用启动的方法及装置、应用打包的方法及装置
CN110806888A (zh) * 2019-12-23 2020-02-18 北京奇艺世纪科技有限公司 一种应用程序的升级方法、装置及电子设备
CN111625256A (zh) * 2020-05-15 2020-09-04 广东浪潮大数据研究有限公司 一种应用程序升级方法、系统、设备及计算机存储介质
CN111625256B (zh) * 2020-05-15 2024-02-09 广东浪潮大数据研究有限公司 一种应用程序升级方法、系统、设备及计算机存储介质
WO2021248337A1 (zh) * 2020-06-09 2021-12-16 深圳市欢太科技有限公司 一种应用安装方法、装置、设备及计算机可读存储介质
CN112486555A (zh) * 2020-12-07 2021-03-12 浙江诺诺网络科技有限公司 软件增量升级方法、装置、设备及计算机可读存储介质
CN112486520A (zh) * 2020-12-07 2021-03-12 深圳市欢太科技有限公司 应用程序升级方法及其装置、移动终端和服务器
CN112947976A (zh) * 2021-04-26 2021-06-11 统信软件技术有限公司 一种操作系统升级方法、计算设备及存储介质
CN112947976B (zh) * 2021-04-26 2024-06-04 统信软件技术有限公司 一种操作系统升级方法、计算设备及存储介质
CN115495716A (zh) * 2022-08-15 2022-12-20 荣耀终端有限公司 一种本地鉴权方法和电子设备
CN115495716B (zh) * 2022-08-15 2023-10-10 荣耀终端有限公司 一种本地鉴权方法和电子设备
CN117762430A (zh) * 2024-02-22 2024-03-26 腾讯科技(深圳)有限公司 基于应用程序的处理方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
CN107506221B (zh) 2020-08-04

Similar Documents

Publication Publication Date Title
CN107506221A (zh) 应用程序升级方法、装置及设备
US20240048631A1 (en) Demand resources
US9880824B2 (en) On demand resources
CN105373396B (zh) 插件平台中的插件更新加载方法和装置
CN104793946B (zh) 基于云计算平台的应用部署方法和系统
US9727327B1 (en) Software distribution framework
CN105867947B (zh) 预置应用程序升级后的数据处理方法及装置
CN102411506B (zh) Java系统业务单元插件式管理系统及业务功能动态变更方法
US7644406B2 (en) Update system capable of updating software across multiple FLASH chips
US8245185B2 (en) System and method for software delivery
CN109391664A (zh) 用于多集群容器部署的系统和方法
CN110221860A (zh) 一种配置文件处理方法、装置、终端及介质
CN107797818A (zh) 应用程序升级方法及装置
KR20130012929A (ko) 데이터 패키지의 효율적인 다운로드 방법 및 시스템
CN106293782A (zh) 一种系统升级方法及终端
CN110209420A (zh) 一种更新引导加载程序的方法及装置
CN109857432A (zh) 一种游戏应用的热更新方法和装置
CN103514004A (zh) Windows系统下的系统环境管理方法及装置
CN107667343B (zh) 用于加载按需加载资源的系统和方法
CN110045998A (zh) 加载动态库的方法及装置
CN113867768A (zh) 操作系统处理方法、装置、电子设备及存储介质
CN106201595A (zh) 一种应用程序的清理控制方法及装置
CN109190367A (zh) 利用沙箱运行应用程序安装包的方法及装置
CN104239112A (zh) 一种设备驱动程序安装方法及装置
CN116775087A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1247691

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20201019

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20201019

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Patentee before: Alibaba Group Holding Ltd.

TR01 Transfer of patent right