应用的安装包的生成方法及装置转让专利

申请号 : CN201610547996.7

文献号 : CN107632827A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 韩欣

申请人 : 阿里巴巴集团控股有限公司

摘要 :

本申请公开了一种应用的安装包的生成方法及装置。其中,该方法包括:显示一个应用对应的多个工程包,其中,多个工程包中的任意一个均是对应用的一个程序模块进行编译得到的;确定从显示的多个工程包中被选择出的一个或多个工程包;接收命令,其中,命令用于指示根据被选择出的一个或多个工程包生成应用对应的安装包。通过本申请提升了安装包编译时的效率,降低构建成本,解决了相关技术中安装包编译效率低的技术问题。

权利要求 :

1.一种安装包的生成的方法,其特征在于,包括:显示一个应用对应的多个工程包,其中,所述多个工程包中的任意一个均是对所述应用的一个程序模块进行编译得到的;

确定从显示的所述多个工程包中被选择出的一个或多个工程包;

接收命令,其中,所述命令用于指示根据所述被选择出的一个或多个工程包生成所述应用对应的安装包。

2.根据权利要求1所述的方法,其特征在于,显示所述一个应用对应的多个工程包包括:显示所述一个应用对应的多个程序模块的标识信息,其中,所述标识信息能够被用户操作;

响应于所述用户对预定程序模块的标识信息的操作,显示所述预定程序模块对应的一个或多个工程包,其中,所述一个或多个工程包使用工程包的属性信息标识,所述属性信息包括以下至少之一:该工程包的版本号、时间戳。

3.根据权利要求1所述的方法,其特征在于,在确定从显示的所述多个工程包中被选择出的一个或多个工程包之后,所述方法还包括:显示提示信息,其中,所述提示信息用于提示所述用户是否保存此次选择出的多个工程包的信息;

响应于所述用户执行的保存操作,对选择出的多个工程包的信息赋予标识信息并进行保存。

4.根据权利要求3所述的方法,其特征在于,所述方法还包括:显示保存的一个或多个标识信息,其中,所述一个或多个标识信息中的至少之一能够被所述用户操作;

响应于所述用户对所述一个或多个标识信息中预定标识信息进行的操作,显示所述标识信息对应的多个工程包的信息。

5.根据权利要求4所述的方法,其特征在于,显示所述标识信息对应的多个工程包的信息包括:显示对所述标识信息对应的多个工程包中的任意之一进行操作的信息;

响应于所述用户对所述标识信息对应的多个工程包中预定工程包进行操作的信息,对所述预定工程包进行操作,其中,所述操作包括以下至少之一:删除、替换。

6.根据权利要求4所述的方法,其特征在于,显示所述标识信息对应的多个工程包的信息包括:显示添加指示;

响应于所述用户对所述添加指示的操作,对所述标识信息对应的多个工程包中添加工程包。

7.根据权利要求5所述的方法,其特征在于,在对所述预定工程包进行操作之后,所述方法还包括:对操作之后的多个工程包的信息赋予新的标识信息并进行保存。

8.一种应用的安装包的生成方法,其特征在于,包括:根据编译命令对一个应用的多个程序模块的源代码分别进行编译,得到每个程序模块对应的工程包;

接收从每个程序模块对应的工程包中选择出的一个或多个工程包;

根据所述选择出的一个或多个工程包生成所述应用对应的安装包。

9.根据权利要求8所述的方法,其特征在于,在得到所述每个程序模块对应的工程包之后,所述方法还包括:为每个程序模块对应的工程包设置标识信息,其中,所述标识信息用于标识工程包所属的程序模块,每个程序模块的不同版本的源代码分别对应一个工程包;

为每个工程包设置该工程包的属性信息,其中,所述属性信息包括以下至少之一:该工程包的版本号、时间戳。

10.根据权利要求9所述的方法,其特征在于,接收所述选择出的一个或多个工程包包括:接收选择出的程序模块;

根据工程包的属性信息分别从所述选择出的程序模块对应的一个或多个工程包中选择出需要的工程包。

11.根据权利要求10所述的方法,其特征在于,在选择出所述需要的工程包之后,所述方法还包括:将所有所述需要的工程包的标识信息以及所有所述需要的工程包的属性信息组合在一起;

将组合后得到的信息作为该安装包的配置信息进行保存。

12.根据权利要求11所述的方法,其特征在于,在生成所述应用对应的安装包之后,所述方法还包括:在再次生成所述应用的新的安装包的情况下,获取得到所述新的安装包对应的一个或多个工程包,其中,所述新的安装包根据该一个或多个工程包生成;

获取之前保存的配置信息;

在判断出所述新的安装包对应的一个或多个工程包的标识信息和/或属性信息相比于之前保存的配置信息发生变化的情况下,生成新的配置信息并保存。

13.根据权利要求12所述的方法,其特征在于,在生成所述新的配置信息之后,所述方法还包括:将所述新的配置信息与之前保存的配置信息进行比较,得到差异,并保存所述差异的信息。

14.根据权利要求9至13中任一项所述的方法,其特征在于,所述属性信息还包括:功能完成度,其中,所述功能完成度用于表示该工程包对应的功能所能够达到预期效果的程度;

所述方法还包括:根据选择出所述一个或多个工程包的功能完成度确定所编译得到的安装包的成熟度,其中,所述成熟度用于表示该安装包的功能达到预期效果的程度。

15.一种安装包的生成的装置,其特征在于,包括:显示模块,用于显示一个应用对应的多个工程包,其中,所述多个工程包中的任意一个均是对所述应用的一个程序模块进行编译得到的;

确定模块,用于确定从显示的所述多个工程包中被选择出的一个或多个工程包;

接收模块,用于接收命令,其中,所述命令用于指示根据所述被选择出的一个或多个工程包生成所述应用对应的安装包。

16.一种应用的安装包的生成装置,其特征在于,包括:编译模块,用于根据编译命令对一个应用的多个程序模块的源代码分别进行编译,得到每个程序模块对应的工程包;

接收模块,用于接收从每个程序模块对应的工程包中选择出的一个或多个工程包;

生成模块,用于根据所述选择出的一个或多个工程包生成所述应用对应的安装包。

说明书 :

应用的安装包的生成方法及装置

技术领域

[0001] 本申请涉及软件领域,具体而言,涉及一种应用的安装包的生成方法及装置。

背景技术

[0002] 随着技术的发展,用户对各种软件的需求也越来越多,因此,软件的开发得到越来越多的重视。例如,手机app(application的缩写,应用程序)开发目前就得到了很大的发展。
[0003] 在软件开发中,对于开发源代码以及编译的管理方式多种多样,目前,这些管理方式均是基于完整安装包的编译及代码管理方式。在这种方式中,如果有一部分的代码发生了变化,则需要对该安装的所有的源代码均进行编译。举例而言,开发了一个手机上的即时通讯软件,相对于上个版本而言,此次修改仅仅添加了一个小功能,即对实时显示用户地理位置的功能进行了增强,其他功能均没有改变;此时需要生成新的APP,那么在编译的时候也需要对所有的源代码进行编译,即使一些功能模块的代码并没有发生改变。
[0004] 由于这种编译方法是基于完整安装包的源代码进行编译,因此,即使代码改动很小也要全部进行编译,这导致了编码效率较低。
[0005] 针对相关技术中安装包编译效率低的问题,目前尚未提出有效的解决方案。

发明内容

[0006] 本申请实施例提供了一种应用的安装包的生成方法及装置,以至少解决相关技术中安装包编译效率低的技术问题。
[0007] 根据本申请实施例的一个方面,提供了一种应用的安装包的生成方法,包括:显示一个应用对应的多个工程包,其中,多个工程包中的任意一个均是对应用的一个程序模块进行编译得到的;确定从显示的多个工程包中被选择出的一个或多个工程包;接收命令,其中,命令用于指示根据被选择出的一个或多个工程包生成应用对应的安装包。
[0008] 根据本申请实施例的另一方面,还提供了一种应用的安装包的生成方法,包括:根据编译命令对一个应用的多个程序模块的源代码分别进行编译,得到每个程序模块对应的工程包;接收从每个程序模块对应的工程包中选择出的一个或多个工程包;根据选择出的一个或多个工程包生成应用对应的安装包。
[0009] 根据本申请实施例的另一方面,还提供了一种应用的安装包的生成装置,包括:显示模块,用于显示一个应用对应的多个工程包,其中,多个工程包中的任意一个均是对应用的一个程序模块进行编译得到的;确定模块,用于确定从显示的多个工程包中被选择出的一个或多个工程包;接收模块,用于接收命令,其中,命令用于指示根据被选择出的一个或多个工程包生成应用对应的安装包。
[0010] 根据本申请实施例的另一方面,还提供了一种应用的安装包的生成装置,包括:编译模块,用于根据编译命令对一个应用的多个程序模块的源代码分别进行编译,得到每个程序模块对应的工程包;接收模块,用于接收从每个程序模块对应的工程包中选择出的一个或多个工程包;生成模块,用于根据选择出的一个或多个工程包生成应用对应的安装包。
[0011] 在本申请实施例中,显示一个应用对应的多个工程包,确定从显示的多个工程包中被选择出的一个或多个工程包,接收命令,从而实现应用的安装包的生成。
[0012] 容易注意到,由于根据编译命令对一个应用的多个程序模块的源代码分别进行编译,得到每个模块对应的工程包,采用了模块化的编译方式,而不是采用了完整压缩包的编译方式,这样选择进行编译的模块,而不需要进行对全部的源代码进行编译。因此,通过本实施例提供的方案尤其适合多模块及大量代码的安装包构建过程管理。
[0013] 由此,本申请提供的上述实施例的方案解决了相关技术中安装包编译效率低的技术问题。

附图说明

[0014] 此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0015] 图1是根据本申请实施例的一种应用的安装包的生成方法的计算机终端的硬件结构框图;
[0016] 图2是根据本申请实施例一的一种应用的安装包的生成方法的流程图;
[0017] 图3是根据本申请实施例二的一种应用的安装包的生成方法的流程图;
[0018] 图4是根据本申请实施例二的一种可选的基线配置变化的示意图;
[0019] 图5是根据本申请实施例二的一种可选的多象限基线配置变化及安装包定义的示意图;
[0020] 图6是根据本申请实施例二的一种可选的安装包编译的流程图;
[0021] 图7是根据本申请实施例二的一种可选的划分多象限基线配置文件的流程图;
[0022] 图8是根据本申请实施例二的一种可选的使用继承的基线生成安装包的流程图;
[0023] 图9是根据本申请实施例三的一种应用的安装包的生成装置的结构框图;
[0024] 图10是根据本申请实施例四的一种应用的安装包的生成装置的结构框图;以及[0025] 图11是根据本申请实施例的一种终端的结构框图。

具体实施方式

[0026] 为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
[0027] 需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0028] 以下实施例中涉及到的名词可以为以下含义:
[0029] 应用的安装包:该应用可以是计算机上的应用,或者是服务器上的应用,也可以是移动终端上的应用。
[0030] 客户端安装包:特指安装于手机的客户端应用软件包。其中android为apk格式文件,iOS为ipa格式文件,或者也可以称为客户端app。
[0031] 工程包:组成应用(例如,客户端app)的某个功能的代码通过编译得到的二进制中间产物。其中android编译成jar包,ios编译成framework。
[0032] 工程包坐标:以工程包名及归类等进行归集,以区分是否是相同用途的工程包。例如,常用的maven管理方式,使用groupId、artifactId定义坐标。
[0033] 工程包基线配置:一组可用的组成应用(例如,客户端app)安装包的工程包列表,随工程包配置的变更向前演进。
[0034] 变更集:当前变更的一个或几个工程包。
[0035] 客户端发布:围绕一个应用(例如,客户端app)版本展开的研发活动。
[0036] 并行开发:共存几个版本的客户端同时进行开发工作。
[0037] 基线继承:使用已有的工程包基线配置作为新的安装包的基线配置,在此基础上进行发展,以此获取到在早先无需变更的工程包。
[0038] 基线更新:开发一定阶段中,将基线配置更新至另一基线配置,以达到部分回滚或获取在其他发布中修改的内容。
[0039] 实施例1
[0040] 根据本申请实施例,提供了一种应用的安装包的生成方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0041] 本申请实施例一所提供的方法实施例可以在计算机设备或者类似的运算装置中执行。这是因为,一般的计算设备均可以进行软件的编译,该计算设备或者运行装置要求安装有开发软件,使开发者可以在这种计算机设备或者运算装置中进行编译,例如,在linux上可以使用GCC进行编译。单个计算设备或运算装置是可以执行编译工作的,例如,这种计算设备可以是现有的计算机,例如,个人电脑PC,或者也可以是服务器。随着技术的发展,当移动终端的计算能力逐渐加强的时候,移动终端也可以充当这种计算设备。计算设备可以基于现有的架构,例如,图1是根据本申请实施例的一种应用的安装包的生成方法的计算机终端的硬件结构框图。如图1所示,计算机终端10可以包括一个或多个处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
[0042] 应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
[0043] 存储器104可用于存储应用软件的软件程序以及模块,如本申请实施例中的应用的安装包的生成方法对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用的安装包的生成方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0044] 传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0045] 上述的计算设备可以是单独的一台设备。随着软件的开发规模的增大,或者是基于安全的考虑,要求一个软件的开发者均在服务器上进行编译,此时,该服务器的硬件结构也可以与上述计算设备或者运算装置相同。即上述计算设备也可以是服务器集群。在目前,云计算已经得到了应用,也可以通过云计算进行编译,即上述计算设备或运算装置也可以是构成云计算平台的基础。
[0046] 在上述运行环境下,本实施例提供了如图2所示的应用的安装包的生成方法。图2是根据本申请实施例一的一种应用的安装包的生成方法的流程图,如图2所示,该流程包括如下步骤:
[0047] 步骤S202,显示一个应用对应的多个工程包,其中,多个工程包中的任意一个均是对应用的一个程序模块进行编译得到的。
[0048] 具体地,在步骤S202中,上述程序模块可以是应用中实现特定功能或者实现特定函数的源代码,针对一个应用,可以按照功能对应用的源代码进行划分,得到多个程序模块,例如,一个即时通讯软件中,可以按照功能划分为以下多个模块:数据加密功能、通信协议处理功能、位置显示功能、文本交互功能、图片处理功能,通讯录管理功能等等。还可以按照不同的函数对应用的源代码进行划分,得到多个程序模块,例如,权限管理函数、通讯函数、数据存储函数等等。用户可以根据实际的需要来进行选择,如何划分程序模块并不影响本申请技术效果的取得。
[0049] 可选的,在对应用安装包的一个或多个模块进行编译打包时,可以有很多种方式,例如,可以使用maven、gradle进行android的编译,又例如,使用cocoapods进行ios编译。编译方式在不同的操作系统上也有多种的编译方式,无论哪种编译方式均可以解决本申请所要解决的问题,并取得相应的技术效果,因此,在此对各种编译方式如何具体执行就不再赘述了。
[0050] 步骤S204,确定从显示的多个工程包中被选择出的一个或多个工程包。
[0051] 步骤S206,接收命令,其中,命令用于指示根据被选择出的一个或多个工程包生成应用对应的安装包。
[0052] 可选的,工程包可以通过应用的程序模块编译得到,安装包可以根据选择的工程包编译生成得到,对工程包的编译和安装包的编译可以是两个不同的编译命令,也可以是相同的编译命令,例如,在Gcc中,进行编译的命令均是gcc-参数,对工程包的编译和安装包的编译对应“参数”是不同的。在其他编译环境中,可以根据实际的需要来使用不同的编辑命令。
[0053] 在一种可选的方案中,可以将应用的源代码进行模块划分,得到程序模块,对每个程序模块进行编译,得到对应的工程包,在生成应用的安装包时,用户可以根据需要,从多个工程包中选择一个或多个工程包,并根据选择出的工程包进行编译,得到应用的安装包。
[0054] 例如,以即时通讯软件的安装包的开发为例进行说明。即时通讯软件可以分为以下多个模块:数据加密功能、通信协议处理功能、位置显示功能、文本交互功能、图片处理功能和通讯录管理功能。在开发即时通讯软件的第一个版本中,可以对应用中的所有程序模块均进行编译,从而得到每个功能对应的工程包。此后,在开发即时通讯软件的第二个版本中,如果仅仅对位置显示功能进行了更新,那么可以将位置显示功能对应的源代码进行编译得到一个新的工程包,然后使用之前的其他功能模块的工程包和新得到的工程包进行编译得到该应用的安装包。这种编译方式相比于完整源代码的编译方式,其仅仅是编译了一个功能模块,其必然提高了编译效率。
[0055] 又例如,在数据加密功能中,其使用了加密函数、压缩函数、数据接收发送函数等等。如果仅仅对加密函数进行了改动,则仅需要对修改后的加密函数进行编译即可,对于其他部分的代码不需要进行重新编译。
[0056] 此处需要说明的是,将应用程序按照功能划分为多个程序模块,还可以屏蔽一些未开发完成的功能,例如,如果仅仅完成了位置显示功能、文本交互功能、通信协议处理功能,此时可以将这三个功能进行编译生成安装包,然后可以进行这些功能的测试。这种编译方式还可以减少未完成或者未成熟代码的进行编译时产生的错误,也能够提高编译效率。
[0057] 由上可知,本申请上述实施例一公开的方案中,显示一个应用对应的多个工程包,确定从显示的多个工程包中被选择出的一个或多个工程包,接收命令,从而实现应用的安装包的生成。
[0058] 容易注意到,由于根据编译命令对一个应用的多个程序模块的源代码分别进行编译,得到每个模块对应的工程包,采用了模块化的编译方式,而不是采用了完整压缩包的编译方式,这样选择进行编译的模块,而不需要进行对全部的源代码进行编译。因此,通过本实施例提供的方案尤其适合多模块及大量代码的安装包构建过程管理,可以达到提升客户端编译效率,降低构建成本,控制产品质量的效果。
[0059] 由此,本申请提供的上述实施例一的方案解决了相关技术中安装包编译效率低的技术问题。
[0060] 可选的,根据本申请上述实施例,步骤S202,显示一个应用对应的多个工程包可以包括如下步骤:
[0061] 步骤S2022,显示一个应用对应的多个程序模块的标识信息,其中,标识信息能够被用户操作。
[0062] 步骤S2024,响应于用户对预定程序模块的标识信息的操作,显示预定程序模块对应的一个或多个工程包,其中,一个或多个工程包使用工程包的属性信息标识,属性信息包括以下至少之一:该工程包的版本号、时间戳。
[0063] 此处需要说明的是,在每一次更新同一个程序模块的源代码之后,对源代码进行编译都会得到一个新的工程包,为了方便对工程包进行管理,以及方便选择用于生成应用的安装包的一个或多个工程包,可以为每个模块对应的工程包设置标识信息。
[0064] 在一种可选的方案中,可以为每个模块对应的工程包设置标识信息,其中,该标识信息用于标识工程包所属的模块,每个模块的不同版本的源代码分别对应一个工程包。这种处理方式,可以标识出不同的工程包隶属于哪个模块。标识方式有很多种,例如,可以使用递增的数据来进行编号;或者,又例如,为了使标识信息更加清晰明确,还可以使用有含义的信息作为标识信息。例如,通信模块对应的工程包的标识信息可以使用tongxun作为其标识信息。每个程序模块的代码可能有很多个版本,每个版本都可能对应一个工程包,由于这些工程包均是一个程序模块对应的工程包,此时,这些工程包的标识信息应该是一致的。
[0065] 在一种可选的方案中,如上所述,每个程序模块的代码可能有很多个版本,每个版本都可能对应一个工程包。为了区分同一个程序模块对应的工程包,在一个可选的实施方式中,还可以为每个工程包设置该工程包的属性信息,例如,属性信息可以包括以下至少之一:该工程包的版本号、时间戳。下面结合例子进行说明,在编译得到每个模块对应的工程包之后,可以以约定版本号加时间戳的格式(如1.0.1.20150330.1502161828),将工程包发布到中间产物仓库,并在中间产物仓库中进行相应的记录,提取工程包的坐标及版本信息作为索引。或者,也可以仅仅以时间戳的方式来进行记录(如20150330.1502161828)。或者也可以仅仅使用版本号来进行记录(如1.0.1)。
[0066] 例如,仍以即时通讯软件的安装包的开发为例进行说明。即时通讯软件可以分为以下多个模块:数据加密功能、通信协议处理功能、位置显示功能、文本交互功能、图片处理功能和通讯录管理功能,并使用数字1、2、3、4、5、6分别表示上述的6个模块对应的工程包,即,数字1表示数据加密功能对应的工程包,数字2表示通信协议处理功能对应的工程包,数字3表示位置显示功能对应的工程包,数字4表示文本交互功能对应的工程包,数字5表示图片处理功能对应的工程包,数字6表示通讯录管理功能对应的工程包。在第二个版本,如1.0.1版本中,只更新了位置显示功能的源代码,可以对更新后的位置显示功能的源代码进行编译,得到位置显示功能对应的工程包,可以为工程包设置标识信息3,设置版本号
1.0.1,即上述工程包可以为工程包3.1.0.1。通过为工程包设置标识信息和属性信息,可以区分即时通讯软件整个开发过程中的每一个工程包,方便工程包的查找和选择。
[0067] 可选的,根据本申请上述实施例,在步骤S204,确定从显示的多个工程包中被选择出的一个或多个工程包之后,上述方法还可以包括如下步骤:
[0068] 在步骤S2042,显示提示信息,其中,提示信息用于提示用户是否保存此次选择出的多个工程包的信息。
[0069] 在步骤S2044,响应于用户执行的保存操作,对选择出的多个工程包的信息赋予标识信息并进行保存。
[0070] 在一个可选的方案中,在用户选择出需要的工程包之后,可以将所有需要的工程包的标识信息以及所有需要的工程包的属性信息组合在一起,并将组合后得到的信息作为该安装包的配置信息进行保存。即,在该可选的方案中,可以将一组工程包的坐标及版本号列表组合起来并进行归档,作为组成一个客户端app的工程包基线配置,并进行数据入库。
[0071] 例如,仍以即时通讯软件的安装包的开发为例进行说明。在即时通讯软件中,选择位置显示功能对应的1.0.3版本的工程包,文本交互功能对应的1.0.2版本的工程包,以及通信协议处理功能对应的1.0.1版本的功能包之后,可以将工程包的标识信息和属性信息组合在一起,即将标识信息3和属性信息1.0.3,标识信息4和属性信息1.0.2,以及标识信息2和属性信息1.0.1组合在一起,生成安装包的基线,包括工程包3.1.0.3,工程包4.1.0.2和工程包2.1.0.1,并进行保存。
[0072] 可选的,根据本申请上述实施例,上述方法还可以包括如下步骤:
[0073] 步骤S212,显示保存的一个或多个标识信息,其中,一个或多个标识信息中的至少之一能够被用户操作。
[0074] 步骤S214,响应于用户对一个或多个标识信息中预定标识信息进行的操作,显示标识信息对应的多个工程包的信息。
[0075] 在一种可选的方案中,在需要生成新的安装包的情况下,用户可以对原安装包对应的一个或多个工程包进行删除,修改,或者添加新的工程包,可以根据删除后、修改后或者添加后的安装包对应的一个或多个工程包,再次编译得到该应用的新的安装包。
[0076] 在一个可选的实施例中,当计算组成新的客户端app的工程包配置时,可以以原有的工程包基线,依据坐标不重复原则,对于坐标重复的配置,覆盖已有的工程包版本,生成一组新的工程包配置列表,进行安装包编译,编译通过时,则生成新的基线配置,并进行数据入库。因此,通过接口依赖进行中间产物(即工程包)的解耦合编译,即编译依赖方法的声明,而非实现,当方法声明无需变更时,其他工程包可以基于当前工程包较早版本的编译产物进行编译。同样的,功能的回滚或删除仅仅是操作对应的一个数据记录,仅需要回滚某个工程包的版本配置,重新编译安装包即可,无需重新由源码进行编译。
[0077] 例如,仍以即时通讯软件的安装包的开发为例进行说明。在通信协议处理功能更新之后,可以对更新后的源代码进行编译得到新版本的工程包,即工程包2.1.0.2,可以获取上一次保存的基线,包括工程包3.1.0.3,工程包4.1.0.2和工程包2.1.0.1,根据工程包的标识信息,确定工程包2.1.0.2相比于上一次工程包2.1.0.1发生变化,可以将工程包2.1.0.2包覆盖工程包2.1.0.1,生成新的基线,包括工程包3.1.0.3,工程包4.1.0.2和工程包2.1.0.2。
[0078] 可选的,根据本申请上述实施例,步骤S214,显示标识信息对应的多个工程包的信息可以包括如下步骤:
[0079] 步骤S2142,显示对标识信息对应的多个工程包中的任意之一进行操作的信息。
[0080] 步骤S2144,响应于用户对标识信息对应的多个工程包中预定工程包进行操作的信息,对预定工程包进行操作,其中,操作包括以下至少之一:删除、替换。
[0081] 在一种可选的方案中,在需要生成新的安装包的情况下,用户可以对原安装包对应的一个或多个工程包进行删除,修改,并根据删除,修改后的安装包对应的一个或多个工程包,再次编译得到应用的新的安装包。
[0082] 例如,仍以即时通讯软件的安装包的开发为例进行说明。在通信协议处理功能更新之后,可以对更新后的源代码进行编译得到新版本的工程包,即工程包2.1.0.2,可以获取上一次保存的基线,包括工程包3.1.0.3,工程包4.1.0.2和工程包2.1.0.1,根据工程包的标识信息,确定工程包2.1.0.2相比于上一次工程包2.1.0.1发生变化,可以将工程包2.1.0.2包覆盖工程包2.1.0.1,生成新的基线,包括工程包3.1.0.3,工程包4.1.0.2和工程包2.1.0.2。
[0083] 可选的,根据本申请上述实施例,步骤S214,显示标识信息对应的多个工程包的信息可以包括如下步骤:
[0084] 步骤S2146,显示添加指示。
[0085] 步骤S2148,响应于用户对添加指示的操作,对标识信息对应的多个工程包中添加工程包。
[0086] 在一种可选的方案中,在需要生成新的安装包的情况下,用户可以往原安装包对应的一个或多个工程包中添加新的工程包,并根据新的安装包对应的一个或多个工程包,再次编译得到应用的新的安装包。
[0087] 例如,仍以即时通讯软件的安装包的开发为例进行说明。在通信协议处理功能更新之后,可以对更新后的源代码进行编译得到新版本的工程包,即工程包2.1.0.2,可以获取上一次保存的基线,包括工程包3.1.0.3和工程包4.1.0.2,根据工程包的标识信息,确定添加工程包2.1.0.2,可以将工程包2.1.0.2添加到之前的两个工程包中,生成新的基线,包括工程包3.1.0.3,工程包4.1.0.2和工程包2.1.0.2。
[0088] 可选的,根据本申请上述实施例,在步骤S2144,对预定工程包进行操作之后,上述方法还可以包括如下步骤:
[0089] 步骤S222,对操作之后的多个工程包的信息赋予新的标识信息并进行保存。
[0090] 在一种可选的方案中,在再次编译得到应用的新的安装包的情况下,可以将新的安装包对应的一个或多个工程包标识新的标识信息,并进行保存。
[0091] 例如,仍以即时通讯软件的安装包的开发为例进行说明。在通信协议处理功能更新之后,可以对更新后的源代码进行编译得到新版本的工程包,即工程包2.1.0.2,可以获取上一次保存的基线,包括工程包3.1.0.3,工程包4.1.0.2和工程包2.1.0.1,根据工程包的标识信息,确定工程包2.1.0.2相比于上一次工程包2.1.0.1发生变化,可以将工程包2.1.0.2包覆盖工程包2.1.0.1,生成新的基线,包括工程包3.1.0.3,工程包4.1.0.2和工程包2.1.0.2。
[0092] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例的方法。
[0093] 实施例2
[0094] 根据本申请实施例,还提供了一种应用的安装包的生成方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0095] 图3是根据本申请实施例二的一种应用的安装包的生成方法的流程图,如图3所示,该流程可以包括如下步骤:
[0096] 步骤S302,根据编译命令对一个应用的多个程序模块(在下文中简称为模块)的源代码分别进行编译,得到每个模块对应的工程包。
[0097] 具体地,在步骤S302中,上述程序模块可以是应用中实现特定功能或者实现特定函数的源代码,针对一个应用,可以按照功能对应用的源代码进行划分,得到多个程序模块,例如,一个即时通讯软件中,可以按照功能划分为以下多个模块:数据加密功能、通信协议处理功能、位置显示功能、文本交互功能、图片处理功能,通讯录管理功能等等。还可以按照不同的函数对应用的源代码进行划分,得到多个程序模块,例如,权限管理函数、通讯函数、数据存储函数等等。用户可以根据实际的需要来进行选择,如何划分程序模块并不影响本申请技术效果的取得。
[0098] 可选的,在对应用安装包的一个或多个模块进行编译打包时,可以有很多种方式,例如,可以使用maven、gradle进行android的编译,又例如,使用cocoapods进行ios编译。编译方式在不同的操作系统上也有多种的编译方式,无论哪种编译方式均可以解决本申请所要解决的问题,并取得相应的技术效果,因此,在此对各种编译方式如何具体执行就不再赘述了。
[0099] 步骤S304,接收从每个程序模块对应的工程包中选择出的一个或多个工程包。
[0100] 步骤S306,根据选择出的一个或多个工程包生成应用对应的安装包。
[0101] 可选的,工程包可以通过应用的程序模块编译得到,安装包可以根据选择的工程包编译生成得到,对工程包的编译和安装包的编译可以是两个不同的编译命令,也可以是相同的编译命令,例如,在Gcc中,进行编译的命令均是gcc-参数,对工程包的编译和安装包的编译对应“参数”是不同的。在其他编译环境中,可以根据实际的需要来使用不同的编辑命令。
[0102] 在一种可选的方案中,可以将应用的源代码进行模块划分,得到程序模块,对每个程序模块进行编译,得到对应的工程包,在生成应用的安装包时,用户可以根据需要,从多个工程包中选择一个或多个工程包,并根据选择出的工程包进行编译,得到应用的安装包。
[0103] 例如,以即时通讯软件的安装包的开发为例进行说明。即时通讯软件可以分为以下多个模块:数据加密功能、通信协议处理功能、位置显示功能、文本交互功能、图片处理功能和通讯录管理功能。在开发即时通讯软件的第一个版本中,可以对应用中的所有程序模块均进行编译,从而得到每个功能对应的工程包。此后,在开发即时通讯软件的第二个版本中,如果仅仅对位置显示功能进行了更新,那么可以将位置显示功能对应的源代码进行编译得到一个新的工程包,然后使用之前的其他功能模块的工程包和新得到的工程包进行编译得到该应用的安装包。这种编译方式相比于完整源代码的编译方式,其仅仅是编译了一个功能模块,其必然提高了编译效率。
[0104] 又例如,在数据加密功能中,其使用了加密函数、压缩函数、数据接收发送函数等等。如果仅仅对加密函数进行了改动,则仅需要对修改后的加密函数进行编译即可,对于其他部分的代码不需要进行重新编译。
[0105] 此处需要说明的是,将应用程序按照功能划分为多个程序模块,还可以屏蔽一些未开发完成的功能,例如,如果仅仅完成了位置显示功能、文本交互功能、通信协议处理功能,此时可以将这三个功能进行编译生成安装包,然后可以进行这些功能的测试。这种编译方式还可以减少未完成或者未成熟代码的进行编译时产生的错误,也能够提高编译效率。
[0106] 由上可知,本申请上述实施例二公开的方案中,根据编译命令对一个应用的多个程序模块的源代码分别进行编译,得到每个模块对应的工程包,接收从每个程序模块对应的工程包中选择出的一个或多个工程包,根据选择出的一个或多个工程包生成应用对应的安装包,从而实现应用的安装包的生成。
[0107] 容易注意到,由于根据编译命令对一个应用的多个程序模块的源代码分别进行编译,得到每个模块对应的工程包,采用了模块化的编译方式,而不是采用了完整压缩包的编译方式,这样选择进行编译的模块,而不需要进行对全部的源代码进行编译。因此,通过本实施例提供的方案尤其适合多模块及大量代码的安装包构建过程管理,可以达到提升客户端编译效率,降低构建成本,控制产品质量的效果。
[0108] 由此,本申请提供的上述实施例二的方案解决了相关技术中安装包编译效率低的技术问题。
[0109] 可选的,根据本申请上述实施例,在步骤S302,得到每个程序模块对应的工程包之后,上述方法还可以包括如下步骤:
[0110] 步骤S312,为每个程序模块对应的工程包设置标识信息,其中,标识信息用于标识工程包所属的程序模块,每个程序模块的不同版本的源代码分别对应一个工程包。
[0111] 此处需要说明的是,在每一次更新同一个程序模块的源代码之后,对源代码进行编译都会得到一个新的工程包,为了方便对工程包进行管理,以及方便选择用于生成应用的安装包的一个或多个工程包,可以为每个模块对应的工程包设置标识信息。
[0112] 在一种可选的方案中,可以为每个模块对应的工程包设置标识信息,其中,该标识信息用于标识工程包所属的模块,每个模块的不同版本的源代码分别对应一个工程包。这种处理方式,可以标识出不同的工程包隶属于哪个模块。标识方式有很多种,例如,可以使用递增的数据来进行编号;或者,又例如,为了使标识信息更加清晰明确,还可以使用有含义的信息作为标识信息。例如,通信模块对应的工程包的标识信息可以使用tongxun作为其标识信息。每个程序模块的代码可能有很多个版本,每个版本都可能对应一个工程包,由于这些工程包均是一个程序模块对应的工程包,此时,这些工程包的标识信息应该是一致的。
[0113] 步骤S314,为每个工程包设置该工程包的属性信息,其中,属性信息包括以下至少之一:该工程包的版本号、时间戳。
[0114] 在一种可选的方案中,如上所述,每个程序模块的代码可能有很多个版本,每个版本都可能对应一个工程包。为了区分同一个程序模块对应的工程包,还可以为每个工程包设置该工程包的属性信息,例如,属性信息可以包括以下至少之一:该工程包的版本号、时间戳。
[0115] 下面结合例子进行说明,在编译得到每个模块对应的工程包之后,可以以约定版本号加时间戳的格式(如1.0.1.20150330.1502161828),将工程包发布到中间产物仓库,并在中间产物仓库中进行相应的记录,提取工程包的坐标及版本信息作为索引。或者,也可以仅仅以时间戳的方式来进行记录(如20150330.1502161828)。或者也可以仅仅使用版本号来进行记录(如1.0.1)。
[0116] 例如,仍以即时通讯软件的安装包的开发为例进行说明。即时通讯软件可以分为以下多个模块:数据加密功能、通信协议处理功能、位置显示功能、文本交互功能、图片处理功能和通讯录管理功能,并使用数字1、2、3、4、5、6分别表示上述的6个模块对应的工程包,即,数字1表示数据加密功能对应的工程包,数字2表示通信协议处理功能对应的工程包,数字3表示位置显示功能对应的工程包,数字4表示文本交互功能对应的工程包,数字5表示图片处理功能对应的工程包,数字6表示通讯录管理功能对应的工程包。在第二个版本,如1.0.1版本中,只更新了位置显示功能的源代码,可以对更新后的位置显示功能的源代码进行编译,得到位置显示功能对应的工程包,可以为工程包设置标识信息3,设置版本号
1.0.1,即上述工程包可以为工程包3.1.0.1。通过为工程包设置标识信息和属性信息,可以区分即时通讯软件整个开发过程中的每一个工程包,方便工程包的查找和选择。
[0117] 可选的,根据本申请上述实施例,步骤S304,接收选择出的一个或多个工程包可以包括如下步骤:
[0118] 步骤S3042,接收选择出的程序模块。
[0119] 步骤S3044,根据工程包的属性信息分别从选择出的程序模块对应的一个或多个工程包中选择出需要的工程包。
[0120] 选择生成安装包的一个或多个工程包的方式很多,在一个可选的实施例中,可以根据需要选择生成安装包需要的模块,并根据工程包的属性信息分别从需要的模块对应的一个或多个工程包中选择需要的工程包。例如,此次的应用安装包仅仅需要对通信协议进行测试,那么,仅仅选择通信协议处理模块对应的工程包进行编译即可。
[0121] 在上述例子中,涉及到中间产物仓库,中间产物仓库可以使用多种的技术来实现。例如,该中间产物仓库可以使用nexus搭建私服作为一种解决方法。若使用该方案,则可以使用maven方式的groupId、artifactId定义,来对工程包的坐标进行指定。在该可选的实施例中,可以依据坐标不重复的原则,得到一组工程包的坐标及版本号列表,生成android的pom.xml等配置文件,ios的Podfile文件,用于编译安装包。对于maven方式定义的坐标,可以根据groupId,artifactId两个的组合不能重复为原则,筛选出需要的工程包。在maven中,使用了groupID和artifactID这两个标识来唯一标识一类工程包,即对于同一个程序模块对应的不同的工程包使用相同的groupID和artifactID来进行标识。这样,通过坐标不重复的原则,可以避免同一个程序模块筛选出多个不同属性信息的工程包,导致安装包编译效率降低。
[0122] 例如,仍以即时通讯软件的安装包的开发为例进行说明。在即时通讯软件中,如果完成了位置显示功能、文本交互功能、通信协议处理功能,为了生成安装包,实现对上述功能的测试,可以选择上述三个模块对应的工程包,其中,位置显示功能包括3个版本的工程包,分别为1.0.1版本的工程包,1.0.2版本的工程包和1.0.3版本的工程包,文本交互功能包括两个版本的工程包,分别为1.0.1版本的工程包和1.0.2版本的工程包,通信协议处理功能包括1个版本的工程包,为1.0.1版本的工程包。可以根据工程包的版本号确定每一个模块对应的需要的工程包,例如,可以选择位置显示功能对应的1.0.3版本的工程包,文本交互功能对应的1.0.2版本的工程包,以及通信协议处理功能对应的1.0.1版本的工程包。
[0123] 通过上述实施例,可以根据工程包的属性信息选择需要的模块对应的工程包,进一步编译得到安装包,无需对整个安装包的源代码进行编译,提升安装包编译效率。
[0124] 可选的,根据本申请上述实施例,在步骤S3044,选择出需要的工程包之后,上述方法还包括:
[0125] 步骤S312,将所有需要的工程包的标识信息以及所有需要的工程包的属性信息组合在一起。
[0126] 步骤S314,将组合后得到的信息作为该安装包的配置信息进行保存。
[0127] 在一个可选的方案中,在用户选择出需要的工程包之后,可以将所有需要的工程包的标识信息以及所有需要的工程包的属性信息组合在一起,并将组合后得到的信息作为该安装包的配置信息进行保存。即,在该可选的方案中,可以将一组工程包的坐标及版本号列表组合起来并进行归档,作为组成一个客户端app的工程包基线配置,并进行数据入库。
[0128] 例如,仍以即时通讯软件的安装包的开发为例进行说明。在即时通讯软件中,选择位置显示功能对应的1.0.3版本的工程包,文本交互功能对应的1.0.2版本的工程包,以及通信协议处理功能对应的1.0.1版本的功能包之后,可以将工程包的标识信息和属性信息组合在一起,即将标识信息3和属性信息1.0.3,标识信息4和属性信息1.0.2,以及标识信息2和属性信息1.0.1组合在一起,生成安装包的基线,包括工程包3.1.0.3,工程包4.1.0.2和工程包2.1.0.1,并进行保存。
[0129] 通过上述实施例,可以通过对工程包进行版本记录,并以配置表的形式,生成最终安装包编译配置,使安装包编译与源代码分离,加速构建。
[0130] 可选的,根据本申请上述实施例,在步骤S306,生成应用对应的安装包之后,上述方法还可以包括如下步骤:
[0131] 步骤S322,在再次生成应用的新的安装包的情况下,获取得到新的安装包对应的一个或多个工程包,其中,新的安装包根据该一个或多个工程包生成。
[0132] 步骤S324,获取之前保存的配置信息。
[0133] 步骤S326,在判断出新的安装包对应的一个或多个工程包的标识信息和/或属性信息相比于之前保存的配置信息发生变化的情况下,生成新的配置信息并保存。
[0134] 在一种可选的方案中,在再次编译得到应用的新的安装包的情况下,可以获取得到新的安装包对应的一个或多个工程包,并获取之前编译得到安装包时所保存的配置信息,然后判断新的安装包对应的一个或多个工程包的标识信息和/或属性信息相比于之前保存的配置信息是否发生变化,在发生变化的情况下,生成新的配置信息并保存。
[0135] 在一个可选的实施例中,当计算组成新的客户端app的工程包配置时,可以以原有的工程包基线,依据坐标不重复原则,对于坐标重复的配置,覆盖已有的工程包版本,生成一组新的工程包配置列表,进行安装包编译,编译通过时,则生成新的基线配置,并进行数据入库。因此,通过接口依赖进行中间产物(即工程包)的解耦合编译,即编译依赖方法的声明,而非实现,当方法声明无需变更时,其他工程包可以基于当前工程包较早版本的编译产物进行编译。同样的,功能的回滚或删除仅仅是操作对应的一个数据记录,仅需要回滚某个工程包的版本配置,重新编译安装包即可,无需重新由源码进行编译。
[0136] 例如,仍以即时通讯软件的安装包的开发为例进行说明。在通信协议处理功能更新之后,可以对更新后的源代码进行编译得到新版本的工程包,即工程包2.1.0.2,可以获取上一次保存的基线,包括工程包3.1.0.3,工程包4.1.0.2和工程包2.1.0.1,根据工程包的标识信息,确定工程包2.1.0.2相比于上一次工程包2.1.0.1发生变化,可以将工程包2.1.0.2包覆盖工程包2.1.0.1,生成新的基线,包括工程包3.1.0.3,工程包4.1.0.2和工程包2.1.0.2。
[0137] 可选的,根据本申请上述实施例,在步骤S326,生成新的配置信息之后,上述方法还可以包括如下步骤:
[0138] 步骤S332,将新的配置信息与之前保存的配置信息进行比较,得到差异,并保存差异的信息。
[0139] 在一个可选的实施例中,在生成新的配置信息之后,可以将新的配置信息与之前保存的配置信息进行比较,得到差异,并保存差异的信息。例如,可以根据工程包坐标及版本组合,生成基线,并根据工程包的版本变化,生成基线演进图,从而记录基线的当前配置及变化过程。
[0140] 图4是根据本申请实施例二的一种可选的基线配置变化的示意图,如图4所示,当当前客户端APP进入开发时,按照设计,共涉及5个工程包,即图4中的工程包1,工程包2,工程包3,工程包4和工程包5,在第一个时间节点,工程包4未开发完成,使用工程包1、工程包2、工程包3、和工程包5进行组装,生成了第一个基线配置,即图4中的基线。随着开发工作的继续,工程包1、工程包4、和工程包5分别更新了版本,再次编译安装包时,得到了基线’(表示新的基线)。开发工作再一次继续,工程包1、工程包2和工程包5分别更新了版本,再次编译安装包时,得到了基线”。因此,基线可以是一组可用的可组成安装包的工程包配置,并且基线配置算式可以为基线’=基线+变更集,基线”=基线’+变更集。因此,可以根据变更集记录工程包的变更过程。通过基线配置,可以根据变更集和已保存的基线,即可编译得到安装包,只需要编译更新后的源代码得到变更集,提升安装包的编译效率,降低安装包的构建成本。
[0141] 为了更加清楚的表示图4,现将图4使用如下表格来进行表示:
[0142] 基线的配置如下(带圆圈的标识选择的工程包):
[0143] 表1
[0144]
[0145]
[0146] 基线’的配置如下(带圆圈的标识选择的工程包):
[0147] 表2
[0148]工程包1 工程包2 工程包3 工程包4 工程包5
1 1 ①   1
② ②   1 ②
3 3   ② 3
4        
[0149] 基线”的配置如下(带圆圈的标识选择的工程包):
[0150] 表3
[0151]工程包1 工程包2 工程包3 工程包4 工程包5
1 1 ①   1
2 2   1 2
3 ③   ② ③
④        
[0152] 通过本可选实施例,可以基线配置对比,得出差量,从而进行重点关注及验证,或者问题回溯。
[0153] 可选的,根据本申请上述实施例,上述属性信息还可以包括:功能完成度,其中,功能完成度可以用于表示该工程包对应的功能所能够达到预期效果的程度,上述方法还可以包括如下步骤:
[0154] 步骤S342,根据选择出一个或多个工程包的功能完成度确定所编译得到的安装包的成熟度,其中,成熟度用于表示该安装包的功能达到预期效果的程度。
[0155] 此处需要说明的是,在生成应用安装包时,可以结合研发过程,根据质量要求的不同,创建多个配置记录的方式,并按照功能模块的维度管理各个阶段。
[0156] 在一个可选的方案中,每个工程包设置的属性信息还可以包括功能完成度,其中,功能完成度用于表示该工程包对应的功能所能够达到预期效果的程度。例如,该工程包可以是测试版本、稳定版本等,测试版本表示了该工程包的功能不够稳定,而稳定版本则表示该工程包的功能是稳定的。又例如,还可以根据该工程包和其他工程包的配合程度来表示该工程包的功能能够达到预期效果的程度,例如A工程包和B工程的接口已经完成,但是和C工程包的接口仍然未完成。
[0157] 在另一种可选的方案中,还可以根据选择出一个或多个工程包的功能完成度确定所编译得到的安装包的成熟度,其中,成熟度用于表示该安装包的功能达到预期效果的程度。例如,如果一个安装包的大部分工程包都是测试状态,那么该应用的安装包也是测试状态,如果只有一两个工程包是测试状态,而其他的大多数工程包都是稳定状态,那么该应用的安装包可以认为是稳定状态,如果所有的工程包都是稳定状态,那么该应用的安装包可以认为是发布状态。
[0158] 通过上述实施例提供的方案,可以在基线管理的基础上,可根据测试验证的程度,划分出多个象限的配置,同时,根据象限定义,也赋予安装包多种类型定义,从而达到控制产品质量的目的。
[0159] 例如,仍以在即时通讯软件的安装包开发为例,对上述方案进行详细说明。在即时通讯软件中,还可以为每个工程包设置功能完成度,设置工程包3.1.0.3的功能完成度为测试,工程包4.1.0.2的功能完成度为测试,工程包2.1.0.2的功能完成度为测试,在生成安装包时,可以根据功能完成度选择需要的工程包,例如,当质量要求不高,可以选择功能完成度为测试的工程包,编译生成安装包,得到的安装包可以是测试安装包,然后进行相应的功能测试。当质量要求比较高时,可以选择功能完成度为可发布的工程包,编译生成安装包。
[0160] 图5是根据本申请实施例二的一种可选的多象限基线配置变化及安装包定义的示意图,如图5所示,定义开发及测试使用的最不稳定的测试基线,需要测试验证通过,可以小范围及公司内部推广测试的RC基线,以及灰度、正式发布使用的Release基线(发布基线)。依据基线配置算式,测试包预打包=RC基线+灰度变更集(灰度状态工程包)+RC变更集+测试变更集+新进开发变更集,测试包=RC基线+灰度变更集(灰度状态工程包)+RC变更集+测试变更集,RC包预打包=RC基线+灰度变更集+RC变更集+RC申请变更集,RC包=RC基线+灰度变更集+RC变更集,灰度包=Release基线+灰度变更集,得出编译安装包的最终配置算法。
[0161] 通过上述实施例提供的方案,可以在基线管理的基础上,可根据测试验证的程度,划分出多个象限的配置,同时,根据象限定义,也赋予安装包多种类型定义,从而达到控制产品质量的目的。
[0162] 下面,结合图6、图7和图8对本申请一种优选的实施例进行详细说明。
[0163] 图6是根据本申请实施例的安装包编译的流程图,如图6所示,该流程可以包括如下步骤S61至步骤S67:
[0164] 步骤S61,对工程包进行编译。
[0165] 可选的,可以将应用的源代码划分为一个或多个模块,并对用于生成安装包的一个或多个模块的源代码进行编译打包,得到每个模块对应的工程包。
[0166] 步骤S62,记录工程包的坐标及版本信息。
[0167] 可选的,将工程包编译以后,可以以约定版本号加时间戳的格式发布到中间产物仓库,并在中间产物仓库中进行记录,并提取工程包的坐标及版本信息作为索引。
[0168] 步骤S63,获取当前基线配置。
[0169] 可选的,可以依据坐标不重复原则,得到一组工程包的坐标及版本信息生成配置文件,得到当前基线配置。
[0170] 步骤S64,组合工程包的坐标及版本信息。
[0171] 可选的,将一组工程包的坐标及版本信息组合在一起并归档,作为组成一个安装包的工程包基线配置,并进行数据入库。
[0172] 步骤S65,对安装包进行编译。
[0173] 可选的,在计算生成安装包的工程包配置时,可以以原有的工程包基线,依据坐标不重复原则,对于坐标重复的配置,覆盖已有的工程版本,生成一组新的工程包配置列表,进行安装包编译。
[0174] 步骤S66,判断安装包编译是否通过。
[0175] 可选的,进行安装包编译,当编译通过时,进入步骤S67;当编译不通过时,返回步骤S61,有可能工程包编译出现错误,需要重新对工程包进行编译。
[0176] 步骤S67,生成新基线。
[0177] 可选的,当编译通过时,生成新的基线配置文件,并进行数据入库。
[0178] 因此,通过版本化管理组成客户端中间产物,提升客户端编译效率,降低构建成本。
[0179] 图7是根据本申请实施例的划分多象限基线配置文件的流程图,如图7所示,结合图6所示的安装包编译方法,该流程可以包括如下步骤S71至步骤S75:
[0180] 步骤S71,对工程包进行打包,得到基本基线配置。
[0181] 可选的,对工程包的某个版本进行编译打包,得到待划分的基线配置。
[0182] 步骤S72,判断基本基线配置是否通过标准1。
[0183] 可选的,可以判断该待划分的基线配置是否通过判断标准1,如果通过判断标准1,则进入步骤S73;如果未通过标准1,则进入步骤S71,重新对工程包进行打包。
[0184] 步骤S73,得到基线配置1。
[0185] 可选的,如果通过判断标准1,则确定该待划分的基线配置为基线配置1。
[0186] 步骤S74,判断基线配置1是否通过标准2。
[0187] 可选的,可以进一步判断该待划分的基线配置是否通过判断标准2,如果通过判断标准2,则进入步骤S75;如果未通过标准1,则进入步骤S71,重新对工程包进行打包。
[0188] 步骤S75,得到基线配置2。
[0189] 可选的,如果通过判断标准2,确定该待划分的基线为基线配置2。
[0190] 通过上述方案,可以根据实际情况,划分为多个层次,通过最终判断标准的配置,则可视为可发布的版本,而通过前几个判断标准的配置,则可视为内部测试或者灰度测试版本。通过上述优选的实施例,结合安装包的测试方法,对某个工程包的某个版本,在二个象限之间升级时,可以进行约束,提升整体质量。
[0191] 图8是根据本申请实施例的使用继承的基线生成安装包的流程图,如图8所示,在多个版本号的安装包并行开发时,该流程可以包括如下步骤S81至步骤S84:
[0192] 步骤S81,基线继承。
[0193] 步骤S82,部分工程包修改。
[0194] 步骤S83,安装包编译。
[0195] 步骤S84,生成新的基线。
[0196] 可选的,在多个版本号的安装包并行开发时,可以通过基线配置的继承,部分工程包修改,进行安装包编译,生成新的基线。通过上述实施例所提供的方案,在多个版本号的客户端并行开发时,可以通过基线配置的继承、更新,获取无需修改的工程包所使用的版本,作为当前发布的一个初始基线配置,结合修改的工程包,组合最终的安装包。
[0197] 需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
[0198] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例的方法。
[0199] 实施例3
[0200] 根据本发明实施例,还提供了一种用于实施上述应用的安装包的生成方法的应用的安装包的生成装置,如图9所示,该装置包括:显示模块91,确定模块93和接收模块95。
[0201] 其中,显示模块91用于显示一个应用对应的多个工程包,其中,多个工程包中的任意一个均是对应用的一个程序模块进行编译得到的;确定模块93用于确定从显示的多个工程包中被选择出的一个或多个工程包;接收模块95用于接收命令,其中,命令用于指示根据被选择出的一个或多个工程包生成应用对应的安装包。
[0202] 具体地,在显示模块91中,上述程序模块可以是应用中实现特定功能或者实现特定函数的源代码,针对一个应用,可以按照功能对应用的源代码进行划分,得到多个程序模块,例如,一个即时通讯软件中,可以按照功能划分为以下多个模块:数据加密功能、通信协议处理功能、位置显示功能、文本交互功能、图片处理功能,通讯录管理功能等等。还可以按照不同的函数对应用的源代码进行划分,得到多个程序模块,例如,权限管理函数、通讯函数、数据存储函数等等。用户可以根据实际的需要来进行选择,如何划分程序模块并不影响本申请技术效果的取得。
[0203] 可选的,在对应用安装包的一个或多个模块进行编译打包时,可以有很多种方式,例如,可以使用maven、gradle进行android的编译,又例如,使用cocoapods进行ios编译。编译方式在不同的操作系统上也有多种的编译方式,无论哪种编译方式均可以解决本申请所要解决的问题,并取得相应的技术效果,因此,在此对各种编译方式如何具体执行就不再赘述了。
[0204] 可选的,工程包可以通过应用的程序模块编译得到,安装包可以根据选择的工程包编译生成得到,对工程包的编译和安装包的编译可以是两个不同的编译命令,也可以是相同的编译命令,例如,在Gcc中,进行编译的命令均是gcc-参数,对工程包的编译和安装包的编译对应“参数”是不同的。在其他编译环境中,可以根据实际的需要来使用不同的编辑命令。
[0205] 此处需要说明的是,将应用程序按照功能划分为多个程序模块,还可以屏蔽一些未开发完成的功能,例如,如果仅仅完成了位置显示功能、文本交互功能、通信协议处理功能,此时可以将这三个功能进行编译生成安装包,然后可以进行这些功能的测试。这种编译方式还可以减少未完成或者未成熟代码的进行编译时产生的错误,也能够提高编译效率。
[0206] 此处需要说明的是,上述步骤中涉及到编译和生成,这可以是两个不同的编译命令,也可以是相同的编译命令,例如,在Gcc中,进行编译的命令均是gcc-参数,第一编译和第二编译对应“参数”是不同的。在其他编译环境中,可以根据实际的需要来使用不同的编辑命令。
[0207] 此处还需要说明的是,上述显示模块91,确定模块93和接收模块95对应于实施例二中的步骤S202至步骤S206,三个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端10中。
[0208] 由上可知,本申请上述实施例三公开的方案中,通过显示模块显示一个应用对应的多个工程包,通过确定模块确定从显示的多个工程包中被选择出的一个或多个工程包,通过接收模块接收命令,从而实现应用的安装包的生成。
[0209] 容易注意到,由于根据编译命令对一个应用的多个程序模块的源代码分别进行编译,得到每个模块对应的工程包,采用了模块化的编译方式,而不是采用了完整压缩包的编译方式,这样选择进行编译的模块,而不需要进行对全部的源代码进行编译。因此,通过本实施例提供的方案尤其适合多模块及大量代码的安装包构建过程管理,可以达到提升客户端编译效率,降低构建成本,控制产品质量的效果。
[0210] 由此,本申请提供的上述实施例三的方案解决了相关技术中安装包编译效率低的技术问题。
[0211] 实施例4
[0212] 根据本发明实施例,还提供了一种用于实施上述应用的安装包的生成方法的应用的安装包的生成装置,如图10所示,该装置包括:编译模块101,接收模块103和生成模块105。
[0213] 其中,编译模块101用于根据编译命令对一个应用的多个程序模块的源代码分别进行编译,得到每个模块对应的工程包;接收模块103用于接收从每个程序模块对应的工程包中选择出的一个或多个工程包;生成模块105用于根据选择出的一个或多个工程包生成应用对应的安装包。
[0214] 具体地,在编译模块101中,上述程序模块可以是应用中实现特定功能或者实现特定函数的源代码,针对一个应用,可以按照功能对应用的源代码进行划分,得到多个程序模块,例如,一个即时通讯软件中,可以分为以下多个模块:数据加密功能、通信协议处理功能、位置显示功能、文本交互功能、图片处理功能,通讯录管理功能等等。还可以按照不同的函数对应用的源代码进行划分,得到多个程序模块,例如,权限管理函数、通讯函数、数据存储函数等等。用户可以根据实际的需要来进行选择,如何划分程序模块并不影响本申请技术效果的取得。
[0215] 可选的,在对应用安装包的一个或多个模块进行编译打包时,可以有很多种方式,例如,可以使用maven、gradle进行android的编译,又例如,使用cocoapods进行ios编译。编译方式在不同的操作系统上也有多种的编译方式,无论哪种编译方式均可以解决本申请所要解决的问题,并取得相应的技术效果,因此,在此对各种编译方式如何具体执行就不再赘述了。
[0216] 可选的,工程包可以通过应用的程序模块编译得到,安装包可以根据选择的工程包编译生成得到,对工程包的编译和安装包的编译可以是两个不同的编译命令,也可以是相同的编译命令,例如,在Gcc中,进行编译的命令均是gcc-参数,对工程包的编译和安装包的编译对应“参数”是不同的。在其他编译环境中,可以根据实际的需要来使用不同的编辑命令。
[0217] 此处需要说明的是,将应用程序按照功能划分为多个程序模块,还可以屏蔽一些未开发完成的功能,例如,如果仅仅完成了位置显示功能、文本交互功能、通信协议处理功能,此时可以将这三个功能进行编译生成安装包,然后可以进行这些功能的测试。这种编译方式还可以减少未完成或者未成熟代码的进行编译时产生的错误,也能够提高编译效率。
[0218] 此处还需要说明的是,上述编译模块101,接收模块103和生成模块105对应于实施例二中的步骤S302至步骤S306,三个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例二所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端10中。
[0219] 由上可知,本申请上述实施例四公开的方案中,通过编译模块根据编译命令对一个应用的多个程序模块的源代码分别进行编译,得到每个模块对应的工程包,通过接收模块接收从每个程序模块对应的工程包中选择出的一个或多个工程包,通过生成模块根据选择出的一个或多个工程包生成应用对应的安装包,从而实现应用的安装包的生成。
[0220] 容易注意到,由于根据编译命令对一个应用的多个程序模块的源代码分别进行编译,得到每个模块对应的工程包,采用了模块化的编译方式,而不是采用了完整压缩包的编译方式,这样选择进行编译的模块,而不需要进行对全部的源代码进行编译。因此,通过本实施例提供的方案尤其适合多模块及大量代码的安装包构建过程管理,可以达到提升客户端编译效率,降低构建成本,控制产品质量的效果。
[0221] 由此,本申请提供的上述实施例四的方案解决了相关技术中安装包编译效率低的技术问题。
[0222] 实施例5
[0223] 本申请的实施例可以提供一种计算机终端,该计算机终端可以是计算机终端群中的任意一个计算机终端设备。可选地,在本实施例中,上述计算机终端也可以替换为移动终端等终端设备。
[0224] 可选地,在本实施例中,上述计算机终端可以位于计算机网络的多个网络设备中的至少一个网络设备。
[0225] 在本实施例中,上述计算机终端可以执行应用的安装包的生成方法中以下步骤的程序代码:显示一个应用对应的多个工程包,其中,多个工程包中的任意一个均是对应用的一个程序模块进行编译得到的;确定从显示的多个工程包中被选择出的一个或多个工程包;接收命令,其中,命令用于指示根据被选择出的一个或多个工程包生成应用对应的安装包。
[0226] 可选地,图11是根据本发明实施例的一种计算机终端的结构框图。如图11所示,该计算机终端A可以包括:一个或多个(图中仅示出一个)处理器111、存储器113、以及传输装置115。
[0227] 其中,存储器可用于存储软件程序以及模块,如本发明实施例中的应用的安装包的生成方法和装置对应的程序指令/模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用的安装包的生成方法。存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至终端A。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0228] 处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:显示一个应用对应的多个工程包,其中,多个工程包中的任意一个均是对应用的一个程序模块进行编译得到的;确定从显示的多个工程包中被选择出的一个或多个工程包;接收命令,其中,命令用于指示根据被选择出的一个或多个工程包生成应用对应的安装包。
[0229] 可选的,上述处理器还可以执行如下步骤的程序代码:显示一个应用对应的多个程序模块的标识信息,其中,标识信息能够被用户操作;响应于用户对预定程序模块的标识信息的操作,显示预定程序模块对应的一个或多个工程包,其中,一个或多个工程包使用工程包的属性信息标识,属性信息包括以下至少之一:该工程包的版本号、时间戳。
[0230] 可选的,上述处理器还可以执行如下步骤的程序代码:在确定从显示的多个工程包中被选择出的一个或多个工程包之后,显示提示信息,其中,提示信息用于提示用户是否保存此次选择出的多个工程包的信息;响应于用户执行的保存操作,对选择出的多个工程包的信息赋予标识信息并进行保存。
[0231] 可选的,上述处理器还可以执行如下步骤的程序代码:显示保存的一个或多个标识信息,其中,一个或多个标识信息中的至少之一能够被用户操作;响应于用户对一个或多个标识信息中预定标识信息进行的操作,显示标识信息对应的多个工程包的信息。
[0232] 可选的,上述处理器还可以执行如下步骤的程序代码:显示对标识信息对应的多个工程包中的任意之一进行操作的信息;响应于用户对标识信息对应的多个工程包中预定工程包进行操作的信息,对预定工程包进行操作,其中,操作包括以下至少之一:删除、替换。
[0233] 可选的,上述处理器还可以执行如下步骤的程序代码:显示添加指示;响应于用户对添加指示的操作,对标识信息对应的多个工程包中添加工程包。
[0234] 可选的,上述处理器还可以执行如下步骤的程序代码:在对预定工程包进行操作之后,对操作之后的多个工程包的信息赋予新的标识信息并进行保存。
[0235] 采用本申请实施例,显示一个应用对应的多个工程包,确定从显示的多个工程包中被选择出的一个或多个工程包,接收命令,从而实现应用的安装包的生成。
[0236] 容易注意到,由于根据编译命令对一个应用的多个程序模块的源代码分别进行编译,得到每个模块对应的工程包,采用了模块化的编译方式,而不是采用了完整压缩包的编译方式,这样选择进行编译的模块,而不需要进行对全部的源代码进行编译。因此,通过本实施例提供的方案尤其适合多模块及大量代码的安装包构建过程管理,可以达到提升客户端编译效率,降低构建成本,控制产品质量的效果。
[0237] 由此,本申请提供的上述实施例的方案解决了相关技术中安装包编译效率低的技术问题。
[0238] 本领域普通技术人员可以理解,图11所示的结构仅为示意,计算机终端也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌声电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图11其并不对上述电子装置的结构造成限定。例如,计算机终端A还可包括比图11中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图11所示不同的配置。
[0239] 本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
[0240] 实施例6
[0241] 本申请的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例一所提供的方法所执行的程序代码。
[0242] 可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
[0243] 可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:显示一个应用对应的多个工程包,其中,多个工程包中的任意一个均是对应用的一个程序模块进行编译得到的;确定从显示的多个工程包中被选择出的一个或多个工程包;接收命令,其中,命令用于指示根据被选择出的一个或多个工程包生成应用对应的安装包。
[0244] 可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:显示一个应用对应的多个程序模块的标识信息,其中,标识信息能够被用户操作;响应于用户对预定程序模块的标识信息的操作,显示预定程序模块对应的一个或多个工程包,其中,一个或多个工程包使用工程包的属性信息标识,属性信息包括以下至少之一:该工程包的版本号、时间戳。
[0245] 可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在确定从显示的多个工程包中被选择出的一个或多个工程包之后,显示提示信息,其中,提示信息用于提示用户是否保存此次选择出的多个工程包的信息;响应于用户执行的保存操作,对选择出的多个工程包的信息赋予标识信息并进行保存。
[0246] 可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:显示保存的一个或多个标识信息,其中,一个或多个标识信息中的至少之一能够被用户操作;响应于用户对一个或多个标识信息中预定标识信息进行的操作,显示标识信息对应的多个工程包的信息。
[0247] 可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:显示对标识信息对应的多个工程包中的任意之一进行操作的信息;响应于用户对标识信息对应的多个工程包中预定工程包进行操作的信息,对预定工程包进行操作,其中,操作包括以下至少之一:删除、替换。
[0248] 可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:显示添加指示;响应于用户对添加指示的操作,对标识信息对应的多个工程包中添加工程包。
[0249] 可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在对预定工程包进行操作之后,对操作之后的多个工程包的信息赋予新的标识信息并进行保存。
[0250] 上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
[0251] 在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0252] 在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
[0253] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0254] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0255] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0256] 以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。