CN106528086A - 一种安卓软件升级的方法及系统 - Google Patents

一种安卓软件升级的方法及系统 Download PDF

Info

Publication number
CN106528086A
CN106528086A CN201610886077.2A CN201610886077A CN106528086A CN 106528086 A CN106528086 A CN 106528086A CN 201610886077 A CN201610886077 A CN 201610886077A CN 106528086 A CN106528086 A CN 106528086A
Authority
CN
China
Prior art keywords
version software
client
configuration file
difference
difference aku
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.)
Pending
Application number
CN201610886077.2A
Other languages
English (en)
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.)
Guangzhou Shiyuan Electronics Thecnology Co Ltd
Original Assignee
Guangzhou Shiyuan Electronics Thecnology 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 Guangzhou Shiyuan Electronics Thecnology Co Ltd filed Critical Guangzhou Shiyuan Electronics Thecnology Co Ltd
Priority to CN201610886077.2A priority Critical patent/CN106528086A/zh
Publication of CN106528086A publication Critical patent/CN106528086A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • 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/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

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

Abstract

本发明公开了一种安卓软件升级的方法及系统,所述方法包括:服务端根据新版本软件包和旧版本软件包的MANIFEST.MF文件中文件条目的SHA1哈希值的差异生成差分升级包及配置文件,所述配置文件为所述差分升级包的索引信息;客户端从所述服务端下载所述差分升级包和配置文件,根据所述配置文件对所述差分升级包和所述客户端已安装的所述旧版本软件包进行组合,以生成所述新版本软件包;所述客户端安装所述新版本软件包。本发明提出的安卓软件升级的方法,无需对软件包整体本身的MD5值进行强校验,即使软件包在升级的过程中存在有解压和再压缩的过程,也不会导致校验失败引起的升级失败。

Description

一种安卓软件升级的方法及系统
技术领域
本发明涉及互联网技术领域,特别是涉及一种安卓软件升级的方法及系统。
背景技术
随着互联网行业的不断发展,终端设备,尤其是移动终端设备的应用程序越来越多,版本不断更新,用户需要不断进行相应的应用软件升级才能保证软件的安全性和稳定性。现有技术中,主要采用增量升级的方式实现客户端上应用程序的升级。
在安卓(Android)系统中,增量升级的原理是通过将用户客户端已安装的应用程序的APK(Android Package Kit,安卓系统的安装包)与当前服务端该应用程序最新版本的APK做差分,得到差分包,即更新的部分。然后客户端通过网络仅请求下载该差分包,并将该差分包与当前客户端已安装的APK进行组合,即得到一个新版本的APK。一般来说,差分包较服务端上最新APK的大小要小很多,而差分升级,客户端仅下载差分包即可,而不需要将服务端上整个最新APK下载下来,因此可以很大程度上减少用户流量的损失。
但现有技术中,差分包的获取及差分包与APK的合并,主要采用基于bsdiff/bspatch的二进制差分合并解决方案实现,而该方案必须依赖于APK整体本身的MD5(Message Digest Algorithm5,摘要算法第5版)完全匹配,即需要对软件包整体进行MD5值强校验,如果安装后或者升级期间APK因某些原因存在有解压和再压缩的过程,虽然此时APK中的实际内容没有变化,但是重新压缩后的APK整体的MD5值却发生变化,这就会导致了bspatch在合并的过程中失败,最终导致升级失败。此外,对于文件改变比较小的升级,比如更换logo,采用上述技术方案,生成的二进制差分升级包体积还是会比较大,影响用户体验,且会增加服务器的负荷。
发明内容
本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明的一个目的在于提出一种无需对软件包整体进行MD5强校验的安卓软件升级的方法。
根据本发明实施例的安卓软件升级的方法,包括:
服务端根据新版本软件包和旧版本软件包的MANIFEST.MF文件中文件条目的SHA1哈希值的差异生成差分升级包及配置文件,所述配置文件为所述差分升级包的索引信息;
客户端从所述服务端下载所述差分升级包和配置文件,根据所述配置文件对所述差分升级包和所述客户端已安装的所述旧版本软件包进行组合,以生成所述新版本软件包;
所述客户端安装所述新版本软件包。
根据本发明实施例的安卓软件升级的方法,由于差分升级包的差异推送来自旧版本软件包和新版本软件包中MANIFEST.MF文件中文件条目的SHA1哈希值的不同,即升级过程中是对APK的MF文件中文件条目的SHA1哈希值进行验证,无需对软件包整体本身的MD5值进行强校验,验证更精准,即使APK在升级的过程中存在有解压和再压缩的过程,此时APK中的实际内容没有变化,APK的MF文件中文件条目的SHA1哈希值也未发生变化,因此不会导致差分升级包与旧版本软件包的合并失败,且从文件角度生成差分升级包,对于文件改变比较小的升级,比如更换logo,生成的差分升级包的体积会更小,提升用户体验,减少服务器的负荷。可以理解的,还可以根据更新内容的大小进行选择性差分升级,如对改变较大的文件进行传统的二进制差分得到二进制差分包,而对于改动较小的文件,进行本发明提出的基于文件角度生成差分升级包,从而最大限度的减小差分升级包的大小。
另外,根据本发明上述实施例的安卓软件升级的方法,还可以具有如下附加的技术特征:
进一步地,在本发明的一个实施例中,所述客户端从所述服务端下载所述差分升级包和配置文件,根据所述配置文件对所述差分升级包和所述客户端已安装的所述旧版本软件包进行组合,以生成所述新版本软件包的步骤包括:
所述客户端从所述服务端下载所述差分升级包和配置文件,同时缓存所述客户端中已安装的所述旧版本软件包,获得所述旧版本软件包的副本;
所述客户端根据所述配置文件对所述差分升级包和所述旧版本软件包的副本进行组合,以生成所述新版本软件包。
进一步地,在本发明的一个实施例中,所述配置文件包括要删除的文件信息、要增加的文件信息和要更新的文件信息,
所述客户端根据所述配置文件对所述差分升级包和所述旧版本软件包的副本进行组合的步骤包括:
所述客户端根据所述要删除的文件信息,删除所述旧版本软件包的副本中需要删除的文件条目;
所述客户端根据所述要增加的文件信息从所述差分升级包获取要增加的文件条目,并将所述要增加的文件条目压缩进所述旧版本软件包的副本中;
所述客户端根据所述要更新的文件信息从所述差分升级包获取要更新的文件条目,并将所述要更新的文件条目与所述旧版本软件包的副本中的对应条目进行合并。
进一步地,在本发明的一个实施例中,所述配置文件还包括所述新版本软件包的META-INF签名信息,所述客户端根据所述配置文件对所述差分升级包和所述旧版本软件包的副本进行组合的步骤还包括:
所述客户端根据所述新版本软件包的META-INF签名信息,从所述差分升级包中获取所述新版本软件包的META-INF目录下的签名相关文件;
所述客户端将所述新版本软件包的META-INF目录下的签名相关文件压缩进所述旧版本软件包的副本中。
进一步地,在本发明的一个实施例中,所述客户端从所述服务端下载所述差分升级包和配置文件的步骤包括:
所述客户端启动已安装的所述旧版本软件包,并向所述服务端发起检测更新的请求,所述请求携带所述旧版本软件包的描述信息;
所述服务端检测是否存在差分升级包和配置文件;
若所述服务端存在差分升级包和配置文件,则所述客户端从所述服务端下载所述差分升级包和配置文件。
本发明的另一个目的在于提出一种无需对软件包整体进行MD5强校验的安卓软件升级的系统。
根据本发明实施例的安卓软件升级的系统,包括服务端和客户端,
所述服务端包括:
补丁生成模块,用于根据新版本软件包和旧版本软件包的MANIFEST.MF文件中文件条目的SHA1哈希值的差异生成差分升级包及配置文件,所述配置文件为所述差分升级包的索引信息;
所述客户端包括:
下载模块,用于从所述服务端下载所述差分升级包和配置文件;
组合模块,用于根据所述配置文件对所述差分升级包和所述客户端已安装的所述旧版本软件包进行组合,以生成所述新版本软件包;
安装模块,用于安装所述新版本软件包。
另外,根据本发明上述实施例的安卓软件升级的系统,还可以具有如下附加的技术特征:
进一步地,在本发明的一个实施例中,所述客户端还包括:
缓存模块,用于缓存所述客户端中已安装的所述旧版本软件包;
所述组合模块还用于根据所述配置文件对所述差分升级包和所述缓存模块缓存的所述旧版本软件包的副本进行组合,以生成所述新版本软件包。
进一步地,在本发明的一个实施例中,所述配置文件包括要删除的文件信息、要增加的文件信息和要更新的文件信息,
所述客户端还包括删除子模块、增加子模块和更新子模块;
所述删除子模块用于根据所述要删除的文件信息,删除所述缓存模块缓存的所述旧版本软件包的副本中需要删除的文件条目;
所述增加子模块用于根据所述要增加的文件信息从所述差分升级包获取要增加的文件条目,并将所述要增加的文件条目压缩进所述缓存模块缓存的所述旧版本软件包的副本中;
所述更新子模块用于根据所述要更新的文件信息从将所述差分升级包获取要更新的文件条目,并将所述要更新的文件条目与所述缓存模块缓存的所述旧版本软件包的副本中的对应条目进行合并。
进一步地,在本发明的一个实施例中,所述配置文件还包括所述新版本软件包的META-INF签名信息,所述客户端还包括签名信息压缩子模块,所述签名信息压缩子模块用于根据所述新版本软件包的META-INF签名信息,从所述差分升级包获取所述新版本软件包的META-INF目录下的签名相关文件,并将所述新版本软件包的META-INF目录下的签名相关文件压缩进所述缓存模块缓存的所述旧版本软件包的副本中。
进一步地,在本发明的一个实施例中,所述客户端还包括启动模块和更新请求模块,所述启动模块用于启动所述客户端已安装的所述旧版本软件包,所述更新请求模块用于向所述服务端发起检测更新的请求,所述请求携带所述旧版本软件包的描述信息;
所述服务端还包括检测模块,所述检测模块用于检测所述服务端是否存在差分升级包和配置文件,所述下载模块用于在所述检测模块检测到所述服务端存在差分升级包和配置文件时,对所述差分升级包和配置文件进行下载。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1是根据本发明一实施例的安卓软件升级的方法的流程图;
图2是根据本发明另一实施例的安卓软件升级的方法的流程图;
图3是根据本发明另一实施例的安卓软件升级的系统的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明以安卓系统的终端设备作为实施例的环境对本发明进行详细描述,请参阅图1,本发明一实施例提出的安卓软件升级的方法,至少包括以下步骤:
S101,服务端根据新版本软件包和旧版本软件包的MANIFEST.MF文件中文件条目的SHA1哈希值的差异生成差分升级包及配置文件,所述配置文件为所述差分升级包的索引信息;
其中,该服务端为服务器,具体可以为云端服务器。软件包(即APK文件)中的MANIFEST.MF文件(简称MF文件),具体为META-INF(Meta-Information,元信息)目录下的MANIFEST.MF文件,MF文件代表了整个APK的文件指纹,其和加密数据一道构建了APK的完整签名,以保证软件的有效性。服务端根据旧版本软件包和新版本软件包的MF文件中列举出软件包中文件条目的SHA1(具体为base64-encoded SHA1)哈希值的差异生成差分升级包,具体可以对比新旧软件包的每个文件条目,从而实现从文件角度产生差分升级包。由于差分升级包的差异信息来自旧版本软件包和新版本软件包的MF文件中文件条目的SHA1哈希值的不同,即升级过程中是对APK的MF文件中文件条目的SHA1哈希值进行验证,无需对软件包整体本身的MD5值进行强校验。即使APK在升级的过程中存在有解压和再压缩的过程,此时APK中的实际内容没有变化,因此APK的MF文件中文件条目的SHA1哈希值也未发生变化,在后续的合并过程中,也不会导致合并失败。此外,该配置文件与所述差分升级包对应,具体表现为所述配置文件是所述差分升级包的索引信息,用于提示客户端进行相应的升级,具体可以为update.xml文件。该配置文件和该差分升级包以patch的文件形式存储在服务端中,即该patch中包含该差分升级包和该配置文件。
S102,客户端从所述服务端下载所述差分升级包和配置文件,根据所述配置文件对所述差分升级包和所述客户端已安装的所述旧版本软件包进行组合,以生成所述新版本软件包;
具体实现中,所述客户端可以为智能手机、智能电视、平板电脑或者智能可穿戴设备等,该客户端可以通过启动移动数据(如3G或4G)或者无线网络通信技术(如wifi)连接到所述服务端,且该客户端已经预先安装了旧版本软件包。客户端从所述服务端下载所述patch,再对该patch进行解压,以获得所述差分升级包和配置文件。客户端可以采用合成工具,如bspatch或KDiff3,对所述差分升级包与旧版本软件包中进行合并,从而得到所述新版本软件包。
S103,所述客户端安装所述新版本软件包。
具体实现中,通过调用客户端的系统API,进行更新覆盖安装。
此外,可以理解的,当一个软件有多个旧版本和一个新版本时,例如,一个软件具有A1,A2,A3共三个版本时,其中A3为最新版本,A1和A2相对于A3均为旧版本。服务器会对A1与A3之间的MF文件中文件条目的SHA1哈希值进行对比,得到A1与A3之间的差异生成差分升级包及配置文件,同样的方法得到A2和A3之间的差分升级包及配置文件,而客户端已经安装了特定的旧版本软件包,例如,客户端已经安装了A2版本的软件,此时,客户端可以根据A2版本的版本号或其它能够证明版本号的软件信息去服务器下载相应的差分升级包及配置文件,即下载A2和A3之间的差分升级包及配置文件。
根据本发明实施例的安卓软件升级的方法,由于差分升级包的差异信息来自旧版本软件包和新版本软件包的MF文件中文件条目的SHA1哈希值的不同,即升级过程中是对APK的MF文件中文件条目的SHA1哈希值进行验证,验证更精准,即使APK在升级的过程中存在有解压和再压缩的过程,此时APK中的实际内容没有变化,APK的MF文件中文件条目的SHA1哈希值也未发生变化,因此不会导致差分升级包与旧版本软件包的合并失败,且从文件角度生成差分升级包,对于文件改变比较小的升级,比如更换logo,生成的差分升级包的体积会更小,提升用户体验,减少服务器的负荷。可以理解的,还可以根据更新内容的大小进行选择性差分升级,如对改变较大的文件进行传统的二进制差分得到二进制差分包,而对于改动较小的文件,进行本发明提出的基于文件角度生成差分升级包,从而最大限度的减小差分升级包的大小。
请参阅图2,本发明另一实施例提出的安卓软件升级的方法,至少包括以下步骤:
S201,服务端根据新版本软件包和旧版本软件包的MANIFEST.MF文件中文件条目的SHA1哈希值的差异生成差分升级包及配置文件,所述配置文件为所述差分升级包的索引信息;
其中,其中,该服务端为服务器,具体可以为云端服务器。软件包(即APK文件)中的MANIFEST.MF文件(简称MF文件),具体为META-INF(Meta-Information,元信息)目录下的MANIFEST.MF文件,MF文件代表了整个APK的文件指纹,其和加密数据一道构建了APK的完整签名,以保证软件的有效性。服务端根据旧版本软件包和新版本软件包的MF文件中列举出软件包中文件条目的SHA1(具体为base64-encoded SHA1)哈希值的差异生成差分升级包,具体可以对比新旧软件包的每个文件条目,从而实现从文件角度产生差分升级包。由于差分升级包的差异信息来自旧版本软件包和新版本软件包的MF文件中文件条目的SHA1哈希值的不同,即升级过程中是对APK的MF文件中文件条目的SHA1哈希值进行验证,而非软件包整体的MD5验证。即使APK在升级的过程中存在有解压和再压缩的过程,此时APK中的实际内容没有变化,因此APK的MF文件中文件条目的SHA1哈希值也未发生变化,在后续的合并过程中,也不会导致合并失败。此外,该配置文件与所述差分升级包对应,具体表现为所述配置文件是所述差分升级包的索引信息,用于提示客户端进行相应的升级,具体可以为update.xml文件,所述配置文件包括删除的文件信息、要增加的文件信息、要更新的文件信息和所述新版本软件包的META-INF签名信息。该配置文件和该差分升级包以patch的文件形式存储在服务端中,即该patch中包含该差分升级包和该配置文件。
S202,所述客户端启动已安装的所述旧版本软件包,并向所述服务端发起检测更新的请求,所述请求携带所述旧版本软件包的描述信息;
其中,所述客户端可以为智能手机、智能电视、平板电脑或者智能可穿戴设备等,该客户端可以通过启动移动数据(如3G或4G)或者无线网络通信技术(如wifi)连接到所述服务端,且该客户端已经预先安装了旧版本软件包。所述客户端并向服务端发起检测更新的请求指该旧版本软件包通过网络向所述服务端发起软件更新请求,所述请求携带所述旧版本软件包的描述信息,包括产品Model ID、APK包名、APK版本号等。
S203,所述服务端检测是否存在差分升级包和配置文件;
S204,若所述服务端存在差分升级包和配置文件,则所述客户端从所述服务端下载所述差分升级包和配置文件,同时缓存所述客户端中已安装的所述旧版本软件包,获得所述旧版本软件包的副本;
其中,所述客户端从所述服务端下载所述patch,再对该patch进行解压,以获得所述差分升级包和配置文件。客户端缓存所述客户端中已安装的旧版本软件包是指客户端在缓存目录中缓存当前已安装的APK,以获得所述旧版本软件包的副本。此外,可以理解的,若服务端不存在差分升级包及配置文件,则表明软件包无更新,不再进行后续流程。
S205,所述客户端根据所述配置文件对所述差分升级包和所述旧版本软件包的副本进行组合,以生成所述新版本软件包;
其中,上述步骤具体包括:
所述客户端根据所述要删除的文件信息,删除所述旧版本软件包的副本中需要删除的文件条目;
所述客户端根据所述要增加的文件信息从所述差分升级包获取要增加的文件条目,并将所述要增加的文件条目压缩进所述旧版本软件包的副本中;
所述客户端根据所述要更新的文件信息从所述差分升级包获取要更新的文件条目,并将所述要更新的文件条目与所述旧版本软件包的副本中的对应条目进行合并;
其中,客户端可以采用合成工具,如bspatch或KDiff3,对所述要更新的文件条目与所述旧版本软件包的副本中的对应条目进行合并。
所述客户端根据所述新版本软件包的META-INF签名信息,从所述差分升级包中获取所述新版本软件包的META-INF目录下的签名相关文件,并将所述新版本软件包的META-INF目录下的签名相关文件压缩进所述旧版本软件包的副本中;
其中,META-INF签名信息为最新版本的软件包的META-INF签名信息,在升级过程中,只需将该最新版本的软件包的META-INF签名信息存入旧版本软件包中即可,从而简化升级过程。
S206,所述客户端安装所述新版本软件包;
具体实现中,通过调用客户端的系统API,进行更新覆盖安装。
本实施例提出的安卓软件升级的方法在上一实施例的基础上,对升级文件进行细化,对需要删除的内容,根据配置文件在缓存的旧版本软件包中之间进行删除,对需要增加的内容,根据配置文件从差分升级包提取后之间加入在缓存的旧版本软件包中,对于需要更新的内容,除了采用采用bspatch工具合并外,还可以通过设定更新内容预设值,在需要更新的内容小于该更新内容预设值时,之间通过替换的方式进行更新,从而进一步减少差分升级包的体积,简化升级过程。值得注意的是,以上所有升级内容都是基于本发明提出的根据旧版本软件包和新版本软件包中MF文件中文件条目的SHA1哈希值的不同生产差分升级包,即从文件角度生成差分升级包。
可以理解的,在实际应用中,本发明上述实施例提供的方法还可以作为现有技术(二进制差分升级)的一个补充,在APK整体的MD5值未发生变化时,可以选择只采用现有技术进行升级,在APK整体的MD5值发生变化时,采用本发明上述实施例提供的方法。
此外,本领域技术人员可以理解,本发明所提供的上述实施例提供的安卓软件升级的方法还可以结合OTA(Over-the-Air Technology,即空中下载技术),对/system/app以及预装/data/app下的APK进行差分升级。
请参阅图3,基于同一发明构思,本发明一实施例提出的安卓软件升级的系统,包括服务端和客户端,
其中,所述服务端包括:
补丁生成模块,用于根据新版本软件包和旧版本软件包的MANIFEST.MF文件中文件条目的SHA1哈希值的差异生成差分升级包及配置文件,所述配置文件为所述差分升级包的索引信息;
所述客户端包括:
下载模块,用于从所述服务端下载所述差分升级包和配置文件,
组合模块,用于根据所述配置文件对所述差分升级包和所述客户端已安装的所述旧版本软件包进行组合,以生成所述新版本软件包;
安装模块,用于安装所述新版本软件包。
本实施例中,所述客户端还包括:
缓存模块,用于缓存所述客户端中已安装的所述旧版本软件包,获得所述旧版本软件包的副本;
所述组合模块还用于根据所述配置文件对所述差分升级包和所述缓存模块缓存的所述旧版本软件包的副本进行组合,以生成所述新版本软件包。
本实施例中,所述配置文件包括要删除的文件信息、要增加的文件信息和要更新的文件信息,
所述组合模块包括删除子模块、增加子模块和更新子模块;
所述删除子模块用于根据所述要删除的文件信息,删除所述缓存模块缓存的所述旧版本软件包的副本中需要删除的文件条目;
所述增加子模块用于根据所述要增加的文件信息从所述差分升级包获取要增加的文件条目,并将所述要增加的文件条目压缩进所述缓存模块缓存的所述旧版本软件包的副本中;
所述更新子模块用于根据所述要更新的文件信息从将所述差分升级包获取要更新的文件条目,并将所述要更新的文件条目与所述缓存模块缓存的所述旧版本软件包的副本中的对应条目进行合并。
本实施例中,所述配置文件还包括所述新版本软件包的META-INF签名信息,所述组合模块还包括签名信息压缩子模块,所述签名信息压缩子模块用于根据所述新版本软件包的META-INF签名信息,从所述差分升级包获取所述新版本软件包的META-INF目录下的签名相关文件,并将所述新版本软件包的META-INF目录下的签名相关文件压缩进所述缓存模块缓存的所述旧版本软件包的副本中。
本实施例中,所述客户端还包括启动模块和更新请求模块,所述启动模块用于启动所述客户端已安装的所述旧版本软件包,所述更新请求模块用于向所述服务端发起检测更新的请求,所述请求携带所述旧版本软件包的描述信息;
所述服务端还包括检测模块,所述检测模块用于检测所述服务端是否存在差分升级包和配置文件,所述下载模块用于在所述检测模块检测到所述服务端存在差分升级包和配置文件时,对所述差分升级包和配置文件进行下载。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。
计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。

