CN112114814A - 编译文件确定方法及装置、应用程序生成方法及装置 - Google Patents
编译文件确定方法及装置、应用程序生成方法及装置 Download PDFInfo
- Publication number
- CN112114814A CN112114814A CN202011003129.XA CN202011003129A CN112114814A CN 112114814 A CN112114814 A CN 112114814A CN 202011003129 A CN202011003129 A CN 202011003129A CN 112114814 A CN112114814 A CN 112114814A
- Authority
- CN
- China
- Prior art keywords
- compiled
- target
- file
- source code
- compiled file
- 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
- 238000000034 method Methods 0.000 title claims abstract description 67
- 230000003068 static effect Effects 0.000 claims abstract description 253
- 230000010354 integration Effects 0.000 claims description 18
- 238000011161 development Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 7
- 238000004806 packaging method and process Methods 0.000 description 6
- 238000005457 optimization Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000005236 sound signal Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Images
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Abstract
本公开涉及一种编译文件确定方法及装置、应用程序生成方法及装置。该编译文件确定方法包括:获取目标应用程序对应的目标配置文件,目标配置文件中包括对应的目标源码;在预设的静态库中查找目标源码对应的编译文件,若目标源码中的部分源码在静态库中存在对应的编译文件,则将对应的编译文件确定为第一编译文件;若目标源码中的部分源码在静态库中不存在对应的编译文件,则对目标源码在静态库中不存在对应的编译文件的部分源码进行编译,得到第二编译文件;合并第一编译文件和第二编译文件,得到目标配置文件对应的目标编译文件。该方法可以在不经编译的情况下直接获取目标源码中的部分源码对应的第一编译文件,节省大量的编译时间,快速获取目标编译文件。
Description
技术领域
本公开涉及软件开发技术领域,尤其涉及一种编译文件确定方法及装置、应用程序生成方法及装置。
背景技术
随着软件开发技术的不断发展,超级应用程序(Application,APP)逐渐成为大型企业的标配。超级APP一般可以在一款APP中集成多种功能,以满足不同的用户需求,因此超级APP一般也拥有庞大的用户数,是用户手机上“装机必备”的基础应用。正是由于超级APP可以在一款APP中集成多种功能,使得超级APP对应的代码量较大,在超级APP的开发、调试和打包测试的过程中,获取相应编译文件时往往需要进行全量编译,获取编译文件的时间非常的长,编译慢的问题越来越严重。
对于如何快速获取编译文件,传统方法中一般是通过优化工程配置、优化头文件搜索路径、使用编译器缓存(compiler cache,CCache)、使用分布式编译工具等方式来提高文件编译速度。
然而,上述快速获取编译文件的传统方法中,通过优化工程配置、优化头文件搜索路径的方法,一般是针对特定的工程文件进行的特定设计,不具备普适性;而当代码量很高的情况下,通过使用编译器缓存、使用分布式编译工具的方法,也无法完全解决编译速度慢的问题,无法快速获取编译文件。
发明内容
本公开提供一种编译文件确定方法及装置、应用程序生成方法及装置,以至少解决相关技术中无法快速获取编译文件的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种编译文件确定方法,包括:
获取目标应用程序对应的目标配置文件,所述目标配置文件中包括对应的目标源码;
在预设的静态库中查找所述目标源码对应的编译文件,若所述目标源码中的部分源码在所述静态库中存在对应的编译文件,则将所述对应的编译文件确定为第一编译文件;其中,所述静态库中存储有对源码进行编译得到的编译文件;
若所述目标源码中的部分源码在所述静态库中不存在对应的编译文件,则对所述目标源码在所述静态库中不存在对应的编译文件的部分源码进行编译,得到第二编译文件;
合并所述第一编译文件和所述第二编译文件,得到所述目标配置文件对应的目标编译文件。
在一示例性实施例中,所述静态库的集成方式,包括:
获取源码库;其中,所述源码库中存储有根据预设需求编写的源码;
编译所述源码库中的源码,得到所述源码库中的每一源码对应的编译文件;
按照预设存储路径存储所述编译文件,得到所述静态库。
在一示例性实施例中,所述静态库包括本地静态库和远程静态库;
所述在预设的静态库中查找所述目标源码对应的编译文件,若所述目标源码中的部分源码在所述静态库中存在对应的编译文件,则将所述对应的编译文件确定为第一编译文件,包括:
从所述本地静态库中查找所述目标源码中的部分源码对应的编译文件,得到所述第一编译文件;
若所述本地静态库中不存在对应的编译文件,则从所述远程静态库中查找所述目标源码中的部分源码对应的编译文件,得到所述第一编译文件。
在一示例性实施例中,所述在预设的静态库中查找所述目标源码对应的编译文件,若所述目标源码中的部分源码在所述静态库中存在对应的编译文件,则将所述对应的编译文件确定为第一编译文件,包括:
解析所述目标配置文件,得到所述目标源码和对应的目标源码标识;
按照所述目标源码标识,查找所述静态库中的编译文件对应的源码;
若所述目标源码与所述编译文件对应的源码一致,则将所述编译文件确定为所述第一编译文件。
在一示例性实施例中,所述若所述目标源码与所述编译文件对应的源码一致,则将所述编译文件确定为所述第一编译文件之前,包括:
获取所述目标源码的第一信息摘要算法值和所述编译文件对应的源码的第二信息摘要算法值;
比较所述第一信息摘要算法值和所述第二信息摘要算法值,若所述第一信息摘要算法值和所述第二信息摘要算法值相同,则判定所述目标源码与所述编译文件对应的源码一致。
根据本公开实施例的第二方面,提供一种应用程序生成方法,包括:
获取目标应用程序对应的目标配置文件,所述目标配置文件中包括对应的目标源码;
在预设的静态库中查找所述目标源码对应的编译文件,若所述目标源码中的部分源码在所述静态库中存在对应的编译文件,则将所述对应的编译文件确定为第一编译文件;其中,所述静态库中存储有对源码进行编译得到的编译文件;
若所述目标源码中的部分源码在所述静态库中不存在对应的编译文件,则对所述目标源码在所述静态库中不存在对应的编译文件的部分源码进行编译,得到第二编译文件;
合并所述第一编译文件和所述第二编译文件,得到所述目标配置文件对应的目标编译文件;
对所述目标编译文件进行集成,得到所述目标配置文件对应的目标应用程序。
在一示例性实施例中,所述静态库的集成方式,包括:
获取源码库;其中,所述源码库中存储有根据预设需求编写的源码;
编译所述源码库中的源码,得到所述源码库中的每一源码对应的编译文件;
按照预设存储路径存储所述编译文件,得到所述静态库。
在一示例性实施例中,所述静态库包括本地静态库和远程静态库;
所述在预设的静态库中查找所述目标源码对应的编译文件,若所述目标源码中的部分源码在所述静态库中存在对应的编译文件,则将所述对应的编译文件确定为第一编译文件,包括:
从所述本地静态库中查找所述目标源码中的部分源码对应的编译文件,得到所述第一编译文件;
若所述本地静态库中不存在对应的编译文件,则从所述远程静态库中查找所述目标源码中的部分源码对应的编译文件,得到所述第一编译文件。
在一示例性实施例中,所述在预设的静态库中查找所述目标源码对应的编译文件,若所述目标源码中的部分源码在所述静态库中存在对应的编译文件,则将所述对应的编译文件确定为第一编译文件,包括:
解析所述目标配置文件,得到所述目标源码和对应的目标源码标识;
按照所述目标源码标识,查找所述静态库中的编译文件对应的源码;
若所述目标源码与所述编译文件对应的源码一致,则将所述编译文件确定为所述第一编译文件。
在一示例性实施例中,所述若所述目标源码与所述编译文件对应的源码一致,则将所述编译文件确定为所述第一编译文件之前,包括:
获取所述目标源码的第一信息摘要算法值和所述编译文件对应的源码的第二信息摘要算法值;
比较所述第一信息摘要算法值和所述第二信息摘要算法值,若所述第一信息摘要算法值和所述第二信息摘要算法值相同,则判定所述目标源码与所述编译文件对应的源码一致。
根据本公开实施例的第三方面,提供一种编译文件确定装置,包括:
目标配置文件获取单元,被配置为执行获取目标应用程序对应的目标配置文件,所述目标配置文件中包括对应的目标源码;
第一编译文件确定单元,被配置为执行在预设的静态库中查找所述目标源码对应的编译文件,若所述目标源码中的部分源码在所述静态库中存在对应的编译文件,则将所述对应的编译文件确定为第一编译文件;其中,所述静态库中存储有对源码进行编译得到的编译文件;
第二编译文件确定单元,被配置为执行若所述目标源码中的部分源码在所述静态库中不存在对应的编译文件,则对所述目标源码在所述静态库中不存在对应的编译文件的部分源码进行编译,得到第二编译文件;
目标编译文件确定单元,被配置为执行合并所述第一编译文件和所述第二编译文件,得到所述目标配置文件对应的目标编译文件。
在一示例性实施例中,所述编译文件确定装置还包括静态库集成单元,被配置为执行:
获取源码库;其中,所述源码库中存储有根据预设需求编写的源码;
编译所述源码库中的源码,得到所述源码库中的每一源码对应的编译文件;
按照预设存储路径存储所述编译文件,得到所述静态库。
在一示例性实施例中,所述静态库包括本地静态库和远程静态库;所述第一编译文件确定单元还被配置为执行:
从所述本地静态库中查找所述目标源码中的部分源码对应的编译文件,得到所述第一编译文件;
若所述本地静态库中不存在对应的编译文件,则从所述远程静态库中查找所述目标源码中的部分源码对应的编译文件,得到所述第一编译文件。
在一示例性实施例中,其特征在于,所述第一编译文件确定单元还被配置为执行:
解析所述目标配置文件,得到所述目标源码和对应的目标源码标识;
按照所述目标源码标识,查找所述静态库中的编译文件对应的源码;
若所述目标源码与所述编译文件对应的源码一致,则将所述编译文件确定为所述第一编译文件。
在一示例性实施例中,所述第一编译文件确定单元还被配置为执行:
获取所述目标源码的第一信息摘要算法值和所述编译文件对应的源码的第二信息摘要算法值;
比较所述第一信息摘要算法值和所述第二信息摘要算法值,若所述第一信息摘要算法值和所述第二信息摘要算法值相同,则判定所述目标源码与所述编译文件对应的源码一致。
根据本公开实施例的四方面,提供一种应用程序生成装置,包括:
目标配置文件获取单元,被配置为执行获取目标应用程序对应的目标配置文件,所述目标配置文件中包括对应的目标源码;
第一编译文件确定单元,被配置为执行在预设的静态库中查找所述目标源码对应的编译文件,若所述目标源码中的部分源码在所述静态库中存在对应的编译文件,则将所述对应的编译文件确定为第一编译文件;其中,所述静态库中存储有对源码进行编译得到的编译文件;
第二编译文件确定单元,被配置为执行若所述目标源码中的部分源码在所述静态库中不存在对应的编译文件,则对所述目标源码在所述静态库中不存在对应的编译文件的部分源码进行编译,得到第二编译文件;
目标编译文件确定单元,被配置为执行合并所述第一编译文件和所述第二编译文件,得到所述目标配置文件对应的目标编译文件;
目标应用程序集成单元,被配置为执行对所述目标编译文件进行集成,得到所述目标配置文件对应的目标应用程序。
在一示例性实施例中,所述编译文件确定装置还包括静态库集成单元,被配置为执行:
获取源码库;其中,所述源码库中存储有根据预设需求编写的源码;
编译所述源码库中的源码,得到所述源码库中的每一源码对应的编译文件;
按照预设存储路径存储所述编译文件,得到所述静态库。
在一示例性实施例中,所述静态库包括本地静态库和远程静态库;所述第一编译文件确定单元还被配置为执行:
从所述本地静态库中查找所述目标源码中的部分源码对应的编译文件,得到所述第一编译文件;
若所述本地静态库中不存在对应的编译文件,则从所述远程静态库中查找所述目标源码中的部分源码对应的编译文件,得到所述第一编译文件。
在一示例性实施例中,所述第一编译文件确定单元还被配置为执行:
解析所述目标配置文件,得到所述目标源码和对应的目标源码标识;
按照所述目标源码标识,查找所述静态库中的编译文件对应的源码;
若所述目标源码与所述编译文件对应的源码一致,则将所述编译文件确定为所述第一编译文件。
在一示例性实施例中,所述第一编译文件确定单元还被配置为执行:
获取所述目标源码的第一信息摘要算法值和所述编译文件对应的源码的第二信息摘要算法值;
比较所述第一信息摘要算法值和所述第二信息摘要算法值,若所述第一信息摘要算法值和所述第二信息摘要算法值相同,则判定所述目标源码与所述编译文件对应的源码一致。
根据本公开实施例的第五方面,提供一种电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现上述第一方面任一项实施例中所述的编译文件确定方法,和\或,上述第二方面实施例中所述的应用程序生成方法。
根据本公开实施例的第四方面,提供一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行上述第一方面任一项实施例中所述的编译文件确定方法,和\或,上述第二方面实施例中所述的应用程序生成方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,所述程序产品包括计算机程序,所述计算机程序存储在可读存储介质中,设备的至少一个处理器从所述可读存储介质读取并执行所述计算机程序,使得设备执行上述第一方面任一项实施例中所述的编译文件确定方法,和\或,上述第二方面实施例中所述的应用程序生成方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
获取目标应用程序对应的目标配置文件,目标配置文件中包括对应的目标源码;在预设的静态库中查找目标源码对应的编译文件,若目标源码中的部分源码在静态库中存在对应的编译文件,则将对应的编译文件确定为第一编译文件;其中,静态库中存储有对源码进行编译得到的编译文件;若目标源码中的部分源码在静态库中不存在对应的编译文件,则对目标源码在静态库中不存在对应的编译文件的部分源码进行编译,得到第二编译文件;合并第一编译文件和第二编译文件,得到目标配置文件对应的目标编译文件。其中,通常情况下,在进行开发或软件升级的过程中,目标配置文件中的大部分目标源码是现有的,在预设的静态库有对应的编译文件的,因此,可以在不经编译的情况下直接由目标源码得到目标源码中的部分源码对应的第一编译文件,节省大量的编译时间,快速获取编译文件。从而根据无需编译便可获取到的第一编译文件和需要编译的第二编译文件,最终得到目标配置文件对应的目标编译文件,从而省去了占比较大的第一编译文件的编译时间,能够快速获取编译文件。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种编译文件确定方法的流程图。
图2是根据一示例性实施例示出的一种静态库集成方法的流程图。
图3是根据一示例性实施例示出的步骤S200的一种可实施方式的流程图。
图4是根据一示例性实施例示出的步骤S200的一种可实施方式的流程图。
图5是根据一示例性实施例示出的一种应用程序生成方法的流程图。
图6是根据一具体示例性实施例示出的一种编译文件确定方法的流程图。
图7是根据一示例性实施例示出的一种编译文件确定装置的框图。
图8是根据一示例性实施例示出的一种应用程序生成装置的框图。
图9是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种编译文件确定方法的流程图,如图1所示,具体包括以下步骤:
在步骤S100中,获取目标应用程序对应的目标配置文件,目标配置文件中包括对应的目标源码。
在步骤S200中,在预设的静态库中查找目标源码对应的编译文件,若目标源码中的部分源码在静态库中存在对应的编译文件,则将对应的编译文件确定为第一编译文件;其中,静态库中存储有对源码进行编译得到的编译文件。
在步骤S300中,若目标源码中的部分源码在静态库中不存在对应的编译文件,则对目标源码在静态库中不存在对应的编译文件的部分源码进行编译,得到第二编译文件。
在步骤S400中,合并第一编译文件和第二编译文件,得到目标配置文件对应的目标编译文件。
其中,目标应用程序为开发需求对应的应用程序。目标配置文件为根据开发需求进行配置得到的文件,其中包括实现开发需求中的各个功能的目标源码。源码是指开发人员根据应用程序的开发理念,预先编写好的常用功能的源代码。静态库是指源码进行编译后的编译文件的集合,该编译文件可以是二进制文件或与源码对应的目标程序。
具体地,在得到目标配置文件后,在预设的静态库中查找目标源码对应的编译文件,若静态库中存在目标源码中的部分源码对应的编译文件,则从静态库中提取目标源码中的部分源码对应的编译文件,得到第一编译文件。若静态库中不存在目标源码对应的编译文件,说明该目标源码是开发人员编写的新的源代码或者是对静态库中编译文件对应的的源码进行修改后的源代码,静态库中没有与这些源代码对应的编译文件,则对目标源码在静态库中不存在对应的编译文件的部分源码进行编译,得到第二编译文件。此时,目标配置文件中的目标源码对应的目标编译文件为静态库中有对应的编译文件的第一编译文件和静态库中没有对应的编译文件的第二编译文件共同形成,目标配置文件中的目标源码对应的编译文件为第一编译文件与第二编译文件的总和。如此,原本需要调用源代码进行编译、连接方可得到的目标编译文件,省去了编译得到第一编译文件的时间,能够快速获取编译文件。
例如,目标配置文件包括目标源码1、目标源码2、……、目标源码100等一百个源代码,其中,目标源码1、目标源码2、……、目标源码95等95个源代码能够给从静态库中获取到对应的编译文件,则将目标源码1、目标源码2、……、目标源码98等98个源代码在静态库中对应的编译文件确定为第一编译文件。而目标源码99和目标源码100是开发人员编写的新的源代码或者是对静态库中编译文件对应的源码进行修改后的源代码,则对目标源码99和目标源码100进行编译,得到目标源码99和目标源码100对应的第二编译文件。最后将第一编译文件和第二编译文件等目标源码1、目标源码2、……、目标源码100对应的编译文件确定为目标编译文件。因此,在获取目标源码1、目标源码2、……、目标源码100等100个源代码对应的目标编译文件时,无需进行全量编译(对目标源码1、目标源码2、……、目标源码100等一百个源代码进行编译),仅需对目标源码99和目标源码100进行编译即可得到目标编译文件,省去了目标源码1、目标源码2、……、目标源码98等98个源代码的编译时间,实现快速获取编译文件。
上述编译文件确定方法中,获取目标应用程序对应的目标配置文件,目标配置文件中包括对应的目标源码;在预设的静态库中查找目标源码对应的编译文件,若目标源码中的部分源码在静态库中存在对应的编译文件,则将对应的编译文件确定为第一编译文件;其中,静态库中存储有对源码进行编译得到的编译文件;若目标源码中的部分源码在静态库中不存在对应的编译文件,则对目标源码在静态库中不存在对应的编译文件的部分源码进行编译,得到第二编译文件;合并第一编译文件和第二编译文件,得到目标配置文件对应的目标编译文件。其中,通常情况下,在进行开发或软件升级的过程中,目标配置文件中的大部分目标源码是现有的,在预设的静态库有对应的编译文件的,因此,可以在不经编译的情况下直接由目标源码得到目标源码中的部分源码对应的第一编译文件,节省大量的编译时间,快速获取编译文件。从而根据无需编译便可获取到的第一编译文件和需要编译的第二编译文件,最终得到目标配置文件对应的目标编译文件,从而省去了占比较大的第一编译文件的编译时间,能够快速获取编译文件。
图2是根据一示例性实施例示出的一种静态库集成方法的流程图,具体包括以下步骤:
在步骤S010中,获取源码库;其中,源码库中存储有根据预设需求编写的源码。
在步骤S020中,编译源码库中的源码,得到源码库中的每一源码对应的编译文件。
在步骤S030中,按照预设存储路径存储编译文件,得到静态库。
其中,源码是指开发人员根据应用程序的开发理念,预先编写好的常用功能的源代码。源码库中包括实现不同功能的源码。预设存储路径为存储静态库的指定存储地址,为后续静态库的调用提供基础。
具体地,在获取到源码库后,对源码库中的能够实现特定需求的源码进行编译,得到能够实现对应需求的编译文件,并按照预设存储路径存储编译文件,得到静态库,为后续调用静态库中的编译文件提供文件和路径,将获取编译文件的方式由源码调用后编译的方式变换为根据编译文件的预设路径直接调用。
上述示例性实施例中,获取源码库;其中,源码库中存储有根据预设需求编写的源码;编译源码库中的源码,得到源码库中的每一源码对应的编译文件;按照预设存储路径存储编译文件,得到静态库。该实施例能够对常用的源码进行预先编译和存储,无需进行定制化的设置,避免过多的特征的修改,能够得到相对稳定的编译文件静态库,为后续静态库的调用提供基础,可以省去编译时间,以快速获取编译文件。
图3是根据一示例性实施例示出的步骤S200的一种可实施方式的流程图,如图3所示,步骤S200,若目标源码中的部分源码在静态库中存在对应的编译文件,则将对应的编译文件确定为第一编译文件,具体包括以下步骤:
在步骤S211中,从本地静态库中查找目标源码中的部分源码对应的编译文件,得到第一编译文件。
在步骤S212中,若本地静态库中不存在对应的编译文件,则从远程静态库中查找目标源码中的部分源码对应的编译文件,得到第一编译文件。
其中,静态库包括本地静态库和远程静态库。
具体地,从本地静态库中查找目标源码对应的编译文件,若本地静态库中存在目标源码对应的编译文件,则从本地静态库中选出目标源码对应的编译文件,并确定为第一编译文件。若本地静态库中不存在目标源码对应的编译文件,则从远程静态库中查找对应的第一编译文件。
可选地,若远程静态库中也不存在目标源码对应的编译文件,说明该目标源码是开发人员编写的新的源码或者是对静态库中编译文件对应的源码中进行修改后的源码,静态库中没有与这些源码对应的编译文件,则对目标源码进行编译,得到第二编译文件。
上述示例性实施例中,从本地静态库中查找目标源码中的部分源码对应的编译文件,得到第一编译文件;若本地静态库中不存在对应的编译文件,则从远程静态库中查找目标源码中的部分源码对应的编译文件,得到第一编译文件。该实施例采用本地静态库存储和远程静态库的双存储模式调用模式,可以使开发人员能够快速地从本地静态库调用需要的编译文件,且在本地静态库无法满足调用需求的情况下使用开发人员共用的远程静态库,提高远程静态库的复用率,节省服务器资源,并且在打包时直接调用,节省打包资源。
图4是根据一示例性实施例示出的步骤S200的一种可实施方式的流程图,如图4所示,步骤S200,在预设的静态库中查找目标源码对应的编译文件,若目标源码中的部分源码在静态库中存在对应的编译文件,则将对应的编译文件确定为第一编译文件,具体包括以下步骤:
在步骤S221中,解析目标配置文件,得到目标源码和对应的目标源码标识。
在步骤S222中,按照目标源码标识,查找静态库中的编译文件对应的源码。
在步骤S223中,若目标源码与编译文件对应的源码一致,则将编译文件确定为第一编译文件。
其中,目标源码标识为标识目标源码的唯一性的标识,通过该标识可以在配置文件和静态库中找对对应的源码。
具体地,对目标配置文件进行解析,得到目标源码和对应的目标源码标识,并按照目标源码标识在静态库中查找对应的源码,比较目标源码与查找到的源码是否一致,若目标源码与查找到的源码一致,说明静态库中存储有目标源码对应的编译文件,则将静态库中对应的编译文件确定为第一编译文件。
可选地,在步骤S223之前,检测目标源码与源码是否一致。
可选地,获取目标源码的第一信息摘要算法值和编译文件对应的源码的第二信息摘要算法值;比较第一信息摘要算法值和第二信息摘要算法值,若第一信息摘要算法值和第二信息摘要算法值相同,则判定目标源码与编译文件对应的源码一致。
其中,信息摘要算法值可以为MD5(MD5 Message-Digest Algorithm,MD5信息摘要算法)值,一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hashvalue),用于确保信息传输完整一致。
具体地,获取目标源码对应的第一信息摘要算法值和静态库中的编译文件对应的源码对应的第二信息摘要算法值,若第一信息摘要算法值和第二信息摘要算法值相同,则目标源码与静态库中的编译文件对应的源码一致。
上述示例性实施例中,解析目标配置文件,得到目标源码和对应的目标源码标识;按照目标源码标识,查找静态库中的编译文件对应的源码;若目标源码与编译文件对应的源码一致,则将编译文件确定为第一编译文件。该实施例中,在判断目标源码与静态库中编译文件对应的源码是否一致时,采用信息摘要算法值的判断方法,可以保证目标源码在静态库中的编译文件存在确定的对应关系,且目标源码未被修改,能够在目标源码与所述编译文件对应的源码一致时,保证获取到的第一编译文件的准确性,在降低编译时间、快速获取编译文件的同时保证目标编译文件的准确性。
图5是根据一示例性实施例示出的一种应用程序生成方法的流程图,如图5所示,具体包括以下步骤:
在步骤S10中,获取目标应用程序对应的目标配置文件,目标配置文件中包括对应的目标源码。
在步骤S20中,在预设的静态库中查找目标源码对应的编译文件,若目标源码中的部分源码在静态库中存在对应的编译文件,则将对应的编译文件确定为第一编译文件;其中,静态库中存储有对源码进行编译得到的编译文件。
在步骤S30中,若目标源码中的部分源码在静态库中不存在对应的编译文件,则对目标源码在静态库中不存在对应的编译文件的部分源码进行编译,得到第二编译文件。
在步骤S40中,合并第一编译文件和第二编译文件,得到目标配置文件对应的目标编译文件。
在步骤S50中,对目标编译文件进行集成,得到目标配置文件对应的目标应用程序。
其中,目标应用程序为开发需求对应的应用程序。目标配置文件为根据开发需求进行配置得到的文件,其中包括实现开发需求中的各个功能的目标源码。源码是指开发人员根据应用程序的开发理念,预先编写好的常用功能的源代码。静态库是指源码进行编译后的编译文件的集合,该编译文件可以是二进制文件或与源码对应的目标程序。
具体地,在得到目标配置文件后,在预设的静态库中查找目标源码对应的编译文件,若静态库中存在目标源码中的部分源码对应的编译文件,则从静态库中提取目标源码中的部分源码对应的编译文件,得到第一编译文件。若静态库中不存在目标源码对应的编译文件,说明该目标源码是开发人员编写的新的源代码或者是对静态库中编译文件对应的源码进行修改后的源代码,静态库中没有与这些源代码对应的编译文件,则对目标源码在静态库中不存在对应的编译文件的部分源码进行编译,得到第二编译文件。此时,目标配置文件中的目标源码对应的目标编译文件为静态库中有对应的编译文件的第一编译文件和静态库中没有对应的编译文件的第二编译文件共同形成,目标配置文件中的目标源码对应的编译文件为第一编译文件与第二编译文件的总和。如此,原本需要调用源代码进行编译、连接方可得到的目标编译文件,省去了编译得到第一编译文件的时间,能够快速获取编译文件。并对目标编译文件中的各个编译文件进行链接和压缩,得到目标配置文件对应的目标应用程序,该应用程序能够实现目标编译文件对应的功能。
例如,目标配置文件包括目标源码1、目标源码2、……、目标源码100等一百个源代码,其中,目标源码1、目标源码2、……、目标源码95等95个源代码能够给从静态库中获取到对应的编译文件,则将目标源码1、目标源码2、……、目标源码98等98个源代码在静态库中对应的编译文件确定为第一编译文件。而目标源码99和目标源码100是开发人员编写的新的源代码或者是对静态库中编译文件对应的源码进行修改后的源代码,则对目标源码99和目标源码100进行编译,得到目标源码99和目标源码100对应的第二编译文件。最后将第一编译文件和第二编译文件等目标源码1、目标源码2、……、目标源码100对应的编译文件确定为目标编译文件。因此,在获取目标源码1、目标源码2、……、目标源码100等100个源代码对应的目标编译文件时,无需进行全量编译(对目标源码1、目标源码2、……、目标源码100等一百个源代码进行编译),仅需对目标源码99和目标源码100进行编译即可得到目标编译文件,省去了目标源码1、目标源码2、……、目标源码98等98个源代码的编译时间,实现快速获取编译文件。并对目标编译文件中的各个编译文件进行链接和压缩,得到目标配置文件对应的目标应用程序,该应用程序能够实现目标编译文件对应的功能。
上述应用程序生成方法中,获取目标应用程序对应的目标配置文件,目标配置文件中包括对应的目标源码;在预设的静态库中查找目标源码对应的编译文件,若目标源码中的部分源码在静态库中存在对应的编译文件,则将对应的编译文件确定为第一编译文件;其中,静态库中存储有对源码进行编译得到的编译文件;若目标源码中的部分源码在静态库中不存在对应的编译文件,则对目标源码在静态库中不存在对应的编译文件的部分源码进行编译,得到第二编译文件;合并第一编译文件和第二编译文件,得到目标配置文件对应的目标编译文件;对目标编译文件进行集成,得到目标配置文件对应的目标应用程序。其中,通常情况下,在进行开发或软件升级的过程中,目标配置文件中的大部分目标源码是现有的,在预设的静态库有对应的编译文件的,因此,可以在不经编译的情况下直接由目标源码得到目标源码中的部分源码对应的第一编译文件,节省大量的编译时间,快速获取编译文件。从而根据无需编译便可获取到的第一编译文件和需要编译的第二编译文件,最终得到目标配置文件对应的目标编译文件,并对目标编译文件中的各个编译文件进行链接和压缩,得到目标配置文件对应的目标应用程序。从而在开发或升级该应用程序的时候,无需根据目标源码进行编译、链接、压缩等环节,省去了占比较大的第一编译文件的编译时间,能够快速获取编译文件,并集成相应的应用程序。
关于上述应用程序生成方法各步骤的具体实现方式,在编译文件确定方法的各个示例性实施例中进行了详细描述,此处将不做详细阐述说明。
图6是根据一具体示例性实施例示出的一种编译文件确定方法的流程图,如图6所示,具体包括以下步骤:
在步骤S611中,开发人员根据具体需求获取静态库中编译文件(二进制文件),并进行开发、调试。
在步骤S621中,打包机上传编译文件至静态库进行存储。
在步骤S622中,打包机根据需要从静态库下载静态库中的编译文件,并进行打包,生成应用程序。
需要说明的是,本方法是建立在充分分析现有Xcode工程编译优化方案的基础上,结合Xcode编译流程、打包集成的特点提出。其中,Xcode是运行在操作系统Mac OS X上的集成开发工具(IDE)。Xcode具有统一的用户界面设计,编码、测试、调试都在一个简单的窗口内完成。Xcode同时也是一种语言,作为一种基于XML的语言,Xcode可以设想各种使用场景。能够提供一种独立于工具的可扩展的方法来描述编译时组件的各个方面。一般情况下,Xcode工程build时,解析工程的配置文件之后,就需要进行长时间的源码编译过程;当工程所集成的源码剧增之后,编译时间的占比也将向源码编译倾斜,直至其他编译时间几乎可以忽略不计,例如超级App。经过进一步分析发现,Xcode编译源码最终生成对应源码库的二进制文件(编译文件),然后在最终打包集成时,将静态库链接到最终的FAT二进制文件中。
本方法中的Xcode工程预编译优化闭环方案,通过编译工具预先对工程使用的源码库进行二进制编译,然后保存相应版本库的二进制库(静态库)到服务器,在开发者使用配套cocoapods插件工具集成的工程中,通过自定义pod函数,来获取和使用对应库的静态库,最终实现源码集成到静态库集成的目标,达到工程编译优化的目的。
其中,预编译集成得到静态库的主要包括:
1)预编源码为静态库形式,并通过vendored_librares指定静态库(二进制文件集合)的路径;2)远程+本地双存储策略,提高静态库的复用率,节省打包资源和服务器资源;3)工程集成时替换原集成方式中的源码集成路径为path形式,path为本地存储的预编译后的静态库路径。
其中,静态库编译优化方案整体架构包括:预编译工具和对应的cocoapods插件。通过预编译工具,可以实现源码库的预编译和静态库上传,通过cocoapods插件可以实现开发者App工程与静态库服务器配合获取并缓存预先编译好的二进制库。
App开发者通过集成预先编译好的二进制文件(编译文件),将源码集成形式的目标库直接采用静态库方式集成,Xcode在编译时就无需再编译,从而节省编译时间。其中,从源码集成形式更换为静态库集成形式,需要通过cocoapods方式实现。可选地,编译后的静态库包含头文件、二进制文件、资源等。
可选地,自定义的cocoapods插件实现源码引用替换为本地静态库引用,自定义ztpod函数拦截并封装pod函数实现,完成源码依赖到静态库依赖的转换。
上述编译文件确定方法,通过预编译稳定版本的静态库,可以在不经编译的情况下直接由目标源码得到对应的编译文件,节省大量的编译时间,并根据无需编译的编译文件和需要编译的编译文件,得到最终的编译文件,从而省去了占比较大的无需编译文件的编译时间,能够明显降低编译时间,大大提高编译速度。能大幅减少苹果App集成打包时间,提高苹果App持续集成(CI)效率,并通过自动化工具实现源码的自定预编译,与服务器配合形成预编译优化闭环,规范源码库到静态库编译的方法实现,有利于各公司更好地管理公司内组件库。并且实验数据表明,对于一个全源码编译耗时在30分钟-40分钟的App工程,采用上述方法可以节省60%-80%甚至更多的原编译时间,可想而知随着App规模越大,方案的优势表现的越明显。
应该理解的是,虽然图1-6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-6中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
图7是根据一示例性实施例示出的一种编译文件确定装置的框图。参照图7,该装置包括目标配置文件获取单元701、第一编译文件确定单元702、第二编译文件确定单元703和目标编译文件确定单元704:
目标配置文件获取单元701,被配置为执行获取目标应用程序对应的目标配置文件,目标配置文件中包括对应的目标源码;
第一编译文件确定单元702,被配置为执行在预设的静态库中查找目标源码对应的编译文件,若目标源码中的部分源码在静态库中存在对应的编译文件,则将对应的编译文件确定为第一编译文件;其中,静态库中存储有对源码进行编译得到的编译文件;
第二编译文件确定单元703,被配置为执行若目标源码中的部分源码在静态库中不存在对应的编译文件,则对目标源码在静态库中不存在对应的编译文件的部分源码进行编译,得到第二编译文件;
目标编译文件确定单元704,被配置为执行合并第一编译文件和第二编译文件,得到目标配置文件对应的目标编译文件。
在一示例性实施例中,编译文件确定装置还包括静态库集成单元,被配置为执行:获取源码库;其中,源码库中存储有根据预设需求编写的源码;编译源码库中的源码,得到源码库中的每一源码对应的编译文件;按照预设存储路径存储编译文件,得到静态库。
在一示例性实施例中,静态库包括本地静态库和远程静态库;第一编译文件确定单元702还被配置为执行:从本地静态库中查找目标源码中的部分源码对应的编译文件,得到第一编译文件;若本地静态库中不存在对应的编译文件,则从远程静态库中查找目标源码中的部分源码对应的编译文件,得到第一编译文件。
在一示例性实施例中,第一编译文件确定单元702还被配置为执行:解析目标配置文件,得到目标源码和对应的目标源码标识;按照目标源码标识,查找静态库中的编译文件对应的源码;若目标源码与编译文件对应的源码一致,则将编译文件确定为第一编译文件。
在一示例性实施例中,第一编译文件确定单元702还被配置为执行:获取目标源码的第一信息摘要算法值和编译文件对应的源码的第二信息摘要算法值;比较第一信息摘要算法值和第二信息摘要算法值,若第一信息摘要算法值和第二信息摘要算法值相同,则判定目标源码与编译文件对应的源码一致。
图8是根据一示例性实施例示出的一种应用程序生成装置的框图。参照图8,该装置包括目标配置文件获取单元801、第一编译文件确定单元802、第二编译文件确定单元803、目标编译文件确定单元804和目标应用程序集成单元805:
目标配置文件获取单元801,被配置为执行获取目标应用程序对应的目标配置文件,目标配置文件中包括对应的目标源码;
第一编译文件确定单元802,被配置为执行在预设的静态库中查找目标源码对应的编译文件,若目标源码中的部分源码在静态库中存在对应的编译文件,则将对应的编译文件确定为第一编译文件;其中,静态库中存储有对源码进行编译得到的编译文件;
第二编译文件确定单元803,被配置为执行若目标源码中的部分源码在静态库中不存在对应的编译文件,则对目标源码在静态库中不存在对应的编译文件的部分源码进行编译,得到第二编译文件;
目标编译文件确定单元804,被配置为执行合并第一编译文件和第二编译文件,得到目标配置文件对应的目标编译文件;
目标应用程序集成单元805,被配置为执行对目标编译文件进行集成,得到目标配置文件对应的目标应用程序。
在一示例性实施例中,编译文件确定装置还包括静态库集成单元,被配置为执行:获取源码库;其中,源码库中存储有根据预设需求编写的源码;编译源码库中的源码,得到源码库中的每一源码对应的编译文件;按照预设存储路径存储编译文件,得到静态库。
在一示例性实施例中,静态库包括本地静态库和远程静态库;第一编译文件确定单元802还被配置为执行:从本地静态库中查找目标源码中的部分源码对应的编译文件,得到第一编译文件;若本地静态库中不存在对应的编译文件,则从远程静态库中查找目标源码中的部分源码对应的编译文件,得到第一编译文件。
在一示例性实施例中,第一编译文件确定单元802还被配置为执行:解析目标配置文件,得到目标源码和对应的目标源码标识;按照目标源码标识,查找静态库中的编译文件对应的源码;若目标源码与编译文件对应的源码一致,则将编译文件确定为第一编译文件。
在一示例性实施例中,第一编译文件确定单元802还被配置为执行:获取目标源码的第一信息摘要算法值和编译文件对应的源码的第二信息摘要算法值;比较第一信息摘要算法值和第二信息摘要算法值,若第一信息摘要算法值和第二信息摘要算法值相同,则判定目标源码与编译文件对应的源码一致。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图9是根据一示例性实施例示出的一种电子设备900的框图。例如,设备900可以是移动电话、计算机、数字广播终端、消息收发设备、游戏控制台、平板设备、医疗设备、健身设备、个人数字助理等。
参照图9,设备900可以包括以下一个或多个组件:处理组件902、存储器904、电力组件906、多媒体组件908、音频组件99、输入/输出(I/O)的接口912、传感器组件914以及通信组件916。
处理组件902通常控制设备900的整体操作,诸如与显示、电话呼叫、数据通信、相机操作和记录操作相关联的操作。处理组件902可以包括一个或多个处理器920来执行指令,以完成上述方法的全部或部分步骤。此外,处理组件902可以包括一个或多个模块,便于处理组件902和其他组件之间的交互。例如,处理组件902可以包括多媒体模块,以方便多媒体组件908和处理组件902之间的交互。
存储器904被配置为存储各种类型的数据以支持在设备900的操作。这些数据的示例包括用于在设备900上操作的任何应用程序或方法的指令、联系人数据、电话簿数据、消息、图片、视频等。存储器904可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM)、电可擦除可编程只读存储器(EEPROM)、可擦除可编程只读存储器(EPROM)、可编程只读存储器(PROM)、只读存储器(ROM)、磁存储器、快闪存储器、磁盘或光盘。
电源组件906为设备900的各种组件提供电力。电源组件906可以包括电源管理系统,一个或多个电源,及其他与为设备900生成、管理和分配电力相关联的组件。
多媒体组件908包括在所述设备900和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件908包括一个前置摄像头和/或后置摄像头。当设备900处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件99被配置为输出和/或输入音频信号。例如,音频组件99包括一个麦克风(MIC),当设备900处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器904或经由通信组件916发送。在一些实施例中,音频组件99还包括一个扬声器,用于输出音频信号。
I/O接口912为处理组件902和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件914包括一个或多个传感器,用于为设备900提供各个方面的状态评估。例如,传感器组件914可以检测到设备900的打开/关闭状态,组件的相对定位,例如所述组件为设备900的显示器和小键盘,传感器组件914还可以检测设备900或设备900一个组件的位置改变,用户与设备900接触的存在或不存在,设备900方位或加速/减速和设备900的温度变化。传感器组件914可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件914还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件914还可以包括加速度传感器、陀螺仪传感器、磁传感器、压力传感器或温度传感器。
通信组件916被配置为便于设备900和其他设备之间有线或无线方式的通信。设备900可以接入基于通信标准的无线网络,如WiFi,运营商网络(如2G、3G、4G或8G),或它们的组合。在一个示例性实施例中,通信组件916经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。
在一示例性实施例中,设备900可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在一示例性实施例中,还提供了一种电子设备,包括:处理器920;用于存储处理器920可执行指令的存储器904;其中,处理器920被配置为执行指令,以实现上述任一项实施例中的编译文件确定方法。
在一示例性实施例中,还提供了一种存储介质,当存储介质中的指令由电子设备的处理器920执行时,使得电子设备能够执行上述任一项实施例中的编译文件确定方法。
在一示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器904,上述指令可由设备900的处理器920执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种编译文件确定方法,其特征在于,包括:
获取目标应用程序对应的目标配置文件,所述目标配置文件中包括对应的目标源码;
在预设的静态库中查找所述目标源码对应的编译文件,若所述目标源码中的部分源码在所述静态库中存在对应的编译文件,则将所述对应的编译文件确定为第一编译文件;其中,所述静态库中存储有对源码进行编译得到的编译文件;
若所述目标源码中的部分源码在所述静态库中不存在对应的编译文件,则对所述目标源码在所述静态库中不存在对应的编译文件的部分源码进行编译,得到第二编译文件;
合并所述第一编译文件和所述第二编译文件,得到所述目标配置文件对应的目标编译文件。
2.根据权利要求1所述的编译文件确定方法,其特征在于,所述静态库的集成方式,包括:
获取源码库;其中,所述源码库中存储有根据预设需求编写的源码;
编译所述源码库中的源码,得到所述源码库中的每一源码对应的编译文件;
按照预设存储路径存储所述编译文件,得到所述静态库。
3.根据权利要求1所述的编译文件确定方法,其特征在于,所述静态库包括本地静态库和远程静态库;
所述在预设的静态库中查找所述目标源码对应的编译文件,若所述目标源码中的部分源码在所述静态库中存在对应的编译文件,则将所述对应的编译文件确定为第一编译文件,包括:
从所述本地静态库中查找所述目标源码中的部分源码对应的编译文件,得到所述第一编译文件;
若所述本地静态库中不存在对应的编译文件,则从所述远程静态库中查找所述目标源码中的部分源码对应的编译文件,得到所述第一编译文件。
4.根据权利要求1至3任一项所述的编译文件确定方法,其特征在于,所述在预设的静态库中查找所述目标源码对应的编译文件,若所述目标源码中的部分源码在所述静态库中存在对应的编译文件,则将所述对应的编译文件确定为第一编译文件,包括:
解析所述目标配置文件,得到所述目标源码和对应的目标源码标识;
按照所述目标源码标识,查找所述静态库中的编译文件对应的源码;
若所述目标源码与所述编译文件对应的源码一致,则将所述编译文件确定为所述第一编译文件。
5.根据权利要求4所述的编译文件确定方法,其特征在于,所述若所述目标源码与所述编译文件对应的源码一致,则将所述编译文件确定为所述第一编译文件之前,包括:
获取所述目标源码的第一信息摘要算法值和所述编译文件对应的源码的第二信息摘要算法值;
比较所述第一信息摘要算法值和所述第二信息摘要算法值,若所述第一信息摘要算法值和所述第二信息摘要算法值相同,则判定所述目标源码与所述编译文件对应的源码一致。
6.一种应用程序生成方法,其特征在于,包括:
获取目标应用程序对应的目标配置文件,所述目标配置文件中包括对应的目标源码;
在预设的静态库中查找所述目标源码对应的编译文件,若所述目标源码中的部分源码在所述静态库中存在对应的编译文件,则将所述对应的编译文件确定为第一编译文件;其中,所述静态库中存储有对源码进行编译得到的编译文件;
若所述目标源码中的部分源码在所述静态库中不存在对应的编译文件,则对所述目标源码在所述静态库中不存在对应的编译文件的部分源码进行编译,得到第二编译文件;
合并所述第一编译文件和所述第二编译文件,得到所述目标配置文件对应的目标编译文件;
对所述目标编译文件进行集成,得到所述目标配置文件对应的目标应用程序。
7.一种编译文件确定装置,其特征在于,包括:
目标配置文件获取单元,被配置为执行获取目标应用程序对应的目标配置文件,所述目标配置文件中包括对应的目标源码;
第一编译文件确定单元,被配置为执行在预设的静态库中查找所述目标源码对应的编译文件,若所述目标源码中的部分源码在所述静态库中存在对应的编译文件,则将所述对应的编译文件确定为第一编译文件;其中,所述静态库中存储有对源码进行编译得到的编译文件;
第二编译文件确定单元,被配置为执行若所述目标源码中的部分源码在所述静态库中不存在对应的编译文件,则对所述目标源码在所述静态库中不存在对应的编译文件的部分源码进行编译,得到第二编译文件;
目标编译文件确定单元,被配置为执行合并所述第一编译文件和所述第二编译文件,得到所述目标配置文件对应的目标编译文件。
8.一种应用程序生成装置,其特征在于,包括:
目标配置文件获取单元,被配置为执行获取目标应用程序对应的目标配置文件,所述目标配置文件中包括对应的目标源码;
第一编译文件确定单元,被配置为执行在预设的静态库中查找所述目标源码对应的编译文件,若所述目标源码中的部分源码在所述静态库中存在对应的编译文件,则将所述对应的编译文件确定为第一编译文件;其中,所述静态库中存储有对源码进行编译得到的编译文件;
第二编译文件确定单元,被配置为执行若所述目标源码中的部分源码在所述静态库中不存在对应的编译文件,则对所述目标源码在所述静态库中不存在对应的编译文件的部分源码进行编译,得到第二编译文件;
目标编译文件确定单元,被配置为执行合并所述第一编译文件和所述第二编译文件,得到所述目标配置文件对应的目标编译文件;
目标应用程序集成单元,被配置为执行对所述目标编译文件进行集成,得到所述目标配置文件对应的目标应用程序。
9.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至5中任一项所述的编译文件确定方法,和\或,权利要求6中所述的应用程序生成方法。
10.一种存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1至5中任一项所述的编译文件确定方法,和\或,权利要求6中所述的应用程序生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011003129.XA CN112114814A (zh) | 2020-09-22 | 2020-09-22 | 编译文件确定方法及装置、应用程序生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011003129.XA CN112114814A (zh) | 2020-09-22 | 2020-09-22 | 编译文件确定方法及装置、应用程序生成方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112114814A true CN112114814A (zh) | 2020-12-22 |
Family
ID=73800269
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011003129.XA Pending CN112114814A (zh) | 2020-09-22 | 2020-09-22 | 编译文件确定方法及装置、应用程序生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112114814A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113031965A (zh) * | 2021-04-23 | 2021-06-25 | 上海数禾信息科技有限公司 | 应用程序业务工程编译方法、装置、设备和存储介质 |
CN113031962A (zh) * | 2021-03-23 | 2021-06-25 | 北京百度网讯科技有限公司 | 编译方法、编译装置、电子设备、存储介质和程序产品 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9262132B1 (en) * | 2015-04-13 | 2016-02-16 | Semmle Limited | Incremental local source code analysis |
CN106201481A (zh) * | 2016-06-30 | 2016-12-07 | 传线网络科技(上海)有限公司 | 应用程序开发系统中的组件管理方法和装置 |
CN109144521A (zh) * | 2018-09-28 | 2019-01-04 | 五八有限公司 | 生成静态库的方法、装置、计算机设备及可读存储介质 |
CN109460235A (zh) * | 2018-10-09 | 2019-03-12 | 珠海格力电器股份有限公司 | 组态软件编译方法 |
WO2019148816A1 (en) * | 2018-02-05 | 2019-08-08 | Beijing Elex Technology Co., Ltd | Method and apparatus for data compilation, electronic device and computer readable storage medium |
CN110377290A (zh) * | 2019-07-22 | 2019-10-25 | 阿里巴巴集团控股有限公司 | 一种目标工程编译的方法、装置及设备 |
CN110673853A (zh) * | 2019-09-25 | 2020-01-10 | 中国工商银行股份有限公司 | 一种编译方法、装置及系统 |
CN111240689A (zh) * | 2020-01-13 | 2020-06-05 | 广州虎牙科技有限公司 | 应用程序的构建方法、装置、设备及存储介质 |
-
2020
- 2020-09-22 CN CN202011003129.XA patent/CN112114814A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9262132B1 (en) * | 2015-04-13 | 2016-02-16 | Semmle Limited | Incremental local source code analysis |
CN106201481A (zh) * | 2016-06-30 | 2016-12-07 | 传线网络科技(上海)有限公司 | 应用程序开发系统中的组件管理方法和装置 |
WO2019148816A1 (en) * | 2018-02-05 | 2019-08-08 | Beijing Elex Technology Co., Ltd | Method and apparatus for data compilation, electronic device and computer readable storage medium |
CN109144521A (zh) * | 2018-09-28 | 2019-01-04 | 五八有限公司 | 生成静态库的方法、装置、计算机设备及可读存储介质 |
CN109460235A (zh) * | 2018-10-09 | 2019-03-12 | 珠海格力电器股份有限公司 | 组态软件编译方法 |
CN110377290A (zh) * | 2019-07-22 | 2019-10-25 | 阿里巴巴集团控股有限公司 | 一种目标工程编译的方法、装置及设备 |
CN110673853A (zh) * | 2019-09-25 | 2020-01-10 | 中国工商银行股份有限公司 | 一种编译方法、装置及系统 |
CN111240689A (zh) * | 2020-01-13 | 2020-06-05 | 广州虎牙科技有限公司 | 应用程序的构建方法、装置、设备及存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113031962A (zh) * | 2021-03-23 | 2021-06-25 | 北京百度网讯科技有限公司 | 编译方法、编译装置、电子设备、存储介质和程序产品 |
CN113031962B (zh) * | 2021-03-23 | 2022-04-15 | 北京百度网讯科技有限公司 | 编译方法、编译装置、电子设备、存储介质和程序产品 |
CN113031965A (zh) * | 2021-04-23 | 2021-06-25 | 上海数禾信息科技有限公司 | 应用程序业务工程编译方法、装置、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111221559B (zh) | 应用更新方法、装置、存储介质、终端及服务器 | |
CN111736916A (zh) | 基于Java语言的动态扩展方法、装置、电子设备及存储介质 | |
CN112114814A (zh) | 编译文件确定方法及装置、应用程序生成方法及装置 | |
CN111538502A (zh) | 安装包的处理方法、装置、电子设备及存储介质 | |
CN115185717A (zh) | 接口调用方法、装置、电子设备和存储介质 | |
CN109344051B (zh) | 数据处理的方法、装置、电子设备及存储介质 | |
CN109684112B (zh) | 程序文件运行方法、装置、终端及存储介质 | |
CN111913756B (zh) | 应用程序的优化方法、装置、系统、电子设备及存储介质 | |
CN113377370A (zh) | 一种文件处理方法、装置、电子设备及存储介质 | |
CN111221613B (zh) | 程序调用方法及装置、存储介质 | |
CN106293683B (zh) | 一种项目的编译方法及装置 | |
CN111597106A (zh) | 一种埋点管理方法及装置 | |
CN107193622B (zh) | 代码编译的处理方法、装置及终端 | |
CN112631695A (zh) | 一种数据校验方法、装置、电子设备及存储介质 | |
CN112860625A (zh) | 数据获取方法、数据存储方法、装置、设备及存储介质 | |
CN111596949B (zh) | 一种开发应用程序的方法及装置 | |
CN113342355B (zh) | 一种代码编译方法、装置、电子设备及存储介质 | |
CN112445484A (zh) | 一种寄存器处理方法、装置、电子设备及存储介质 | |
CN113885938A (zh) | 代码修改方法、装置、电子设备及存储介质 | |
CN112148296B (zh) | 一种编译运行方法、装置和用于编译运行的装置 | |
CN113535183B (zh) | 代码处理方法、装置、电子设备及存储介质 | |
CN110311968B (zh) | 流式加载文件的方法、装置及智能设备 | |
CN114020694B (zh) | 一种头文件地址的获取方法、装置、电子设备及存储介质 | |
CN112711420B (zh) | 一种代码转换方法及装置 | |
CN116954713A (zh) | 组件生成方法、装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |