CN105843662A - 一种软件产品编译方法及设备 - Google Patents
一种软件产品编译方法及设备 Download PDFInfo
- Publication number
- CN105843662A CN105843662A CN201610182066.6A CN201610182066A CN105843662A CN 105843662 A CN105843662 A CN 105843662A CN 201610182066 A CN201610182066 A CN 201610182066A CN 105843662 A CN105843662 A CN 105843662A
- Authority
- CN
- China
- Prior art keywords
- code
- compiled
- previous version
- module
- compiling
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/48—Incremental compilation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及计算机技术领域,公开了一种软件产品编译方法及设备,其可大大提高编译效率。为了实现上述目的,本发明提供一种软件产品编译方法,该方法包括:接收待编译代码;将该待编译代码与该待编译代码所对应的之前编译过的前一版本的代码进行比对;以及根据比对结果,确定是否对所述待编译代码进行编译。
Description
技术领域
本发明涉及计算机技术领域,具体地,涉及一种软件产品编译方法及设备。
背景技术
软件产品的产生一般会经历需求阶段、研发阶段以及发布阶段。需求阶段主要涉及产品需求确定、需求可行性分析、UI设计等等;研发阶段主要涉及软件产品开发及测试;发布阶段主要涉及对测试通过的代码进行编译发版以及后期进行升级及运营维护。
对于一些大型软件企业而言,其软件产品往往是很多的,且同一款软件产品还需针对不同国家、地区、运营商制定不同的版本,每隔一定的时间周期就需要对这些软件产品进行升级,因此其编译服务器每天晚上可能需要针对这些软件产品的上百套代码进行编译,从而编译出上百软件版本,并将该软件版本存放入共享服务器以进行发版。由于每套代码的编译都需要占用编译服务器大量的时间及资源,而对如此多套代码进行编译会使得编译服务器的负荷非常大,有时可能难以满足软件企业在时间上的要求。
发明内容
本发明的目的是提供一种软件产品编译方法及设备,其可大大提高编译效率。
为了实现上述目的,本发明提供一种软件产品编译方法,该方法包括:接收待编译代码;将该待编译代码与该待编译代码所对应的之前编译过的前一版本的代码进行比对;以及根据比对结果,确定是否对所述待编译代码进行编译。
其中,所述将该待编译代码与该待编译代码所对应的之前编译过的前一版本的代码进行比对可包含:提取所述待编译代码的清单文件以及该待编译代码所对应的之前编译过的前一版本的代码的清单文件;对所提取的所述两个清单文件进行比对;以及在两者相同的情况下,确定所述待编译代码该待编译代码所对应的之前编译过的前一版本的代码无差异,否则确定存在差异。
其中,该方法还包括:在所述待编译代码与该待编译代码所对应的之前编译过的前一版本的代码相同且该前一版本的代码编译成功的情况下,不对所述待编译代码进行编译,直接取所述前一版本的代码的编译结果作为该待编译代码的编译结果;或在所述待编译代码与该待编译代码所对应的之前编译过的前一版本的代码不同或者该前一版本的代码编译失败的情况下,对所述待编译代码进行编译。
其中,所述待编译代码包含公共侧代码及私有侧代码,所述对所述待编译代码进行编译包括:对所述公共侧代码进行编译;以及针对所述私有侧代码内的每一模块的代码,确定该模块的代码是否与所述前一版本的代码内该模块的代码相同,在两者相同且所述前一版本的代码内该模块的代码编译成功的情况下,取所述前一版本的代码内该模块的代码的编译结果作为待编译代码内该模块的代码的编译结果,否则对待编译代码内该模块的代码进行编译。
相应地,本发明还提供一种软件产品编译设备,该设备包括:接收装置,用于接收待编译代码;比对装置,用于将该待编译代码与该待编译代码所对应的之前编译过的前一版本的代码进行比对;以及编译装置,用于根据比对结果,确定是否对所述待编译代码进行编译。
其中,所述比对装置包含:清单文件提取装置,用于提取所述待编译代码的清单文件以及该待编译代码所对应的之前编译过的前一版本的代码的清单文件;清单文件比对装置,用于对所提取的所述两个清单文件进行比对;以及代码差异判定装置,用于在两者相同的情况下,确定所述待编译代码该待编译代码所对应的之前编译过的前一版本的代码无差异,否则确定存在差异。
其中,所述编译装置用于执行以下操作:在所述待编译代码与该待编译代码所对应的之前编译过的前一版本的代码相同且该前一版本的代码编译成功的情况下,不对所述待编译代码进行编译,直接取所述前一版本的代码的编译结果作为该待编译代码的编译结果;或在所述待编译代码与该待编译代码所对应的之前编译过的前一版本的代码不同或者该前一版本的代码编译失败的情况下,对所述待编译代码进行编译。
其中,所述待编译代码包含公共侧代码及私有侧代码,所述编译装置包括:公共侧代码编译装置,用于对所述公共侧代码进行编译;以及私有侧代码编译装置,用于针对所述私有侧代码内的每一模块的代码,确定该模块的代码是否与所述前一版本的代码内该模块的代码相同,在两者相同且所述前一版本的代码内该模块的代码编译成功的情况下,取所述前一版本的代码内该模块的代码的编译结果作为待编译代码内该模块的代码的编译结果,否则对待编译代码内该模块的代码进行编译。
通过上述技术方案,可在对待编译代码进行编译之前,对该待进行代码与该待编译代码所对应的之前编译过的前一版本的代码进行比对比来减少重复编译,提高编译效率。
本发明的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本发明的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明,但并不构成对本发明的限制。在附图中:
图1为本发明提供的软件产品编译方法的流程图;
图2为待编译代码的结构示意图;
图3为本发明提供的软件产品编译方法的另一实施方式的流程图;
图4为本发明提供的软件产品编译设备的结构示意图;以及
图5为本发明提供的软件产品编译设备的另一实施方式的结构示意图。
附图标记说明
100 接收装置 200 比对装置
210 清单文件提取装置 220 清单文件比对装置,
230 代码差异判定装置 300 编译装置
310 公共侧代码编译装置 320 私有侧代码编译装置
具体实施方式
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
本申请的发明人发现,很多情况下,编译服务器所编译的代码相比于该代码所对应的之前编译过的前一版本的代码并未发生什么变化,而在代码并未发生变化的情况下对其进行编译是没有必要的,浪费了很多编译服务器的时间和资源,而且将编译出来的软件版本存放入共享服务器还会额外的占用共享服务器的资源。基于此发现,本申请的发明人作出了本发明。
图1为本发明提供的软件产品编译方法的流程图。如图1所示,本发明提供一种软件产品编译方法,该方法包括:接收待编译代码;将该待编译代码与该待编译代码所对应的之前编译过的前一版本的代码进行比对;以及根据比对结果,确定是否对所述待编译代码进行编译。
具体而言,所述将该待编译代码与该待编译代码所对应的之前编译过的前一版本的代码进行比对可通过清单文件(例如,清单文件AndroidManifest.xml,它定义了有关代码的一些非常重要的信息。Android系统需要这些信息才能正常运行根据该待编译代码所生成的软件产品)比对来实现,该比对步骤可包含:提取所述待编译代码的清单文件以及该待编译代码所对应的之前编译过的前一版本的代码的清单文件;对所提取的所述两个清单文件进行比对;以及在两者相同的情况下,确定所述待编译代码该待编译代码所对应的之前编译过的前一版本的代码无差异,否则确定存在差异。当然,本发明并不限于此,亦可直接通过对该两类代码进行比对完成比对工作。需要说明的是,无论是清单文件的比对还是直接进行代码比对,所消耗的资源及时间均远低于直接对带编码源代码进行编译所消耗的资源及时间。
在所述待编译代码与该待编译代码所对应的之前编译过的前一版本的代码相同且该前一版本的代码编译成功的情况下,不对所述待编译代码进行编译,直接取所述前一版本的代码的编译结果作为该待编译代码的编译结果;在所述待编译代码与该待编译代码所对应的之前编译过的前一版本的代码不同或者该前一版本的代码编译失败(如果之前的代码的编译结果为失败,则仍有进行编译的必要,因为上次失败可能是由于不适当的编译环境造成的,而本次编译可能编译环境已得到了改善,存在编译成功的可能性)的情况下,对所述待编译代码进行编译。
以下以手机应用软件产品为例对本发明进行说明。
图2为待编译代码的结构示意图。如图2所示,所示待编译代码可包含公共侧代码(AP)及私有侧代码(BP),其中运行在Application Processor(AP)的软件包称为AP包,包括操作系统、用户界面和应用程序等,与Baseband Processor(BP)相关的软件包称为BP包,包括基带调制解调器的通信控制软件等。所述私有侧代码(BP)内又含有针对各个模块(例如,信号调制、编码、射频位移等)的代码,针对各个模块的BP代码于图2中被表示为BP1、BP2、BP3、…、BPn。
图3为本发明提供的软件产品编译方法的另一实施方式的流程图。如图3所示,针对所述手机应用软件产品的待编译代码,本发明上述的对所述待编译代码进行编译的步骤可包括:对所述公共侧代码进行编译;以及针对所述私有侧代码内的每一模块的代码,确定该模块的代码是否与所述前一版本的代码内该模块的代码相同,在两者相同且所述前一版本的代码内该模块的代码编译成功的情况下,取所述前一版本的代码内该模块的代码的编译结果作为待编译代码内该模块的代码的编译结果;在该模块的代码与所述前一版本的代码内该模块的代码不同或所述前一版本的代码编译失败的情况下,对所述待编译代码内该模块的代码进行编译。如此遍历所述待编译代码的BP部分的每一模块,最终将所述公共侧代码及私有侧代码的编译结果合并以形成所述待编译代码的编译结果。藉此,可进一步对待编译代码进行细分,以在确定需要对待编译代码进行编译的情况下,避免对具有相同代码的模块进行编译,以进一步节省编译所消耗的资源及时间。
图4为本发明提供的软件产品编译设备的结构示意图。如图4所示,相应地,本发明还提供一种软件产品编译设备,该设备包括:接收装置100,用于接收待编译代码;比对装置200,用于将该待编译代码与该待编译代码所对应的之前编译过的前一版本的代码进行比对;以及编译装置300,用于根据比对结果,确定是否对所述待编译代码进行编译。
其中,所述比对装置包含:清单文件提取装置210,用于提取所述待编译代码的清单文件以及该待编译代码所对应的之前编译过的前一版本的代码的清单文件;清单文件比对装置220,用于对所提取的所述两个清单文件进行比对;以及代码差异判定装置230,用于在两者相同的情况下,确定所述待编译代码该待编译代码所对应的之前编译过的前一版本的代码无差异,否则确定存在差异。
其中,所述编译装置300在所述待编译代码与该待编译代码所对应的之前编译过的前一版本的代码相同且该前一版本的代码编译成功的情况下,不对所述待编译代码进行编译,直接取所述前一版本的代码的编译结果作为该待编译代码的编译结果;或在所述待编译代码与该待编译代码所对应的之前编译过的前一版本的代码不同或者该前一版本的代码编译失败的情况下,对所述待编译代码进行编译。
其中,所述待编译代码可包含公共侧代码及私有侧代码。图5为本发明提供的软件产品编译设备的另一实施方式的结构示意图,如图5所示,所述编译装置300包括:公共侧代码编译装置310,用于对所述公共侧代码进行编译;以及私有侧代码编译装置320,用于针对所述私有侧代码内的每一模块的代码,确定该模块的代码是否与所述前一版本的代码内该模块的代码相同,在两者相同且所述前一版本的代码内该模块的代码编译成功的情况下,取所述前一版本的代码内该模块的代码的编译结果作为待编译代码内该模块的代码的编译结果,否则对待编译代码内该模块的代码进行编译。
有关本发明所提供的软件产品编译设备具体细节及益处,可参阅以上针对本发明所提供的软件产品编译方法的描述,于此不再赘述。
通过本发明,可在对待编译代码进行编译之前,对该待进行代码与该待编译代码所对应的之前编译过的前一版本的代码进行比对比来减少重复编译,提高编译效率。
以上结合附图详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型,这些简单变型均属于本发明的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。
此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明的思想,其同样应当视为本发明所公开的内容。
Claims (10)
1.一种软件产品编译方法,该方法包括:
接收待编译代码;
将该待编译代码与该待编译代码所对应的之前编译过的前一版本的代码进行比对;以及
根据比对结果,确定是否对所述待编译代码进行编译。
2.根据权利要求1所述的方法,其特征在于,所述将该待编译代码与该待编译代码所对应的之前编译过的前一版本的代码进行比对包含:
提取所述待编译代码的清单文件以及该待编译代码所对应的之前编译过的前一版本的代码的清单文件;
对所提取的所述两个清单文件进行比对;以及
在两者相同的情况下,确定所述待编译代码该待编译代码所对应的之前编译过的前一版本的代码无差异,否则确定存在差异。
3.根据权利要求1或2所述的方法,其特征在于,该方法还包括:
在所述待编译代码与该待编译代码所对应的之前编译过的前一版本的代码相同且该前一版本的代码编译成功的情况下,不对所述待编译代码进行编译,直接取所述前一版本的代码的编译结果作为该待编译代码的编译结果;或
在所述待编译代码与该待编译代码所对应的之前编译过的前一版本的代码不同或者该前一版本的代码编译失败的情况下,对所述待编译代码进行编译。
4.根据权利要求3所述的方法,其特征在于,所述待编译代码包含公共侧代码及私有侧代码。
5.根据权利要求4所述的方法,其特征在于,所述对所述待编译代码进行编译包括:
对所述公共侧代码进行编译;以及
针对所述私有侧代码内的每一模块的代码,确定该模块的代码是否与所述前一版本的代码内该模块的代码相同,在两者相同且所述前一版本的代码内该模块的代码编译成功的情况下,取所述前一版本的代码内该模块的代码的编译结果作为待编译代码内该模块的代码的编译结果,否则对待编译代码内该模块的代码进行编译。
6.一种软件产品编译设备,其特征在于,该设备包括:
接收装置,用于接收待编译代码;
比对装置,用于将该待编译代码与该待编译代码所对应的之前编译过的前一版本的代码进行比对;以及
编译装置,用于根据比对结果,确定是否对所述待编译代码进行编译。
7.根据权利要求6所述的设备,其特征在于,所述比对装置包含:
清单文件提取装置,用于提取所述待编译代码的清单文件以及该待编译代码所对应的之前编译过的前一版本的代码的清单文件;
清单文件比对装置,用于对所提取的所述两个清单文件进行比对;以及
代码差异判定装置,用于在两者相同的情况下,确定所述待编译代码该待编译代码所对应的之前编译过的前一版本的代码无差异,否则确定存在差异。
8.根据权利要求6或7所述的设备,其特征在于,所述编译装置用于执行以下操作:
在所述待编译代码与该待编译代码所对应的之前编译过的前一版本的代码相同且该前一版本的代码编译成功的情况下,不对所述待编译代码进行编译,直接取所述前一版本的代码的编译结果作为该待编译代码的编译结果;或
在所述待编译代码与该待编译代码所对应的之前编译过的前一版本的代码不同或者该前一版本的代码编译失败的情况下,对所述待编译代码进行编译。
9.根据权利要求8所述的设备,其特征在于,所述待编译代码包含公共侧代码及私有侧代码。
10.根据权利要求9所述的设备,其特征在于,所述编译装置包括:
公共侧代码编译装置,用于对所述公共侧代码进行编译;以及
私有侧代码编译装置,用于针对所述私有侧代码内的每一模块的代码,确定该模块的代码是否与所述前一版本的代码内该模块的代码相同,在两者相同且所述前一版本的代码内该模块的代码编译成功的情况下,取所述前一版本的代码内该模块的代码的编译结果作为待编译代码内该模块的代码的编译结果,否则对待编译代码内该模块的代码进行编译。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610182066.6A CN105843662A (zh) | 2016-03-28 | 2016-03-28 | 一种软件产品编译方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610182066.6A CN105843662A (zh) | 2016-03-28 | 2016-03-28 | 一种软件产品编译方法及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105843662A true CN105843662A (zh) | 2016-08-10 |
Family
ID=56584777
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610182066.6A Pending CN105843662A (zh) | 2016-03-28 | 2016-03-28 | 一种软件产品编译方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105843662A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106293849A (zh) * | 2016-08-18 | 2017-01-04 | 华为技术有限公司 | 一种应用更新方法和终端 |
CN106445627A (zh) * | 2016-10-14 | 2017-02-22 | 郑州云海信息技术有限公司 | 一种代码集成编译中问题定位的方法及装置 |
CN106547548A (zh) * | 2016-10-19 | 2017-03-29 | 青岛海信电器股份有限公司 | 一种软件版本的编译方法和装置 |
CN107247614A (zh) * | 2017-05-16 | 2017-10-13 | 四川长虹电器股份有限公司 | 在软件编译时检查应用信息的方法 |
CN109918082A (zh) * | 2019-03-06 | 2019-06-21 | 驿涛科技股份有限公司 | 软件开发的编译系统及方法 |
CN111984264A (zh) * | 2020-07-24 | 2020-11-24 | 五八有限公司 | 一种静态库的生成方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110231178A1 (en) * | 2010-03-22 | 2011-09-22 | International Business Machines Corporation | Modeling and generating computer software product line variants |
CN102508660A (zh) * | 2011-10-26 | 2012-06-20 | 青岛海信宽带多媒体技术有限公司 | 可执行文件的生成方法及生成装置 |
CN104077217A (zh) * | 2013-03-28 | 2014-10-01 | 腾讯科技(深圳)有限公司 | 代码文件的编译发布方法及系统 |
CN104573526A (zh) * | 2014-12-25 | 2015-04-29 | 百度在线网络技术(北京)有限公司 | 软件产品多版本管理方法、装置以及计算机设备 |
-
2016
- 2016-03-28 CN CN201610182066.6A patent/CN105843662A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110231178A1 (en) * | 2010-03-22 | 2011-09-22 | International Business Machines Corporation | Modeling and generating computer software product line variants |
CN102508660A (zh) * | 2011-10-26 | 2012-06-20 | 青岛海信宽带多媒体技术有限公司 | 可执行文件的生成方法及生成装置 |
CN104077217A (zh) * | 2013-03-28 | 2014-10-01 | 腾讯科技(深圳)有限公司 | 代码文件的编译发布方法及系统 |
CN104573526A (zh) * | 2014-12-25 | 2015-04-29 | 百度在线网络技术(北京)有限公司 | 软件产品多版本管理方法、装置以及计算机设备 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106293849A (zh) * | 2016-08-18 | 2017-01-04 | 华为技术有限公司 | 一种应用更新方法和终端 |
CN106293849B (zh) * | 2016-08-18 | 2020-01-31 | 华为技术有限公司 | 一种应用更新方法和终端 |
CN106445627A (zh) * | 2016-10-14 | 2017-02-22 | 郑州云海信息技术有限公司 | 一种代码集成编译中问题定位的方法及装置 |
CN106547548A (zh) * | 2016-10-19 | 2017-03-29 | 青岛海信电器股份有限公司 | 一种软件版本的编译方法和装置 |
CN107247614A (zh) * | 2017-05-16 | 2017-10-13 | 四川长虹电器股份有限公司 | 在软件编译时检查应用信息的方法 |
CN109918082A (zh) * | 2019-03-06 | 2019-06-21 | 驿涛科技股份有限公司 | 软件开发的编译系统及方法 |
CN109918082B (zh) * | 2019-03-06 | 2022-02-22 | 驿涛科技股份有限公司 | 软件开发的编译系统及方法 |
CN111984264A (zh) * | 2020-07-24 | 2020-11-24 | 五八有限公司 | 一种静态库的生成方法和装置 |
CN111984264B (zh) * | 2020-07-24 | 2021-11-16 | 五八有限公司 | 一种静态库的生成方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105843662A (zh) | 一种软件产品编译方法及设备 | |
CN103218294B (zh) | 一种嵌入式系统的调试方法、调试转换装置和系统 | |
CN101841515B (zh) | 可变目标的协议数据单元编解码代码自动生成的实现方法 | |
CN109426516A (zh) | 软件版本管理方法及装置 | |
CN107168749A (zh) | 一种编译方法、装置、设备和计算机可读存储介质 | |
US9182953B2 (en) | Hybrid dynamic code compiling device, method, and service system thereof | |
US10380329B2 (en) | Method and apparatus for preventing application from being deciphered | |
CN106681718A (zh) | 一种基于工具集的桌面端插件框架及实现方法 | |
CN101553779B (zh) | 将主机系统应用程序转换为开放系统应用程序的转换装置和方法 | |
CN104461516A (zh) | 一种数据处理方法和装置 | |
CN104391793A (zh) | 测试步骤及测试脚本生成方法及装置 | |
CN103914287A (zh) | 基于插件机制的软件系统及其实现方法 | |
CN110059456A (zh) | 代码保护方法、代码保护装置、存储介质与电子设备 | |
CN104572238A (zh) | 一种高效的生成可执行软件包的方法及系统 | |
CN110688096A (zh) | 包含插件的应用程序的构建方法、装置、介质及电子设备 | |
CN112269566A (zh) | 脚本生成处理方法、装置、设备及系统 | |
Al Ishtiaq et al. | Hermes: Unlocking security analysis of cellular network protocols by synthesizing finite state machines from natural language specifications | |
CN103984539A (zh) | 一种家电设备运行方法及系统 | |
CN101727347A (zh) | 一种完成软件构建的方法及系统 | |
CN109509467B (zh) | 代码生成方法及装置 | |
CN104424173B (zh) | 排版界面布局方法及装置 | |
CN103593190A (zh) | 应用程序处理方法及装置 | |
CN110825452A (zh) | 一种多云管理的云服务适配模块管理方法 | |
US20150378693A1 (en) | Compiling nested relational algebras with multiple intermediate representations | |
CN114416103A (zh) | 代码编译方法及装置、计算机可读介质、电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160810 |