一种生成差分包的方法及装置制造方法

文档序号:6627086阅读:226来源:国知局
一种生成差分包的方法及装置制造方法
【专利摘要】本发明提供了一种生成差分包的方法及装置,涉及升级领域,用以降低因原始版本的差分资源包发生改变造成的差分包与移动设备使用的原始版本不匹配导致的移动设备差分升级失败的概率。该方法包括:获取原始版本的差分资源包以及目标版本的差分资源包,并利用原始版本的差分资源包和目标版本的差分资源包生成差分包,其中,获取原始版本的差分资源包包括:编译原始版本的源代码生成数据文件和差分资源包;确定数据文件中的备份文件与差分资源包中的差分用文件是否相同;在两者不相同的情况下,重新编译源代码生成更新后的数据文件和更新后的差分资源包;或者,将差分用文件更新至与备份文件相同,得到更新后的差分资源包。
【专利说明】一种生成差分包的方法及装置

【技术领域】
[0001]本发明涉及软件升级领域,尤其涉及一种生成差分包的方法及装置。

【背景技术】
[0002]移动设备供应商在移动设备制作时,除组装移动设备的硬件外,还需要在硬件中安装系统软件及应用软件,移动设备才能出厂并销售。用户在购买了该移动设备后,为了解决用户已使用的移动设备存在的漏洞或者完善移动设备的功能,移动设备供应商需要对系统软件或应用软件进行及时、高效、准确的升级。
[0003]移动设备的软件升级方式通常有T(T-Flash)卡升级(主要用于生产和售后)、全包升级及差分升级。其中,差分包升级以其占用存储空间小,耗费流量少,升级速度快等优点,在软件升级方面被广泛应用。
[0004]现有技术中,进行差分升级的全过程大致分为以下步骤:
[0005]步骤一:生成原始版本。首先根据需求编写源代码,对源代码进行编译,生成原始版本的数据文件和升级所需所有文件,将数据文件转换为img格式生成数据映像文件,并将升级所需的所有文件打包、压缩生成原始版本的差分资源包,其中数据文件包括制作T卡升级包的所有文件,差分资源包中包括与数据文件用相同源代编译得到的文件。
[0006]步骤二:根据数据映像文件打包生成T卡升级包,用T卡升级包将移动设备升级至原始版本;
[0007]步骤三:在源代码的基础上,根据升级的要求,对源代码进行修改并编译,得到目标版本的差分资源包,利用目标版本的差分资源包和原始版本的差分资源包生成差分包,将差分包存储至服务器以供移动设备下载;
[0008]步骤四:移动设备从服务器中获取差分包,根据差分包对移动设备进行升级。
[0009]在生成原始版本的差分资源包的过程中,发明人发现现有技术存在如下问题:数据文件在根据源代码编译后不会改变,而差分资源包中包含的与数据文件对应的文件在打包、压缩等过程中可能导致文件发生改变,例如,文件包含的长度发生变化,或者文件包含的内容发生改变,或者文件的签名改变等。这样会导致数据文件与差分资源包中与数据文件对应的文件不同,也就是说,将数据文件进行格式转换后的数据映像文件与差分资源包中与数据文件对应的文件不同,即数据映像文件与差分资源包不匹配。若继续根据数据映像文件将移动设备升级至原始版本,并根据该差分资源包与目标版本的差分资源包生成差分包,那么移动设备在根据该差分包升级至目标版本的过程中,可能由于差分包与移动设备使用的原始版本不匹配,最终导致移动设备差分升级失败。


【发明内容】

[0010]本发明的实施例提供一种生成差分包的方法及装置,用以降低因原始版本的差分资源包发生改变造成的差分包与移动设备使用的原始版本不匹配导致的移动设备差分升级失败的概率。
[0011]为达到上述目的,本发明的实施例采用如下技术方案:
[0012]第一方面,本发明实施例提供了一种生成差分包的方法,包括:获取原始版本的差分资源包以及目标版本的差分资源包,并利用所述原始版本的差分资源包和所述目标版本的差分资源包生成差分包,其中,所述获取原始版本的差分资源包包括:编译原始版本的源代码生成数据文件和差分资源包;所述差分资源包中包含差分用文件,所述数据文件中包含与所述差分用文件使用相同部分源代码编译得到的备份文件;确定所述备份文件与所述差分用文件是否相同;在所述备份文件与所述差分用文件不相同的情况下,重新编译所述原始版本的源代码生成更新后的数据文件和更新后的差分资源包;或者,将所述差分用文件更新至与所述备份文件相同,得到更新后的差分资源包;所述数据文件用于生成将移动设备升级至所述原始版本所需的数据映像文件;在所述备份文件与所述差分用文件相同的情况下,将所述差分资源包确定为原始版本的差分资源包。
[0013]第二方面,本发明实施例提供了一种生成差分包的装置,包括:获取单元和生成单元,所述获取单元,用于获取原始版本的差分资源包以及目标版本的差分资源包,所述生成单元,用于利用所述原始版本的差分资源包和所述目标版本的差分资源包生成差分包,其中,所述获取单元包括:处理模块和确定模块;所述处理模块,用于编译原始版本的源代码生成数据文件和差分资源包;所述差分资源包中包含差分用文件,所述数据文件中包含与所述差分用文件使用相同部分源代码编译得到的备份文件;所述确定模块,用于确定所述备份文件与所述差分用文件是否相同;所述处理模块,还用于在所述备份文件与所述差分用文件不相同的情况下,重新编译所述原始版本的源代码生成更新后的数据文件和更新后的差分资源包;或者,将所述差分用文件更新至与所述备份文件相同,得到更新后的差分资源包;所述数据文件用于生成将移动设备升级至所述原始版本所需的数据映像文件;所述处理模块,还用于在所述备份文件与所述差分用文件相同的情况下,将所述差分资源包确定为原始版本的差分资源包。
[0014]本发明实施例提供一种生成差分包的方法及装置,编译原始版本的源代码生成数据文件和差分资源包;确定数据文件中的备份文件与差分资源包中的差分用文件是否相同;在两者不相同的情况下,重新编译原始版本的源代码生成更新后的数据文件和更新后的差分资源包;或者,将差分用文件更新至与备份文件相同,得到更新后的差分资源包;数据文件用于生成将所述移动设备升级至所述原始版本所需的数据映像文。
[0015]对于第一种处理方式,在编译源代码后,需要判断差分资源包中制作差分包时需要进行差分的文件(即差分用文件)与数据文件中对应的文件(即备份文件)是否相同,在两者不相同的情况下,对源代码重新编译得到更新后的数据文件和差分资源包,然后根据更新后的数据文件制作的数据映像文件对移动设备进行升级,并根据更新后的差分资源包与目标版本的差分资源包生成差分包,这样,相对于现有技术,能够减小原始版本的数据文件中备份文件与差分资源包中差分用文件不相同的概率,继而根据原始版本的数据文件转换格式后的数据映像文件将移动设备升级至原始版本与根据原始版本的差分资源包和目标版本的差分资源包生成的差分包匹配成功的可能性增大,最终降低了移动设备差分升级失败的概率。
[0016]对于第二种处理方式,在编译源代码后,需要判断差分资源包中制作差分包时需要进行差分的文件(即差分用文件)与数据文件中对应的文件(即备份文件)是否相同,在两者不相同的情况下,将差分用文件更新至与备份文件相同,得到更新后的差分资源包,这样,就能保证差分用文件与备份文件相同,即保证了差分资源包与数据文件匹配,进一步保证了根据原始版本的数据文件转换格式后的数据映像文件将移动设备升级至原始版本与根据原始版本的差分资源包和目标版本的差分资源包生成的差分包匹配,最终降低了移动设备差分升级失败的概率。

