一种目标增量数据构建方法及装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种目标增量数据构建方法及装置。
背景技术
随着计算机技术的发展,智能终端越来越普及,智能终端中的应用程序是实现智能终端的功能的基础。
在进行应用程序的开发时,开发人员最初开发时编写的应用程序原始文件(后称原始程序)需要经过一定的转换操作,才能转换为智能终端可用的应用程序文件(后称目标程序),我们将此操作过程称为编译操作。比如,对于安卓应用程序的开发过程而言,开发人员最初开发的原始程序为java格式的文件,java格式的文件可以通过编译操作最终转变为安卓系统可运行的dex格式的文件。
编译操作往往需要一定的时间,随着应用程序功能的增多,应用程序占用的存储空间也越来越大,移动智能终端的应用程序的体积往往都能达到几十兆,那么编译操作过程耗费的时间也越来越长。
为了对智能终端中的应用程序进行完善,开发人员会开发新版本的应用程序,以便对智能终端的应用程序进行更新。那么,在对应用程序进行更新时,需要对新版本的原始程序执行编译操作,然后才能转换为智能终端可以使用的目标程序。其中,编译操作会耗费大量的时间,导致应用程序的更新过程会耗费大量的时间。
为了解决对新版本的原始程序进行编译,导致应用程序的更新过程会耗费大量的时间的问题,现有技术中,可以通过构建增量数据的方式来进行应用程序的更新。具体地,可以以某一版本的作为基线版本,此后的应用程序可以都基于所述基线版本进行构建,那么在需要将基于基线版本构建的智能终端当前安装的应用程序(后文称当前应用)更新为基于基线版本构建的新版本应用程序(后文称目标应用)时,只需要向智能终端的当前应用中添加增量数据即可将当前应用更新为所述目标应用,所述增量数据包含目标应用相对于基线版本更新的数据。
那么,在进行目标应用的更新时,只需要对开发人员开发时编写的增量数据的原始文件(后文称原始增量数据)执行编译操作,即可得到可以被添加至智能终端当前应用中的增量数据(后文称目标增量数据)。其中,所述原始增量数据由至少一个原始增量文件构成。然而,每次对基于基线版本构建的当前应用进行更新时,都需要对原始增量数据执行编译操作,随着更新次数的增多,原始增量数据的体积越来越大,同样,对原始增量数据执行编译操作也会耗费大量的时间,导致目标增量数据的构建效率较低,进而导致应用程序的更新效率较低。
发明内容
本申请实施例提供一种目标增量数据构建方法,用于解决现有技术中目标增量数据的构建效率较低的问题。
本申请实施例还提供一种目标增量数据构建装置,用于解决现有技术中目标增量数据的构建效率较低的问题。
本申请实施例采用下述技术方案:
一种增量数据构建方法,包括:
在根据原始增量数据构建目标增量数据前,判断所述原始增量数据中是否存在已被执行过编译操作且编译成功的原始增量文件;
若存在,则从预定存储空间中获取与所述已被执行过编译操作且编译成功的原始增量文件对应的目标数据文件,作为根据所述原始增量数据中的已被执行过编译操作且编译成功的原始增量文件构建的第一目标数据文件;所述预定存储空间中储存有与被执行过编译操作的原始数据文件对应的目标数据文件;所述目标数据文件是通过对原始数据文件执行编译操作得到的。
一种增量数据构建装置,包括:
判断单元,用于在根据原始增量数据构建目标增量数据前,判断所述原始增量数据中是否存在已被执行过编译操作且编译成功的原始增量文件;
第一目标数据文件获取单元,用于在所述原始增量数据中存在已被执行过编译操作且编译成功的原始增量文件时,则从预定存储空间中获取与所述已被执行过编译操作且编译成功的原始增量文件对应的目标数据文件,作为根据所述原始增量数据中的已被执行过编译操作且编译成功的原始增量文件构建的第一目标数据文件;所述预定存储空间中储存有与被执行过编译操作的原始数据文件对应的目标数据文件;所述目标数据文件是通过对原始数据文件执行编译操作得到的。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
通过从存储有与被执行过编译操作的原始数据文件对应的目标数据文件的预定存储空间中,获取与所述已被执行过编译操作且编译成功的原始增量文件对应的目标数据文件,无需对原始增量数据中已被执行过编译操作且编译成功的原始增量文件执行编译操作,提高了目标增量数据的构建效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例1提供的一种目标增量数据构建方法的实现流程示意图;
图2为本申请实施例1提供的一种并行实现目标增量数据构建方法的示意图。
图3为本申请实施例2提供的一种目标增量数据构建方法的一种实现流程示意图;
图4为本申请实施例3提供的一种目标增量数据构建装置的具体结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
实施例1
为解决现有技术中目标增量数据的构建效率较低的问题,本申请实施例1提供一种目标增量数据构建方法。本申请实施例提供的目标增量数据构建方法的执行主体可以是应用程序更新框架,所述应用程序更新框架为用于实现应用程序更新的硬件和/或软件的组合。
为便于描述,下文以该方法的执行主体为应用程序更新框架为例,对该方法的实施方式进行介绍。可以理解,该方法的执行主体为应用程序更新框架只是一种示例性的说明,并不应理解为对该方法的限定。
该方法的实现流程示意图如图1所示,包括下述步骤:
步骤11:在根据原始增量数据构建目标增量数据前,判断所述原始增量数据中是否存在已被执行过编译操作且编译成功的原始增量文件;
本申请实施例中,所述原始增量数据可以由至少一个原始增量文件构成,所述原始增量文件比如可以是.java格式的文件。
本申请实施例中,所述编译操作为将原始增量数据转换为智能终端可用的目标增量数据的操作,所述编译操作可以细分为多个操作阶段。为了便于描述,我们将编译操作第n阶段的转换结果称为n阶目标增量数据。其中,编译操作第1阶段的操作对象为原始增量数据,编译操作第n阶段的操作对象为n-1阶目标增量数据。
需要说明的是,本申请实施例中所描述的数据可以由至少一个文件构成,为了便于描述,本申请实施例中数据的名称和构成所述数据的文件的名称可以相同,例如原始增量数据由至少一个原始增量文件构成,目标增量数据由至少一个目标增量文件够成。
比如,所述编译操作可以分为编译操作第1阶段和编译操作第2阶段。其中,所述编译操作第1阶段可以预先将所述原始增量数据转换为1阶目标增量数据,所述编译操作第2阶段可以将所述1阶目标增量数据转换为2阶目标增量数据,并将所述2阶目标增量数据作为目标增量数据。
具体地,在安卓应用开发过程中,所述编译操作可以分为编译操作第1阶段和编译操作第2阶段。其中所述编译操作第1阶段可以将.java格式的文件(即原始增量数据)转换为.class格式的文件(即1阶目标增量数据),所述编译操作第2阶段可以将所述.class格式的文件转换为安卓操作系统可以运行的.dex格式的文件(即所2阶目标增量数据),并将所述.dex格式的文件作为目标增量数据。
本申请实施例中,如果所述原始增量数据已被执行过编译操作且编译成功,则可以直接利用之前编译操作的结果,而无需对已被执行过编译操作且编译成功的原始增量数据重新执行编译操作。那么,在根据原始增量数据构建目标增量数据前,可以预先判断所述原始增量数据中是否存在已被执行过编译操作且编译成功的原始增量文件。
本申请实施例中,在判断所述原始增量数据中是否存在已被执行过编译操作且编译成功的原始增量文件时,可以根据所述原始增量文件的唯一特征标识,从存储有与被执行过编译操作的原始数据文件对应的目标数据文件的存储空间中进行查找。所述唯一特征表示比如可以是文件名。
本申请实施例中,所述目标数据文件可以按照预定的存储方式进行存储,以方便后续可以根据所述原始增量文件的唯一标识特征,判断所述原始增量数据中是否存在已被执行过编译操作且编译成功的原始增量文件。
在实际应用中,所述预定的存储方式比如可以是将目标数据文件以key-value的形式进行存储。每个key-value对中,key为原始增量文件的唯一标识特征,value为key值记录的原始增量文件经过转换操作后得到的目标数据文件。这样,便可以根据原始增量文件的唯一标识特征,查询预定存储空间中是否存在与所述唯一标识特征相同的key值,来判断所述原始增量文件是否已被执行过编译操作且编译成功。如果所述预订存储空间中存在与所述唯一标识特征相同的key值,则可以判定所述原始增量文件已被执行过编译操作且编译成功;如果所述预订存储空间中不存在与所述唯一标识特征相同的key值,则可以判定所述原始增量文件未被执行过编译操作或被执行过编译操作但编译失败。
在实际应用中,在对所述目标数据文件进行存储时,为了加快后续对目标数据文件的获取速度,可以将所述目标数据文件存储于应用程序的缓存中。即所述预定存储空间可以是应用程序缓存。
在实际应用中,如果所述编译操作分为多个阶段,则可以以key-value的形式对编译操作各个阶段的编译结果进行存储,每个key-value对中,key为n阶目标增量文件的唯一标识特征,value为key值记录的n阶目标增量文件经过编译操作第n阶段的转换操作后得到的目标数据文件。
以安卓应用开发中增量数据的构建过程为例,在通过编译操作第1阶段将.java格式的文件转换为.class格式的文件后,可以以所述.java格式的文件的文件名为key,以.class格式的文件为value,对编译操作第1阶段的1阶目标增量数据进行存储;在通过编译操作第2阶段将所述.class格式的文件转换为安卓操作系统可以运行的.dex格式的文件后,可以以所述.class格式的文件的文件名为key,以.dex格式的文件为value,对编译操作第2阶段的2阶目标增量数据进行存储。
在实际应用中,如果所述编译操作分为多个阶段,则可以在编译操作的各个阶段开始前,判断该阶段的操作对象中是否存在已被执行过该阶段编译操作的操作对象。
即,可以在编译操作第n阶段开始前,判断编译操作第n阶段的操作对象(即n-1阶目标增量数据)中是否存在已被执行过编译操作第n阶段的n-1阶目标增量文件。
步骤12:若所述原始增量数据中存在已被执行过编译操作且编译成功的原始增量文件,则从预定存储空间中获取与所述已被执行过编译操作且编译成功的原始增量文件对应的目标数据文件,作为根据所述原始增量数据中的已被执行过编译操作且编译成功的原始增量文件构建的第一目标数据文件;
所述预定存储空间中储存有与被执行过编译操作的原始数据文件对应的目标数据文件;
所述目标数据文件是通过对原始数据文件执行编译操作得到的。
本申请实施例中,在判断所述原始增量数据中是否存在已被执行过编译操作且编译成功的原始增量文件后,如果所述原始增量数据中存在已被执行过编译操作且编译成功的原始增量文件,则可以从预定存储空间中获取与所述已被执行过编译操作且编译成功的原始增量文件对应的目标数据文件,作为根据所述原始增量数据中的已被执行过编译操作且编译成功的原始增量文件构建的第一目标数据文件。
在实际应用中,当所述预定存储空间中存在与原始增量文件的唯一标识特征相同的key值时,则可以判定所述原始增量文件已被执行过编译操作且编译成功,由于所述原始增量文件的所述唯一标识特征和目标数据文件是以key-value的形式一一对应存储的,则可以根据预定存储空间中查找到的key值,获取与所述key值相对应的目标增量文件,作为根据所述原始增量数据中的已被执行过编译操作且编译成功的原始增量文件构建的第一目标数据文件。
在实际应用中,如果所述编译操作分为多个阶段,那么,在编译操作第n阶段开始前,判断编译操作第n阶段的操作对象(即n-1阶目标增量数据)中是否存在已被执行过编译操作第n阶段的n-1阶目标增量文件后,如果编译操作第n阶段的操作对象(即n-1阶目标增量数据)中存在已被执行过编译操作第n阶段的n-1阶目标增量文件,则从预定存储空间中获取与所述已被执行过编译操作第n阶段的n-1阶目标增量文件对应的n阶目标数据文件。以备后续作为编译操作第n+1阶段的操作对象,或者作为第一目标数据文件。
以安卓应用开发中增量数据的构建过程为例,在编译操作第1阶段(将.java格式的文件转换为.class格式的文件)开始前,判断.java格式的文件中是否存在已被执行过编译操作第1阶段的.java格式的文件,如果存在已被执行过编译操作第1阶段的.java格式的文件,则直接从预定存储空间中获取与已被执行过编译操作第1阶段的.java格式的文件对应的.class格式的文件;在编译操作第2阶段(将所述.class格式的文件转换为安卓操作系统可以运行的.dex格式的文件)开始前,判断.class格式的文件中是否存在已被执行过编译操作第2阶段的.class格式的文件,如果存在已被执行过编译操作第2阶段的.class格式的文件,则直接从预定存储空间中获取与已被执行过编译操作第2阶段的.class格式的文件对应的.dex格式的文件。
本申请实施例中,对于所述原始增量数据中未被执行过编译操作或被执行过编译操作但编译失败的原始增量文件,则可以通过执行编译操作,得到第二目标数据文件。具体地对所述原始增量数据中未被执行过编译操作或被执行过编译操作但编译失败的原始增量文件执行编译操作的过程请参见步骤11中对编译操作过程的描述,在此不再赘述。
本申请实施例中,在对原始增量数据中未被执行过编译操作或被执行过编译操作但编译失败的原始增量文件执行编译操作后,可以将所述第二目标数据文件存储于所述预定存储空间中,本申请实施例中,在对第二目标数据文件进行存储时,可以按照预定的存储方式进行存储。具体的对第二目标数据文件进行存储的过程可以参见步骤11中将目标数据按照预定的存储方式进行存储的过程的描述,在此不再赘述。
本申请实施例中,在得到所述第二目标数据文件后,便可以将所述第一目标数据文件和所述第二目标数据文件进行合并,得到目标增量数据。
本申请实施例中,在得到所述目标增量数据后,便可以通过依赖注入的方式将所述目标增量数据注入到智能终端的当前应用的预定程序文件中,完成应用程序的更新。
以安卓系统利用所述目标增量数据进行应用程序的更新为例,可以将目标增量数据(dex文件)通过依赖注入的方式添加到当前应用程序文件中的DexElements的最前面,即可完成应用程序的更新。该过程无需生成应用程序安装包,提高了应用程序更新的效率。
需要说明的是,如果目标应用相对于当前应用存在资源数据的更新,由于资源数据无需编译过程,因此,可以直接将需要更新的资源数据传输到智能终端对应的目录中即可。本申请实施例不再对资源数据的更新过程进行详细描述。
本申请实施例中,可以利用并行处理机制构建所述目标增量数据。
具体地,可以将所述原始增量数据划分为不同类别的子原始增量数据,然后可以根据不同类别的子原始增量数据是否存在依赖关系,从划分得到的不同类别的子原始增量数据中,确定能够被并行执行编译操作的子原始增量数据,进而并行对能够被并行执行编译操作的各子原始增量数据分别执行下述操作:判断该子原始增量数据中是否存在已被执行过编译操作且编译成功的子原始增量文件。
在实际应用中,可以根据原始增量数据中的原始数据文件在应用中所属的不同模块,将所述原始增量数据划分为不同模块的子原始增量数据,然后可以根据不同模块之间的关系,确定能够被并行执行编译操作的子原始增量数据的模块,进而并行对能够被并行执行编译操作的各子原始增量数据执行编译操作,得到各子原始增量数据对应的子目标增量数据。
在判断各子原始增量数据中是否存在已被执行过编译操作且编译成功的子原始增量文件后,可以并行对判断出的存在于各子原始增量数据中的、已被执行过编译操作且编译成功的各子原始增量文件分别执行下述操作:从预定存储空间中,获取与该子原始增量文件对应的子目标数据文件,作为根据该子原始增量文件构建的第一子目标数据文件。
然后,并行对各原始增量数据中未被执行过编译操作或被执行过编译操作但编译失败的子原始数据文件执行编译操作,得到第二子目标数据文件。
最后,将所述第一子目标数据文件和所述第二子目标数据文件,以及根据不能被并行执行编译操作的原始增量数据构建的目标增量数据进行合并,得到原始增量数据的目标增量数据。
在实际应用中,所述不能被并行执行编译操作的子原始增量数据比如可以是编译过程具有相互依赖关系的子原始增量文件。具体地,某些类别的子原始增量文件的编译过程之间可能会具有相互依赖关系,比如,对类别a中的子原始增量文件的编译操作过程中可能需要用到对类别b中的子原始增量文件进行编译后得到的文件。那么对不能被并行执行编译操作的子原始增量数据执行编译操作的顺序,则可以根据不同类别的子原始增量数据的编译过程之间的依赖关系确定,比如,当对类别a中的子原始增量文件的编译操作过程中可能需要用到对类别b中的子原始增量文件进行编译后得到的文件时,则可以预先对类别b中的子原始增量文件执行编译操作,得到对模块类别b中的子原始增量文件执行编译操作的结果,然后再对类别a中的子原始增量文件执行编译操作。
在实际应用中,所述不能被并行执行编译操作的子原始增量数据还可以是受执行设备性能影响而无法并行执行编译操作的子原始增量数据,或者开发人员预先设定的无需被并行执行编译操作的子原始增量数据,在此不再赘述。
在实际应用中,从原始增量数据的获取到目标增量数据的构建过程均可以采用并行处理机制,具体过程如图2所示,首先,可以预先将应用程序划分为不同的模块,然后扫描各模块是否需要更新,并对需要更新的模块构建子原始增量数据,然后分别构建各子原始增量数据的子目标增量数据,最后将各子目标增量数据进行合并,得到目标增量数据。其中,构建各子原始增量数据的子目标增量数据的过程可以参考本申请实施例中根据原始增量数据构建目标增量数据的过程,在此不再赘述。
本申请实施例1提供的目标增量数据构建方法,通过从存储有与被执行过编译操作的原始数据文件对应的目标数据文件的预定存储空间中,获取与所述已被执行过编译操作且编译成功的原始增量文件对应的目标数据文件,无需对原始增量数据中已被执行过编译操作且编译成功的原始增量文件执行编译操作,提高了目标增量数据的构建效率。
需要说明的是,实施例1所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤11和步骤12的执行主体可以为设备1,又比如,步骤11的执行主体可以为设备1,步骤12的执行主体可以为设备2;等等。
实施例2
基于前述实施例1详细叙述了本申请的发明构思,为了便于更好的理解本申请的技术特征、手段和效果,下面对本申请的目标增量数据构建方法做进一步说明,从而形成了本申请的又一个实施例。
本申请实施例2中目标增量数据构建过程与实施例1中所述目标增量数据构建过程相似,实施例2中没有介绍到的其他一些步骤可以参见实施例1中的相关描述,此处不再赘述。
在对该方案的实现方式进行详细介绍前,先对该方案的实施场景进行简单介绍。
该实施场景中,开发人员针对安卓智能设备安装的当前应用开发出了新版本应用,为了便于描述,将所述新版本应用称为目标应用。
现在需要将智能终端安装的当前应用更新为所述目标应用。
基于上述场景,实施例2中实现目标增量数据构建的过程如图3所示,包括下述步骤:
步骤201:将应用程序划分为多个模块;
对各模块并行执行步骤202-步骤210。
步骤202:为各需要更新的模块构建子原始增量数据;
对于不需要更新的模块,则直接结束;
其中所述子原始增量数据为.java格式的文件。
步骤203:判断各子原始增量数据中的.java格式的文件中是否存在已被执行过javac操作的.java文件;
步骤204:对于已被执行过javac操作的.java文件,直接从预定存储空间中获取与已被执行过javac操作的.java格式的文件对应的.class格式的文件,作为第一目标.class数据;
步骤205:对未被执行过javac操作的.java文件执行java操作,得到.class格式的文件,作为第二目标.class数据;并以key-value的形式将得到的第二目标.class数据存储到缓存中;
步骤206:合并所述第一目标.class数据和所述第二目标.class数据,得到目标.class数据;
步骤207:判断所述目标.class数据中,是否存在已被执行过dx操作的.class格式的文件;
步骤208:对于已被执行过dx操作的.class格式的文件,直接从预定存储空间中获取与已被执行过dx操作的.class格式的文件对应的.dex格式的文件,作为第一目标.dex数据;
步骤209:对未被执行过dx操作的.class文件执行dx操作,得到.dex格式的文件,作为第二目标.dex数据;并以key-value的形式将得到的第二目标.dex数据存储到缓存中;
步骤210:合并第一目标.dex数据和第二目标.dex数据,得到目标.dex数据;
步骤211:合并各模块的目标.dex数据,得到总目标.dex数据。
步骤212:通过依赖注入的方式将所述总目标.dex数据注入到智能终端的当前应用程序文件中的DexElements的最前面;
步骤213:重启智能终端中的所述应用程序,完成对所述当前应用的更新。
本申请实施例2提供的目标增量数据构建方法,通过从存储有与被执行过编译操作的原始数据文件对应的目标数据文件的预定存储空间中,获取与所述已被执行过编译操作且编译成功的原始增量文件对应的目标数据文件,无需对原始增量数据中已被执行过编译操作且编译成功的原始增量文件执行编译操作,提高了目标增量数据的构建效率。
实施例3
为解决现有技术中目标增量数据的构建效率较低的问题,本申请实施例3提供一种目标增量数据构建装置。该目标增量数据构建装置的结构示意图如图4所示,主要包括下述功能单元:
判断单元31,用于在根据原始增量数据构建目标增量数据前,判断所述原始增量数据中是否存在已被执行过编译操作且编译成功的原始增量文件;
第一目标数据文件获取单元32,用于在所述原始增量数据中存在已被执行过编译操作且编译成功的原始增量文件时,则从预定存储空间中获取与所述已被执行过编译操作且编译成功的原始增量文件对应的目标数据文件,作为根据所述原始增量数据中的已被执行过编译操作且编译成功的原始增量文件构建的第一目标数据文件;所述预定存储空间中储存有与被执行过编译操作的原始数据文件对应的目标数据文件;所述目标数据文件是通过对原始数据文件执行编译操作得到的。
第二目标数据文件获取单元33,用于对原始增量数据中未被执行过编译操作或被执行过编译操作但编译失败的原始数据文件执行编译操作,得到第二目标数据文件;并将所述第二目标数据文件存储于所述预定存储空间中;
目标增量数据获取单元34,用于将所述第一目标数据文件和所述第二目标数据文件进行合并,得到目标增量数据。
在一种实施方式中,所述判断单元31,具体用于在根据原始增量数据构建目标增量数据前,将所述原始增量数据划分为不同类别的子原始增量数据;
根据不同类别的子原始增量数据是否存在依赖关系,从划分得到的不同类别的子原始增量数据中,确定能够被并行执行编译操作的子原始增量数据;
并行对能够被并行执行编译操作的各子原始增量数据分别执行下述操作:
判断该子原始增量数据中是否存在已被执行过编译操作且编译成功的子原始增量文件。
在一种实施方式中,所述第一目标数据文件获取单元32,具体用于并行对判断出的存在于各子原始增量数据中的、已被执行过编译操作且编译成功的各子原始增量文件分别执行:
从预定存储空间中,获取与该子原始增量文件对应的子目标数据文件,作为根据该子原始增量文件构建的第一子目标数据文件。
在一种实施方式中,所述第二目标数据文件获取单元33,具体用于并行对各原始增量数据中未被执行过编译操作或被执行过编译操作但编译失败的子原始数据文件执行编译操作,得到第二子目标数据文件。
在一种实施方式中,所述目标增量数据获取单元34,具体用于将所述第一子目标数据文件和所述第二子目标数据文件,以及根据不能被并行执行编译操作的原始增量数据构建的目标增量数据进行合并,得到原始增量数据的目标增量数据。
在一种实施方式中,其特征在于,所述预定存储空间为缓存。
应用程序更新单元35,用于通过依赖注入的方式将所述目标增量数据注入到智能终端的当前应用的程序文件中,完成应用程序的更新。
本申请实施例3提供的目标增量数据构建装置,通过从存储有与被执行过编译操作的原始数据文件对应的目标数据文件的预定存储空间中,获取与所述已被执行过编译操作且编译成功的原始增量文件对应的目标数据文件,无需对原始增量数据中已被执行过编译操作且编译成功的原始增量文件执行编译操作,提高了目标增量数据的构建效率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。