Claims (10)

1.一种安卓软件升级的方法,其特征在于,包括:
服务端根据新版本软件包和旧版本软件包的MANIFEST.MF文件中文件条目的SHA1哈希值的差异生成差分升级包及配置文件,所述配置文件为所述差分升级包的索引信息;
客户端从所述服务端下载所述差分升级包和配置文件,根据所述配置文件对所述差分升级包和所述客户端已安装的所述旧版本软件包进行组合,以生成所述新版本软件包;
所述客户端安装所述新版本软件包。
2.根据权利要求1所述的安卓软件升级的方法,其特征在于,所述客户端从所述服务端下载所述差分升级包和配置文件,根据所述配置文件对所述差分升级包和所述客户端已安装的所述旧版本软件包进行组合,以生成所述新版本软件包的步骤包括:
所述客户端从所述服务端下载所述差分升级包和配置文件,同时缓存所述客户端中已安装的所述旧版本软件包,获得所述旧版本软件包的副本;
所述客户端根据所述配置文件对所述差分升级包和所述旧版本软件包的副本进行组合,以生成所述新版本软件包。
3.根据权利要求2所述的安卓软件升级的方法,其特征在于,所述配置文件包括要删除的文件信息、要增加的文件信息和要更新的文件信息,
所述客户端根据所述配置文件对所述差分升级包和所述旧版本软件包的副本进行组合的步骤包括:
所述客户端根据所述要删除的文件信息,删除所述旧版本软件包的副本中需要删除的文件条目;
所述客户端根据所述要增加的文件信息从所述差分升级包获取要增加的文件条目,并将所述要增加的文件条目压缩进所述旧版本软件包的副本中;
所述客户端根据所述要更新的文件信息从所述差分升级包获取要更新的文件条目,并将所述要更新的文件条目与所述旧版本软件包的副本中的对应条目进行合并。
4.根据权利要求3所述的安卓软件升级的方法,其特征在于,所述配置文件还包括所述新版本软件包的META-INF签名信息,所述客户端根据所述配置文件对所述差分升级包和所述旧版本软件包的副本进行组合的步骤还包括:
所述客户端根据所述新版本软件包的META-INF签名信息,从所述差分升级包中获取所述新版本软件包的META-INF目录下的签名相关文件;
所述客户端将所述新版本软件包的META-INF目录下的签名相关文件压缩进所述旧版本软件包的副本中。
5.根据权利要求1所述的安卓软件升级的方法,其特征在于,所述客户端从所述服务端下载所述差分升级包和配置文件的步骤包括:
所述客户端启动已安装的所述旧版本软件包,并向所述服务端发起检测更新的请求,所述请求携带所述旧版本软件包的描述信息;
所述服务端检测是否存在差分升级包和配置文件;
若所述服务端存在差分升级包和配置文件,则所述客户端从所述服务端下载所述差分升级包和配置文件。
6.一种安卓软件升级的系统,包括服务端和客户端,其特征在于,
所述服务端包括:
补丁生成模块,用于根据新版本软件包和旧版本软件包的MANIFEST.MF文件中文件条目的SHA1哈希值的差异生成差分升级包及配置文件,所述配置文件为所述差分升级包的索引信息;
所述客户端包括:
下载模块,用于从所述服务端下载所述差分升级包和配置文件;
组合模块,用于根据所述配置文件对所述差分升级包和所述客户端已安装的所述旧版本软件包进行组合,以生成所述新版本软件包;
安装模块,用于安装所述新版本软件包。
7.根据权利要求6所述的安卓软件升级的系统,其特征在于,
所述客户端还包括:
缓存模块,用于缓存所述客户端中已安装的所述旧版本软件包,获得所述旧版本软件包的副本;
所述组合模块还用于根据所述配置文件对所述差分升级包和所述缓存模块缓存的所述旧版本软件包的副本进行组合,以生成所述新版本软件包。
8.根据权利要求7所述的安卓软件升级的系统,其特征在于,所述配置文件包括要删除的文件信息、要增加的文件信息和要更新的文件信息,
所述组合模块包括删除子模块、增加子模块和更新子模块;
所述删除子模块用于根据所述要删除的文件信息,删除所述缓存模块缓存的所述旧版本软件包的副本中需要删除的文件条目;
所述增加子模块用于根据所述要增加的文件信息从所述差分升级包获取要增加的文件条目,并将所述要增加的文件条目压缩进所述缓存模块缓存的所述旧版本软件包的副本中;
所述更新子模块用于根据所述要更新的文件信息从将所述差分升级包获取要更新的文件条目,并将所述要更新的文件条目与所述缓存模块缓存的所述旧版本软件包的副本中的对应条目进行合并。
9.根据权利要求8所述的安卓软件升级的系统,其特征在于,所述配置文件还包括所述新版本软件包的META-INF签名信息,所述组合模块还包括签名信息压缩子模块,所述签名信息压缩子模块用于根据所述新版本软件包的META-INF签名信息,从所述差分升级包获取所述新版本软件包的META-INF目录下的签名相关文件,并将所述新版本软件包的META-INF目录下的签名相关文件压缩进所述缓存模块缓存的所述旧版本软件包的副本中。
10.根据权利要求6所述的安卓软件升级的系统,其特征在于,
所述客户端还包括启动模块和更新请求模块,所述启动模块用于启动所述客户端已安装的所述旧版本软件包,所述更新请求模块用于向所述服务端发起检测更新的请求,所述请求携带所述旧版本软件包的描述信息;
所述服务端还包括检测模块,所述检测模块用于检测所述服务端是否存在差分升级包和配置文件,所述下载模块用于在所述检测模块检测到所述服务端存在差分升级包和配置文件时,对所述差分升级包和配置文件进行下载。
CN201610886077.2A 2016-10-10 2016-10-10 一种安卓软件升级的方法及系统 Pending CN106528086A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610886077.2A CN106528086A (zh) 2016-10-10 2016-10-10 一种安卓软件升级的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610886077.2A CN106528086A (zh) 2016-10-10 2016-10-10 一种安卓软件升级的方法及系统