【专利附图】

【附图说明】
[0017]为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0018]图1为本发明实施例提供的一种生成差分包的方法的流程示意图;
[0019]图2为本发明实施例提供的一种差分资源包的示意图;
[0020]图3为本发明实施例提供的一种获取原始版本的差分资源包的方法的流程示意图;
[0021]图4为本发明实施例提供的另一种获取原始版本的差分资源包的方法的流程示意图;
[0022]图5为本发明实施例提供的一种根据所述哈希算法分别计算所述备份文件中每一文件的哈希值以及所述差分用文件中每一文件的哈希值的方法的流程示意图;
[0023]图6为本发明实施例提供的另一种获取原始版本的差分资源包的方法的流程示意图;
[0024]图7为本发明实施例提供的一种生成差分包的装置的功能示意图。

【具体实施方式】
[0025]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0026]本发明实施例提供了一种生成差分包的方法,如图1所示,包括:
[0027]101、获取原始版本的差分资源包。
[0028]需要说明的是,开发人员在每发布一个新版本时,获取到的有制作T卡升级包的所有文件(即数据文件),以及与制作差分包相关的所有文件(即差分资源包)。T卡升级包用于对工程对生产线上的移动设备进行升级,或者用于在售后服务中对移动设备进行升级;差分资源包用于用户在使用移动设备的过程中进行差分包升级。
[0029]需要说明的是,差分资源包中包括需要制作差分包所需的所有文件。但是差分资源包中只有一部分文件是用于差分,另一部分文件不需要进行差分。例如图2所示的差分资源包ota_tmp_package.zip,在制作差分包时,通常只有SYSTEM的全部文件(系统的一些应用、库文件、bin之类)、RECOVERY的全部文件(升级程序,相当于电脑的gost)、BOOT的全部文件(内核函数)、PERSIST中的部分文件(一些蓝牙、wifi参数等,可选择升级与否)需要进行差分,其他文件并不需要进行差分。
[0030]具体的,本发明实施例提供的“获取原始版本的差分资源包”具体实现方式,可以如图3所示,包括:
[0031]301、编译原始版本的源代码生成数据文件和差分资源包。
[0032]其中,差分资源包中包含差分用文件,数据文件中包含与差分用文件使用相同部分源代码编译得到的备份文件。数据文件用于生成将移动设备升级至原始版本所需的数据映像文件。
[0033]具体的,开发人员根据需求编写源代码,并编译源代码,编译过程中,得到原始版本的数据文件与制作差分包所需的所有文件,然后将制作差分包所需的所有文件进行打包、签名、压缩得到差分资源包,并将差分资源包拷贝到与数据文件同一个文件夹下,得到差分资源包。并且,还需要将数据文件转换为img格式,即生成数据映像文件,数据映像文件用以制作T卡升级包。
[0034]需要说明的是,差分资源包中包含的差分用文件就是在制作差分包的过程中,需要进行差分计算的部分文件。如图2中的SYSTEM的全部文件、RECOVERY的全部文件、BOOT的全部文件、PERSIST中的部分文件。备份文件就是数据文件中与差分资源包中的差分用文件对应的文件,例如备份文件是数据文件中名为system的全部文件、recovery的全部文件、boot的全部文件、persist中的部分文件;并且备份文件与差分用文件中的文件结构相同。示例性的,数据文件的备份文件中system的文件结构与差分资源包中的SYSTEM的文件结构相同。
[0035]一般情况下,可以用相同命名来表示差分用文件中文件与备份文件中文件的对应关系。
[0036]具体的,在移动设备出工厂还没有安装系统应用之前,利用始版本的数据映像文件制作T卡升级包,工厂用T卡升级包将移动设备升级至原始版本,以使得出厂后的移动设备使用原始版本的系统应用。同时,存储原始版本的差分资源包,将来在原始版本的基础上生成新的版本后,需要将新的版本的差分资源包与原始版本的差分资源包做差分,得到能够将使用原始版本的移动设备升级至新版本的所需的差分包。当然(使用原始版本的移动设备也可以根据新版本的数据文件,将使用原始版本的移送设备升级至新版本,但是一般情况下,用户只能到售后利用此种方式将使用原始版本的移动设备升级至新版本,此种方式不方便用户实现。
[0037]需要说明的是,生成差分资源包的过程中,需要对差分资源包中包含的所有文件进行打包、压缩、签名、拷贝等处理,所以差分资源包中的差分用文件与数据文件中的备份文件可能出现不同。本发明的所有实施例就是为了解决因为差分资源包中的差分用文件与数据文件中的备份文件不同,进而根据数据文件进行格式转换后的数据映像文件升级后的移动设备不能根据原始版本的差分资源包制作出的差分包成功升级的问题。
[0038]302、确定所述备份文件与所述差分用文件是否相同。
[0039]具体的,确定备份文件中的内容与差分用文件中的内容是否相同。即验证备份文件中每一文件与差分用文件中对应的文件是否相同。
[0040]需要说明的是,哈希算法可以将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。理论上一个文件的哈希值是唯一的,任何改动都会引起哈希值的变化。所以本实施例中通过比较备份文件与差分用文件哈希值的方法来确定备份文件与差分用文件是否相同。当然除了本方法之外,还可以用现有技术中确定两文件内容相同的其他方法,例如逐字节比较的方法,本发明对此不做限制。
[0041]需要说明的是,若备份文件与差分用文件相同,则根据数据文件进行格式转换后的数据映像文件升级移动设备后,移动设备使用的原始版本就能够和利用原始版本的差分资源包和目标版本的差分资源包生成的差分包匹配,那么移动设备就能够根据该差分包升级成功。其中,差分包中携带目标版本相对于原始版本中升级的文件在原始版本中的哈希值。移动设备的原始版本和差分包匹配,是指差分包携带的升级的文件在原始版本中的哈希值与移动设备中使用的对应的文件的哈希值相同。
[0042]若备份文件与差分用文件不相同,则需要对差分用文件与备份文件进行处理,以保证在差分用文件与备份文件尽可能相同的情况下,才根据数据文件格式转换后的所述处理模块,还用于在所述备份文件与所述差分用文件相同的情况下,将所述差分资源包确定为原始版本的差分资源包。
[0043]数据映像文件对移动设备进行升级,并根据该差分资源包与目标版本的差分资源包制作差分包。
[0044]需要说明的是,在备份文件与差分用不相同的情况下,可以有步骤303a与303b两种处理方式,执行两者中的任意一种即可。
[0045]303a、在所述备份文件与所述差分用文件不相同的情况下,重新编译所述原始版本的源代码生成更新后的数据文件和更新后的差分资源包。
[0046]具体的,将源代码重新编译,得到新的数据文件和差分资源包,用新的数据文件和新的差分资源包分别替换原来的数据文件和差分资源包。
[0047]需要说明的是,将源程序重新编译一遍,就会生成新的数据文件和差分资源包。新生成的数据文件虽然和原来的数据文件实现的功能相同,但是存储的时间戳、存储的编译时间等会不同,所以新的数据文件与原来的数据文件并不完全相同。移动设备升级时使用的根据数据文件生成的数据映像文件与制作差分包时的原始版本的差分资源包能够匹配,必须保证数据映像文件对应的数据文件与原始版本的差分资源包是对源代码进行同一次编译时得到的。
[0048]303b、在所述备份文件与所述差分用文件不相同的情况下,将所述差分用文件更新至与所述备份文件相同,得到更新后的差分资源包。
[0049]具体的,将数据文件中的备份文件拷贝一份,替换差分资源包中的差分用文件。这样,就能提高数据文件中的备份文件与差分资源包中的差分用文件相同的概率,进而也就提高了根据数据文件进行格式转换后的数据映像文件与原始版本的差分资源包匹配的概率,在将数据映像文件升级至移动设备后,就提高了移动设备使用的原始版本与根据原始版本的差分资源包生成的差分包匹配的概率。
[0050]需要说明的是,在大多数情况下,备份文件与差分用文件不相同只是备份文件中的某几个文件与差分用文件中的某几个文件不同。所以并不需要用全部的备份文件拷贝并替换差分用文件,而只需要将备份文件中与差分用文件中不相同的文件进行拷贝和替换。但是使用此种处理方法之前必须知道差分用文件与备份文件中哪些文件不同。
[0051]304、在所述备份文件与所述差分用文件相同的情况下,将所述差分资源包确定为原始版本的差分资源包。
[0052]需要说明的是,在备份文件与差分用文件相同的情况下,就可以将一次编译得到的差分资源包确定为原始版本的差分资源包,用来在后续过程中制作差分升级所用的差分包。
[0053]102、获取目标版本的差分资源包。
[0054]具体的,开发人员在原始版本对应的源代码的基础上,根据升级的要求,对源代码进行修改并编译,得到目标版本的差分资源包。
[0055]需要说明的是,在获取目标版本的差分资源包时,也可以确定目标版本的数据文件中的备份文件与目标版本的差分资源包中的差分用文件是否相同,以尽可能的保证在以目标版本升级的移动设备在之后的差分包升级时升级成功。
[0056]103、利用所述原始版本的差分资源包和所述目标版本的差分资源包生成差分包。
[0057]具体的,将目标版本的差分资源包中的差分用文件与原始版本的差分用文件对应的文件一一做差分,得到差分包中的部分文件,然后再根据目标版本的差分资源包得到差分包中的剩下部分文件,最终生成从原始版本到目标版本的差分包。
[0058]本发明实施例提供一种生成差分包的方法,编译原始版本的源代码生成数据文件和差分资源包;确定数据文件中的备份文件与差分资源包中的差分用文件是否相同;在两者不相同的情况下,重新编译原始版本的源代码生成更新后的数据文件和更新后的差分资源包;或者,将差分用文件更新至与备份文件相同,得到更新后的差分资源包;数据文件用于生成将所述移动设备升级至所述原始版本所需的数据映像文,获取目标版本的差分资源包,并利用所述原始版本的差分资源包和目标版本的差分资源包生成差分包。对于第一种处理方式,在编译源代码后,需要判断差分资源包中制作差分包时需要进行差分的文件(即差分用文件)与数据文件中对应的文件(即备份文件)是否相同,在两者不相同的情况下,对源代码重新编译得到更新后的数据文件和差分资源包,然后根据更新后的数据文件制作的数据映像文件对移动设备进行升级,并根据更新后的差分资源包与目标版本的差分资源包生成差分包,这样,相对于现有技术,能够减小原始版本的数据文件中备份文件与差分资源包中差分用文件不相同的概率,继而根据原始版本的数据文件转换格式后的数据映像文件将移动设备升级至原始版本与根据原始版本的差分资源包和目标版本的差分资源包生成的差分包匹配成功的可能性增大,最终降低了移动设备差分升级失败的概率。对于第二种处理方式,在编译源代码后,需要判断差分资源包中制作差分包时需要进行差分的文件(即差分用文件)与数据文件中对应的文件(即备份文件)是否相同,在两者不相同的情况下,将差分用文件更新至与备份文件相同,得到更新后的差分资源包,这样,就能保证差分用文件与备份文件相同,即保证了差分资源包与数据文件匹配,进一步保证了根据原始版本的数据文件转换格式后的数据映像文件将移动设备升级至原始版本与根据原始版本的差分资源包和目标版本的差分资源包生成的差分包匹配,最终降低了移动设备差分升级失败的概率。
[0059]进一步的,如图4所示,步骤101的“获取原始版本的差分资源包”还可以通过以下步骤实现:
[0060]401、编译原始版本的源代码生成数据文件和差分资源包。
[0061]具体的,可参考步骤301,在此不再赘述。
[0062]402、确定所述备份文件与所述差分用文件是否相同。
[0063]具体的,步骤402可以根据如下两种实现方式:
[0064]第一种,根据哈希算法分别计算所述备份文件的哈希值以及所述差分用文件的哈希值;在所述备份文件的哈希值与所述差分用文件的哈希值相同的情况下,确定所述备份文件与所述差分用文件相同;在所述备份文件的哈希值与所述差分用文件的哈希值不相同的情况下,确定所述备份文件与所述差分用文件不相同。
[0065]具体的,将备份文件做为哈希算法的输入值,生成一个哈希值;并将差分用文件作为相同哈希算法的输入值,生成另一个哈希值。比较两个哈希值是否完全相同。如果两个哈希值完全相同,则表明备份文件与差分用文件内容相同;如果两个哈希值不相同,则表明备份文件与差分用文件内容不相同。
[0066]第二种,根据所述哈希算法分别计算所述备份文件中每一文件的哈希值以及所述差分用文件中每一文件的哈希值;在所述备份文件中每一文件的哈希值与所述差分用文件中对应的文件的哈希值相同的情况下,确定所述备份文件与所述差分用文件相同;在所述备份文件中每一文件的哈希值与所述差分用文件中对应的文件的哈希值不相同的情况下,确定所述备份文件与所述差分用文件不相同。
[0067]具体的,将备份文件中每一文件分别作为哈希算法的输入,得到备份文件中每一文件的哈希值;将差分用文件中每一文件分别作为哈希算法的输入,得到差分用文件中每一文件的哈希值。依次比较备份文件中一个文件的哈希值与差分用文件中对应文件的哈希值是否相同,在备份文件中每一文件的哈希值与差分用文件中对应的文件的哈希值全都相同的情况下,确定备份文件与差分用文件相同;在备份文件中每一文件的哈希值与差分用文件中对应的文件的哈希值至少有一个不相同的情况下,确定备份文件与差分用文件不相同。
[0068]需要说明的是,不论是第一种方法,还是第二种方法,本发明所有实施例中的哈希算可以是MD (Message Digest Algorithm,信息摘要)5算法、或者可以是MD2算法、或者可以是SHA (Secure Hash Algorithm (安全散列算法),或者还可以是现有技术中的其他哈希算法,本发明对此不做限制。
[0069]进一步的,因为在计算备份文件中所有文件中每一文件的哈希值时,不同文件之间计算哈希值的过程与结果是相互独立的,那么可以将备份文件中不同文件进行哈希计算的过程并行处理。同理,也可以将差分用文件中不同文件进行哈希计算的过程并行处理。
[0070]现有技术中,当前流行一种CUDA (Compute Unified Device Architecture,统一计算设备架构)模型。CUDA的基本思想就是将待处理的任务划分成串行执行部分和并行执行部分别进行处理。在CUDA编程模型中CPU (Central Processing Unit,中央处理器)与图形处理器(Graphic Processing Unit,GPU)协同工作。CPU向图形处理器发送Kernel (内核函数)的调用请求,图形处理器根据Kernel函数的调用请求对并行数据进行并行计算。
[0071]在利用了计算每一文件哈希值时的并行性,以及CUDA编程模型后,进一步的,如图5所示,步骤402的第二种实现方式中的“根据所述哈希算法分别计算所述备份文件中每一文件的哈希值以及所述差分用文件中每一文件的哈希值”具体还可以通过以下步骤实现:
[0072]50 K CPU向图形处理器发送第一 Kernel的调用请求,图形处理器接收第一内核函数Kernel的调用请求。
[0073]其中,第一 Kernel用于指示所述图形处理器根据所述哈希算法对所述备份文件中每一文件进行哈希计算。
[0074]需要说明的是,第一 Kernel调用请求中携带备份文件的存储地址,图形处理器根据该地址进行查找可以得到备份文件。
[0075]502、图形处理器根据所述第一 Kernel调用备份文件,并根据哈希算法对所述系统文件中每一文件进行哈希计算得到所述系统文件中每一文件的哈希值。
[0076]具体的,图形处理器在获取了备份文件之后,利用计算每一文件哈希值时的并行性,根据哈希算法对备份文件中的每一文件进行并行哈希计算,获得每一文件的哈希值。
[0077]503、图形处理器向CPU发送所述第一 Kernel的返回值(CPU从所述图形处理器获取所述第一 Kernel的返回值。
[0078]其中,所述第一 Kernel的返回值包括所述备份文件中每一文件的哈希值。
[0079]具体的,图形处理器将备份文件中每一文件的哈希值作为第一 Kernel的返回值,将备份文件中每一文件的哈希值反馈至CPU。
[0080]504、CPU向图形处理器发送第二 Kernel的调用请求,图形处理器接收第二 Kernel的调用请求。
[0081]其中,所述第二 Kernel用于指示所述图形处理器根据所述哈希算法对所述差分用文件中每一文件进行哈希计算。
[0082]需要说明的是,第二 Kernel调用请求中携带差分用文件的存储地址,图形处理器根据该地址查找得到差分用文件,然后对差分用文件中每一文件进行哈希计算。
[0083]505、图形处理器根据所述第二 Kernel调用差分用文件,并根据所述哈希算法对差分用文件中每一文件进行哈希计算,得到差分用文件中每一文件的哈希值。
[0084]具体的,图形处理器在获取了差分用文件之后,利用计算每一文件哈希值时的并行性,根据哈希算法对差分用文件中的每一文件进行并行哈希计算,获得每一文件的哈希值。
[0085]506、图形处理器向所述CPU发送所述第二 Kernel的返回值,CPU从所述图形处理器获取所述第二 Kernel的返回值。
[0086]其中,所述第二 Kernel的返回值包括所述差分用文件中每一文件的哈希值。
[0087]具体的,图形处理器将差分用文件中每一文件的哈希值作为第二 Kernel的返回值,将每一文件的哈希值反馈至CPU。
[0088]需要说明的是,可以先执行501)503,再执行504)506 ;也可以先执行504) 506,再执行501)503。本实施例是以先执行501) 503,再执行504)506为例。
[0089]403、在所述备份文件与所述差分用文件不相同的情况下,跳转至编译所述原始版本的源代码生成更新后的数据文件和更新后的差分资源包,并继续确定备份文件与差分用文件是否相同,直到两者相同为止。
[0090]需要说明的是,因为重新编译所述原始版本的源代码生成更新后的数据文件和更新后的差分资源包不一定完全相同,所以可以跳转至步骤401,重新编译后,继续确定更新后的数据文件和更新后的差分资源包,直到确定出更新后的数据文件和更新后的差分资源包相同为止,将最后一次获得的差分资源包确定为原始版本的差分资源包,并且在将移动设备升级至原始版本时使用的数据映像文件是通过最后一次获得的数据文件得到的。
[0091]具体的,重新编译所述原始版本的源代码生成更新后的数据文件和更新后的差分资源包的过程,可参考步骤303a (在此不再说明。
[0092]404、在所述备份文件与所述差分用文件相同的情况下,将所述差分资源包确定为原始版本的差分资源包。
[0093]具体的,可参考步骤304,在此不再赘述。
[0094]本实施例提供了一种获取原始版本的差分资源包的方法,编译原始版本的源代码生成数据文件和差分资源包,确定所述备份文件与所述差分用文件是否相同,在备份文件与差分用文件不相同的情况下,跳转至重新编译原始版本的源代码生成更新后的数据文件和更新后的差分资源包,确定备份文件与差分用文件是否相同,直到两者相同为止。本实施例中在差分资源包中制作差分包时需要进行差分的文件(即差分用文件)与数据文件中对应的文件(即备份文件)不相同的情况下,对源代码重新编译得到更新后的数据文件和差分资源包,并且重新确定备份文件与差分用文件是否相同,直到两者相同为止。这样,相对于现有技术,能够保证最终获得的原始版本的数据文件中备份文件与差分资源包中差分用文件相同,继而根据原始版本的数据文件转换格式后的数据映像文件将移动设备升级至原始版本与根据原始版本的差分资源包和目标版本的差分资源包生成的差分包匹配成功的可能性增大,最终降低了移动设备差分升级失败的概率。
[0095]同时,若计算备份文件中每一文件的哈希值和差分用文件中每一文件的哈希值时,利用图形处理器高浮点计算能力和并行执行的特点,将备份文件中每一文件的哈希值和差分用文件中每一文件的哈希值的计算过程分配至图形处理器,从而提高了计算效率。
[0096]在图4基础上,可能存在某些问题的情况下,重新编译的备份文件始终与差分用文件不完全相同,那么进一步的,如图6所示,步骤101的“获取原始版本的差分资源包”还可以通过以下步骤实现:
[0097]601、设定编译次数门限。
[0098]具体的,在对源代码编译之前设定编译次数。当编译次数达到编译次数门限时,就说明重新编译解决不了数据文件与差分资源包不同的问题,那么就直接将差分用文件更新至与所述备份文件相同;当编译次数没有达到编译次数时,依旧对源代码重新编译获取新的备份文件和差分用文件。
[0099]602、编译原始版本的源代码生成数据文件和差分资源包,并将编译次数加一。
[0100]其中,编译次数的初始化值为零。
[0101]具体的,编译原始版本的源代码生成数据文件和差分资源包的过程,可参考步骤301,在此不再赘述。
[0102]603、确定所述备份文件与所述差分用文件是否相同。
[0103]具体的,可参考步骤302,在此不再赘述。
[0104]需要说明的是,在备份文件与差分用文件不相同的情况下,执行步骤605)607 ;在备份文件与差分用文件相同的情况下,执行步骤604。
[0105]604、在所述备份文件与所述差分用文件相同的情况下,将所述差分资源包确定为原始版本的差分资源包。
[0106]具体的,可参考步骤304,在此不再赘述。
[0107]605、在备份文件与所述差分用文件不相同的情况下,确定编译次数是否达到编译次数门限。
[0108]606、在编译次数没有达到编译次数门限的情况下,跳转至步骤602,重新编译所述原始版本的源代码生成更新后的数据文件和更新后的差分资源包。
[0109]607、在编译次数达到编译次数门限的情况下,将差分用文件更新至与所述备份文件相同,得到更新后的差分资源包。
[0110]具体的,将数据文件中的备份文件拷贝一份,替换差分资源包中的差分用文件。这样,就能提高数据文件中的备份文件与差分资源包中的差分用文件相同的概率,进而也就提高了根据数据文件进行格式转换后的数据映像文件与原始版本的差分资源包匹配的概率,在将数据映像文件升级至移动设备后,就提高了移动设备使用的原始版本与根据原始版本的差分资源包生成的差分包匹配的概率。
[0111]需要说明的是,若步骤603确定所述备份文件与所述差分用文件是否相同,是使用步骤402中第二种方式,即确定备份文件中每一文件的哈希值以及所述差分用文件中对应文件的哈希值是否相同的方法,那么此时,步骤607的实现具体可以用拷贝的所述备份文件中的第一文件替换所述差分用文件中与所述第一文件对应的文件。其中,所述第一文件是所述备份文件中文件的哈希值与所述差分用文件中对应的文件的哈希值不同的文件。
[0112]需要说明的是,在确定备份文件中的一个文件与差分用文件中对应的文件的哈希值不相同的情况下,用备份文件中的该文件替换差分用文件中的对应的文件。
[0113]本发明实施例一种获取原始版本的差分资源包的方法,设定编译次数门限;编译原始版本的源代码生成数据文件和差分资源包,并将编译次数加一;确定所述备份文件与所述差分用文件是否相同;在备份文件与所述差分用文件不相同的情况下,确定编译次数是否达到编译次数门限;在编译次数没有达到编译次数门限的情况下,重新编译所述原始版本的源代码生成更新后的数据文件和更新后的差分资源包;在编译次数达到编译次数门限的情况下,将差分用文件更新至与所述备份文件相同,得到更新后的差分资源包。这样,相对于现有技术,能够保证最终获得的原始版本的数据文件中备份文件与差分资源包中差分用文件相同,继而根据原始版本的数据文件转换格式后的数据映像文件将移动设备升级至原始版本与根据原始版本的差分资源包和目标版本的差分资源包生成的差分包匹配成功的可能性增大,最终降低了移动设备差分升级失败的概率。
[0114]如图7所示,其为本发明实施例提供的一种生成差分包的装置的功能示意图。参考图7所示,该装置包括:获取单元701和生成单元702。
[0115]所述获取单元701,用于获取原始版本的差分资源包以及目标版本的差分资源包。
[0116]所述生成单元702,用于利用所述原始版本的差分资源包和所述目标版本的差分资源包生成差分包。
[0117]具体的,所述获取单元701包括:处理模块7011和确定模块7012。
[0118]所述处理模块7011,用于编译原始版本的源代码生成数据文件和差分资源包;所述差分资源包中包含差分用文件,所述数据文件中包含与所述差分用文件使用相同部分源代码编译得到的备份文件。
[0119]所述确定模块7012,用于确定所述备份文件与所述差分用文件是否相同。
[0120]具体的,所述确定模块7012,具体用于根据哈希算法分别计算所述备份文件的哈希值以及所述差分用文件的哈希值;
[0121]所述确定模块7012,具体用于在所述备份文件的哈希值与所述差分用文件的哈希值相同的情况下,确定所述备份文件与所述差分用文件相同;
[0122]所述确定模块7012,具体用于在所述备份文件的哈希值与所述差分用文件的哈希值不相同的情况下,确定所述备份文件与所述差分用文件不相同。
[0123]具体的,所述确定模块7012,具体用于根据所述哈希算法分别计算所述备份文件中每一文件的哈希值以及所述差分用文件中每一文件的哈希值;
[0124]所述确定模块7012,具体用于在所述备份文件中每一文件的哈希值与所述差分用文件中对应的文件的哈希值相同的情况下,确定所述备份文件与所述差分用文件相同;
[0125]所述确定模块7012,具体用于在所述备份文件中每一文件的哈希值与所述差分用文件中对应的文件的哈希值不相同的情况下,确定所述备份文件与所述差分用文件不相同。
[0126]进一步的,所述确定模块7012,具体用于向图形处理器发送第一内核函数Kernel的调用请求;所述第一 Kernel用于指示所述图形处理器根据所述哈希算法对所述备份文件中每一文件进行哈希计算;
[0127]所述确定模块7012,具体用于从所述图形处理器获取所述第一 Kernel的返回值;所述第一 Kernel的返回值包括所述备份文件中每一文件的哈希值;
[0128]所述确定模块7012,具体用于向所述图形处理器发送第二 Kernel的调用请求;所述第二 Kernel用于指示所述图形处理器根据所述哈希算法对所述差分用文件中每一文件进行哈希计算;
[0129]所述确定模块7012,具体用于从所述图形处理器获取所述第二 Kernel的返回值;所述第二 Kernel的返回值包括所述差分用文件中每一文件的哈希值。
[0130]所述处理模块7011,还用于在所述备份文件与所述差分用文件不相同的情况下,重新编译所述原始版本的源代码生成更新后的数据文件和更新后的差分资源包;或者,将所述差分用文件更新至与所述备份文件相同,得到更新后的差分资源包;所述数据文件用于生成将所述移动设备升级至所述原始版本所需的数据映像文件。
[0131]具体的,所述处理模块7011,具体用于用拷贝的所述备份文件替换所述差分用文件。
[0132]具体的,所述处理模块7011,具体用于用拷贝的所述备份文件中的第一文件替换所述差分用文件中与所述第一文件对应的文件;所述第一文件是所述备份文件中文件的哈希值与所述差分用文件中对应的文件的哈希值不同的文件。
[0133]进一步的,所述确定模块7012,还用于确定所述更新后的数据文件中的备份文件与所述更新后的差分资源包中的差分用文件是否相同;
[0134]所述处理模块7011,还用于在所述确定模块7012确定所述更新后的数据文件中的备份文件与所述更新后的差分资源包中的差分用文件不相同的情况下,跳转至重新编译所述原始版本的源代码生成更新后的数据文件和更新后的差分资源包,直至所述更新后的数据文件中的备份文件与所述更新后的差分资源包中的差分用文件相同。
[0135]所述处理模块7011,还用于在所述备份文件与所述差分用文件相同的情况下,将所述差分资源包确定为原始版本的差分资源包。
[0136]本发明实施例提供一种生成差分包的装置,编译原始版本的源代码生成数据文件和差分资源包;确定数据文件中的备份文件与差分资源包中的差分用文件是否相同;在两者不相同的情况下,重新编译原始版本的源代码生成更新后的数据文件和更新后的差分资源包;或者,将差分用文件更新至与备份文件相同,得到更新后的差分资源包;数据文件用于生成将所述移动设备升级至所述原始版本所需的数据映像文。
[0137]对于第一种处理方式,在编译源代码后,需要判断差分资源包中制作差分包时需要进行差分的文件(即差分用文件)与数据文件中对应的文件(即备份文件)是否相同,在两者不相同的情况下,对源代码重新编译得到更新后的数据文件和差分资源包,然后根据更新后的数据文件制作的数据映像文件对移动设备进行升级,并根据更新后的差分资源包与目标版本的差分资源包生成差分包,这样,相对于现有技术,能够减小原始版本的数据文件中备份文件与差分资源包中差分用文件不相同的概率,继而根据原始版本的数据文件转换格式后的数据映像文件将移动设备升级至原始版本与根据原始版本的差分资源包和目标版本的差分资源包生成的差分包匹配成功的可能性增大,最终降低了移动设备差分升级失败的概率。
[0138]对于第二种处理方式,在编译源代码后,需要判断差分资源包中制作差分包时需要进行差分的文件(即差分用文件)与数据文件中对应的文件(即备份文件)是否相同,在两者不相同的情况下,将差分用文件更新至与备份文件相同,得到更新后的差分资源包,这样,就能保证差分用文件与备份文件相同,即保证了差分资源包与数据文件匹配,进一步保证了根据原始版本的数据文件转换格式后的数据映像文件将移动设备升级至原始版本与根据原始版本的差分资源包和目标版本的差分资源包生成的差分包匹配,最终降低了移动设备差分升级失败的概率。
[0139]在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0140]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0141]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0142]上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read)Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0143]最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
【权利要求】
1.一种生成差分包的方法,包括:获取原始版本的差分资源包以及目标版本的差分资源包,并利用所述原始版本的差分资源包和所述目标版本的差分资源包生成差分包,其特征在于,所述获取原始版本的差分资源包包括: 编译原始版本的源代码生成数据文件和差分资源包;所述差分资源包中包含差分用文件,所述数据文件中包含与所述差分用文件使用相同部分源代码编译得到的备份文件;确定所述备份文件与所述差分用文件是否相同; 在所述备份文件与所述差分用文件不相同的情况下,重新编译所述原始版本的源代码生成更新后的数据文件和更新后的差分资源包;或者,将所述差分用文件更新至与所述备份文件相同,得到更新后的差分资源包;所述数据文件用于生成将移动设备升级至所述原始版本所需的数据映像文件; 在所述备份文件与所述差分用文件相同的情况下,将所述差分资源包确定为原始版本的差分资源包。
2.根据权利要求1所述的方法,其特征在于, 所述确定所述备份文件与所述差分用文件是否相同包括: 根据哈希算法分别计算所述备份文件的哈希值以及所述差分用文件的哈希值; 在所述备份文件的哈希值与所述差分用文件的哈希值相同的情况下,确定所述备份文件与所述差分用文件相同; 在所述备份文件的哈希值与所述差分用文件的哈希值不相同的情况下,确定所述备份文件与所述差分用文件不相同。
3.根据权利要求1所述的方法,其特征在于, 所述确定所述备份文件与所述差分用文件是否相同包括: 根据所述哈希算法分别计算所述备份文件中每一文件的哈希值以及所述差分用文件中每一文件的哈希值; 在所述备份文件中每一文件的哈希值与所述差分用文件中对应的文件的哈希值相同的情况下,确定所述备份文件与所述差分用文件相同; 在所述备份文件中每一文件的哈希值与所述差分用文件中对应的文件的哈希值不相同的情况下,确定所述备份文件与所述差分用文件不相同。
4.根据权利要求2或3所述的方法,其特征在于,所述将所述差分用文件更新至与所述备份文件相同包括: 用拷贝的所述备份文件替换所述差分用文件。
5.根据权利要求3所述的方法,其特征在于,所述将所述差分用文件更新至与所述备份文件相同包括: 用拷贝的所述备份文件中的第一文件替换所述差分用文件中与所述第一文件对应的文件;所述第一文件是所述备份文件中文件的哈希值与所述差分用文件中对应的文件的哈希值不同的文件。
6.根据权利要求3或5所述的方法,其特征在于, 所述根据所述哈希算法分别计算所述备份文件中每一文件的哈希值以及所述差分用文件中每一文件的哈希值包括: 向图形处理器发送第一内核函数Kernel的调用请求;所述第一 Kernel用于指示所述图形处理器根据所述哈希算法对所述备份文件中每一文件进行哈希计算; 从所述图形处理器获取所述第一 Kernel的返回值;所述第一 Kernel的返回值包括所述备份文件中每一文件的哈希值; 向所述图形处理器发送第二 Kernel的调用请求;所述第二 Kernel用于指示所述图形处理器根据所述哈希算法对所述差分用文件中每一文件进行哈希计算; 从所述图形处理器获取所述第二 Kernel的返回值;所述第二 Kernel的返回值包括所述差分用文件中每一文件的哈希值。
7.根据权利要求1)6任一项所述的方法,其特征在于,所述重新编译所述原始版本的源代码生成更新后的数据文件和更新后的差分资源包包括: 重新编译所述原始版本的源代码生成更新后的数据文件和更新后的差分资源包,确定所述更新后的数据文件中的备份文件与所述更新后的差分资源包中的差分用文件是否相同,在所述更新后的数据文件中的备份文件与所述更新后的差分资源包中的差分用文件不相同的情况下,跳转至重新编译所述原始版本的源代码生成更新后的数据文件和更新后的差分资源包,直至所述更新后的数据文件中的备份文件与所述更新后的差分资源包中的差分用文件相同。
8.—种生成差分包的装置,包括:获取单元和生成单元,所述获取单元,用于获取原始版本的差分资源包以及目标版本的差分资源包,所述生成单元,用于利用所述原始版本的差分资源包和所述目标版本的差分资源包生成差分包,其特征在于,所述获取单元包括:处理模块和确定模块; 所述处理模块,用于编译原始版本的源代码生成数据文件和差分资源包;所述差分资源包中包含差分用文件,所述数据文件中包含与所述差分用文件使用相同部分源代码编译得到的备份文件; 所述确定模块,用于确定所述备份文件与所述差分用文件是否相同; 所述处理模块,还用于在所述备份文件与所述差分用文件不相同的情况下,重新编译所述原始版本的源代码生成更新后的数据文件和更新后的差分资源包;或者,将所述差分用文件更新至与所述备份文件相同,得到更新后的差分资源包;所述数据文件用于生成将移动设备升级至所述原始版本所需的数据映像文件; 所述处理模块,还用于在所述备份文件与所述差分用文件相同的情况下,将所述差分资源包确定为原始版本的差分资源包。
9.根据权利要求8所述的装置,其特征在于, 所述确定模块,具体用于根据哈希算法分别计算所述备份文件的哈希值以及所述差分用文件的哈希值; 所述确定模块,具体用于在所述备份文件的哈希值与所述差分用文件的哈希值相同的情况下,确定所述备份文件与所述差分用文件相同; 所述确定模块,具体用于在所述备份文件的哈希值与所述差分用文件的哈希值不相同的情况下,确定所述备份文件与所述差分用文件不相同。
10.根据权利要求8所述的装置,其特征在于, 所述确定模块,具体用于根据所述哈希算法分别计算所述备份文件中每一文件的哈希值以及所述差分用文件中每一文件的哈希值; 所述确定模块,具体用于在所述备份文件中每一文件的哈希值与所述差分用文件中对应的文件的哈希值相同的情况下,确定所述备份文件与所述差分用文件相同; 所述确定模块,具体用于在所述备份文件中每一文件的哈希值与所述差分用文件中对应的文件的哈希值不相同的情况下,确定所述备份文件与所述差分用文件不相同。
11.根据权利要求9或10所述的装置,其特征在于, 所述处理模块,具体用于用拷贝的所述备份文件替换所述差分用文件。
12.根据权利要求10所述的装置,其特征在于, 所述处理模块,具体用于用拷贝的所述备份文件中的第一文件替换所述差分用文件中与所述第一文件对应的文件;所述第一文件是所述备份文件中文件的哈希值与所述差分用文件中对应的文件的哈希值不同的文件。
13.根据权利要求10或12所述的装置,其特征在于, 所述确定模块,具体用于向图形处理器发送第一内核函数Kernel的调用请求;所述第一 Kernel用于指示所述图形处理器根据所述哈希算法对所述备份文件中每一文件进行哈希计算; 所述确定模块,具体用于从所述图形处理器获取所述第一 Kernel的返回值;所述第一Kernel的返回值包括所述备份文件中每一文件的哈希值; 所述确定模块,具体用于向所述图形处理器发送第二 Kernel的调用请求;所述第二Kernel用于指示所述图形处理器根据所述哈希算法对所述差分用文件中每一文件进行哈希计算; 所述确定模块,具体用于从所述图形处理器获取所述第二 Kernel的返回值;所述第二Kernel的返回值包括所述差分用文件中每一文件的哈希值。
14.根据权利要求8)13任一项所述的装置,其特征在于, 所述确定模块,还用于确定所述更新后的数据文件中的备份文件与所述更新后的差分资源包中的差分用文件是否相同; 所述处理模块,还有用于在所述确定模块确定所述更新后的数据文件中的备份文件与所述更新后的差分资源包中的差分用文件不相同的情况下,跳转至重新编译所述原始版本的源代码生成更新后的数据文件和更新后的差分资源包,直至所述更新后的数据文件中的备份文件与所述更新后的差分资源包中的差分用文件相同。
【文档编号】G06F9/445GK104267978SQ201410471851
【公开日】2015年1月7日 申请日期:2014年9月16日 优先权日:2014年9月16日
【发明者】朱晓亮, 刘薇, 张景新 申请人:青岛海信移动通信技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1