Publications (1)

Publication Number Publication Date
CN106528086A true CN106528086A (zh) 2017-03-22

Family

ID=58331661

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610886077.2A Pending CN106528086A (zh) 2016-10-10 2016-10-10 一种安卓软件升级的方法及系统

Country Status (1)

Country Link
CN (1) CN106528086A (zh)

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107256161A (zh) * 2017-06-13 2017-10-17 广发证券股份有限公司 基于electron技术的客户端升级方法
CN108509215A (zh) * 2018-03-22 2018-09-07 广州视源电子科技股份有限公司 一种系统软件的更换方法、装置、终端设备及存储介质
CN108595186A (zh) * 2018-03-27 2018-09-28 天津麒麟信息技术有限公司 一种飞腾平台上基于完全函数的多版本软件管理方法
CN109189459A (zh) * 2018-11-16 2019-01-11 北京微播视界科技有限公司 应用程序更新方法、装置、电子设备、服务器及存储介质
CN109558151A (zh) * 2018-10-12 2019-04-02 上海金大师网络科技有限公司 软件更新方法和系统
CN110018994A (zh) * 2017-11-02 2019-07-16 华为终端有限公司 更新文件系统的方法、网络设备及计算机可读存储介质
CN110377317A (zh) * 2019-07-25 2019-10-25 新奥(中国)燃气投资有限公司 一种网关设备升级方法及装置
CN110716741A (zh) * 2019-09-26 2020-01-21 杭州安恒信息技术股份有限公司 一种基于脚本的软件产品自动化巡检方法
CN110764812A (zh) * 2019-10-18 2020-02-07 东莞市小精灵教育软件有限公司 一种智能设备、智能穿戴设备及其软件升级的系统和方法
CN110837393A (zh) * 2019-11-14 2020-02-25 北京知道创宇信息技术股份有限公司 一种固件差分升级包的制作方法及装置、可读存储介质
CN111381858A (zh) * 2018-12-29 2020-07-07 深圳Tcl新技术有限公司 一种应用程序升级方法、服务器及终端设备
EP3742240A1 (de) * 2019-05-22 2020-11-25 Siemens Aktiengesellschaft Verfahren und engineering-system zur änderung eines programms einer industriellen automatisierungskomponente
CN112306552A (zh) * 2020-11-01 2021-02-02 国铁吉讯科技有限公司 一种系统软件版本管理方法、装置及存储介质
CN112379910A (zh) * 2020-12-28 2021-02-19 全时云商务服务股份有限公司 一种软件升级方法和装置
CN112612492A (zh) * 2020-12-18 2021-04-06 百望股份有限公司 企业发票软件系统远程升级的方法
CN112612504A (zh) * 2020-11-30 2021-04-06 特力惠信息科技股份有限公司 一种java安装包管理方法
CN112783542A (zh) * 2021-02-04 2021-05-11 华东交通大学 软件升级方法、装置及可读存储介质
CN113127859A (zh) * 2019-12-30 2021-07-16 Oppo广东移动通信有限公司 待检测文件的检测方法、装置、终端及存储介质
CN113238782A (zh) * 2021-06-02 2021-08-10 西安热工研究院有限公司 一种国产睿腾实时数据库文件升级的方法和系统
CN114020299A (zh) * 2021-11-16 2022-02-08 四川长虹电器股份有限公司 一种安卓设备系统文件的更新方法
CN114090048A (zh) * 2021-11-27 2022-02-25 深圳市元征科技股份有限公司 一种软件升级方法及装置
CN114237682A (zh) * 2021-12-20 2022-03-25 珠海格力电器股份有限公司 Ota升级方法、装置、电子设备及存储介质
CN114356363A (zh) * 2021-11-30 2022-04-15 重庆长安汽车股份有限公司 一种软件升级包的在线制作方法及管理系统
CN114780124A (zh) * 2022-04-08 2022-07-22 北京字节跳动网络技术有限公司 差分升级方法、装置、介质及电子设备
CN115102856A (zh) * 2022-05-24 2022-09-23 福建星云电子股份有限公司 一种物联网设备升级方法及系统
CN115617376A (zh) * 2022-11-10 2023-01-17 广州鲁邦通物联网科技股份有限公司 一种基于inotify机制的4G路由器中通讯模组的升级方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103136013A (zh) * 2011-12-01 2013-06-05 腾讯科技(深圳)有限公司 软件升级方法和系统
CN104267978A (zh) * 2014-09-16 2015-01-07 青岛海信移动通信技术股份有限公司 一种生成差分包的方法及装置
CN105138347A (zh) * 2015-07-17 2015-12-09 广东欧珀移动通信有限公司 一种差分升级包生成方法、软件升级方法及相应装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103136013A (zh) * 2011-12-01 2013-06-05 腾讯科技(深圳)有限公司 软件升级方法和系统
CN104267978A (zh) * 2014-09-16 2015-01-07 青岛海信移动通信技术股份有限公司 一种生成差分包的方法及装置
CN105138347A (zh) * 2015-07-17 2015-12-09 广东欧珀移动通信有限公司 一种差分升级包生成方法、软件升级方法及相应装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
七色音阶: "Android客户端代码保护技术—完整性验证", 《HTTPS://BLOG.CSDN.NET/U014651216/ARTICLE/DETAILS/52604836》 *

Cited By (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107256161B (zh) * 2017-06-13 2021-01-12 广发证券股份有限公司 基于electron技术的客户端升级方法
CN107256161A (zh) * 2017-06-13 2017-10-17 广发证券股份有限公司 基于electron技术的客户端升级方法
CN110018994B (zh) * 2017-11-02 2021-02-09 华为终端有限公司 更新文件系统的方法、网络设备及计算机可读存储介质
CN110018994A (zh) * 2017-11-02 2019-07-16 华为终端有限公司 更新文件系统的方法、网络设备及计算机可读存储介质
CN108509215A (zh) * 2018-03-22 2018-09-07 广州视源电子科技股份有限公司 一种系统软件的更换方法、装置、终端设备及存储介质
CN108595186A (zh) * 2018-03-27 2018-09-28 天津麒麟信息技术有限公司 一种飞腾平台上基于完全函数的多版本软件管理方法
CN109558151A (zh) * 2018-10-12 2019-04-02 上海金大师网络科技有限公司 软件更新方法和系统
CN109189459A (zh) * 2018-11-16 2019-01-11 北京微播视界科技有限公司 应用程序更新方法、装置、电子设备、服务器及存储介质
CN111381858A (zh) * 2018-12-29 2020-07-07 深圳Tcl新技术有限公司 一种应用程序升级方法、服务器及终端设备
CN111381858B (zh) * 2018-12-29 2024-02-06 深圳Tcl新技术有限公司 一种应用程序升级方法、服务器及终端设备
US11579594B2 (en) 2019-05-22 2023-02-14 Siemens Aktiengesellschaft Method and engineering system for modifying a program of an industrial automation component
EP3742240A1 (de) * 2019-05-22 2020-11-25 Siemens Aktiengesellschaft Verfahren und engineering-system zur änderung eines programms einer industriellen automatisierungskomponente
WO2020233924A1 (de) * 2019-05-22 2020-11-26 Siemens Aktiengesellschaft Verfahren und engineering-system zur änderung eines programms einer industriellen automatisierungskomponente
CN110377317A (zh) * 2019-07-25 2019-10-25 新奥(中国)燃气投资有限公司 一种网关设备升级方法及装置
CN110716741A (zh) * 2019-09-26 2020-01-21 杭州安恒信息技术股份有限公司 一种基于脚本的软件产品自动化巡检方法
CN110716741B (zh) * 2019-09-26 2023-08-08 杭州安恒信息技术股份有限公司 一种基于脚本的软件产品自动化巡检方法
CN110764812A (zh) * 2019-10-18 2020-02-07 东莞市小精灵教育软件有限公司 一种智能设备、智能穿戴设备及其软件升级的系统和方法
CN110764812B (zh) * 2019-10-18 2023-04-07 东莞市小精灵教育软件有限公司 一种智能设备、智能穿戴设备及其软件升级的系统和方法
CN110837393A (zh) * 2019-11-14 2020-02-25 北京知道创宇信息技术股份有限公司 一种固件差分升级包的制作方法及装置、可读存储介质
CN113127859B (zh) * 2019-12-30 2024-04-12 Oppo广东移动通信有限公司 待检测文件的检测方法、装置、终端及存储介质
CN113127859A (zh) * 2019-12-30 2021-07-16 Oppo广东移动通信有限公司 待检测文件的检测方法、装置、终端及存储介质
CN112306552A (zh) * 2020-11-01 2021-02-02 国铁吉讯科技有限公司 一种系统软件版本管理方法、装置及存储介质
CN112612504A (zh) * 2020-11-30 2021-04-06 特力惠信息科技股份有限公司 一种java安装包管理方法
CN112612504B (zh) * 2020-11-30 2022-06-17 特力惠信息科技股份有限公司 一种java安装包管理方法
CN112612492A (zh) * 2020-12-18 2021-04-06 百望股份有限公司 企业发票软件系统远程升级的方法
CN112379910A (zh) * 2020-12-28 2021-02-19 全时云商务服务股份有限公司 一种软件升级方法和装置
CN112783542A (zh) * 2021-02-04 2021-05-11 华东交通大学 软件升级方法、装置及可读存储介质
CN113238782B (zh) * 2021-06-02 2023-04-07 西安热工研究院有限公司 一种国产睿腾实时数据库文件升级的方法和系统
CN113238782A (zh) * 2021-06-02 2021-08-10 西安热工研究院有限公司 一种国产睿腾实时数据库文件升级的方法和系统
CN114020299A (zh) * 2021-11-16 2022-02-08 四川长虹电器股份有限公司 一种安卓设备系统文件的更新方法
CN114090048A (zh) * 2021-11-27 2022-02-25 深圳市元征科技股份有限公司 一种软件升级方法及装置
CN114356363A (zh) * 2021-11-30 2022-04-15 重庆长安汽车股份有限公司 一种软件升级包的在线制作方法及管理系统
CN114237682A (zh) * 2021-12-20 2022-03-25 珠海格力电器股份有限公司 Ota升级方法、装置、电子设备及存储介质
CN114780124A (zh) * 2022-04-08 2022-07-22 北京字节跳动网络技术有限公司 差分升级方法、装置、介质及电子设备
CN115102856A (zh) * 2022-05-24 2022-09-23 福建星云电子股份有限公司 一种物联网设备升级方法及系统
CN115617376A (zh) * 2022-11-10 2023-01-17 广州鲁邦通物联网科技股份有限公司 一种基于inotify机制的4G路由器中通讯模组的升级方法
CN115617376B (zh) * 2022-11-10 2023-05-09 广州鲁邦通物联网科技股份有限公司 一种基于inotify机制的4G路由器中通讯模组的升级方法

Similar Documents

Publication Publication Date Title
CN106528086A (zh) 一种安卓软件升级的方法及系统
CN104346167B (zh) 生成应用渠道包的方法及装置
CN104052818B (zh) 一种移动终端的版本升级方法及装置
EP2857965B1 (en) Method and device for generating firmware over-the-air upgrade package
CN102402438B (zh) 一种补丁文件的自动合并方法、装置及通信终端
KR101238511B1 (ko) 펌웨어 컴포넌트의 상태 공고 및 펌웨어 컴포넌트의 갱신
CN102081535B (zh) 基于Android的应用程序升级方法、系统及应用开发平台
CN103685495B (zh) 软件的升级方法和系统
CN103942058B (zh) 一种嵌入式电子设备软件升级方法及系统
JP5696018B2 (ja) 対象データの配置方法、対象データ配置システム、および、それらのサーバ装置、クライアント装置、プログラム
CN106201577B (zh) 一种更新Lua文件的方法及装置
CN106201607A (zh) 一种软件版本的升级方法及设备
KR101198583B1 (ko) 메타데이터를 이용한 멀티미디어 미들웨어 장치와 그 관리방법 및 기록 매체
CN105094913B (zh) 系统、基带固件和系统应用升级方法及装置
CN106815370A (zh) 更新资源文件的方法、装置和系统
CN106648712A (zh) 增量更新包的生成方法、装置和服务器
CN106302753A (zh) 客户端程序增量更新的方法及系统
CN102982258A (zh) 一种对移动应用程序进行原版校验的系统
KR101317050B1 (ko) 폴리시 생성 및 변환 시스템, 폴리시 배부 시스템, 그 방법 및 컴퓨터 판독가능 기록 매체
CN105511920B (zh) 一种基于容器的移动终端操作系统升级方法和装置
CN111008034B (zh) 一种补丁生成方法及装置
CN106909404A (zh) 软件更新方法和系统
CN104765816B (zh) 浏览器的升级方法、装置和电子设备
CN103412767A (zh) 一种应用版本的识别与升级方法以及系统
CN107203379A (zh) 一种安卓定制应用app的预置、安装方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20170322

RJ01 Rejection of invention patent application after publication