CN110377290B - 一种目标工程编译的方法、装置及设备 - Google Patents

一种目标工程编译的方法、装置及设备 Download PDF

Info

Publication number
CN110377290B
CN110377290B CN201910661756.3A CN201910661756A CN110377290B CN 110377290 B CN110377290 B CN 110377290B CN 201910661756 A CN201910661756 A CN 201910661756A CN 110377290 B CN110377290 B CN 110377290B
Authority
CN
China
Prior art keywords
project
file
binary
target project
target
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.)
Active
Application number
CN201910661756.3A
Other languages
English (en)
Other versions
CN110377290A (zh
Inventor
赵跃
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Nova Technology Singapore Holdings Ltd
Original Assignee
Advanced New Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Advanced New Technologies Co Ltd filed Critical Advanced New Technologies Co Ltd
Priority to CN201910661756.3A priority Critical patent/CN110377290B/zh
Publication of CN110377290A publication Critical patent/CN110377290A/zh
Application granted granted Critical
Publication of CN110377290B publication Critical patent/CN110377290B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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

一种目标工程编译的方法、装置及设备
技术领域
本说明书一个或多个实施例涉及计算机领域中的编译技术,尤其涉及一种目标工程编译的方法、装置及设备。
背景技术
在开发一个iOS应用程序时,不可避免的会使用很多的依赖库,而一个一个的手动下载和添加是很麻烦的。目前多数iOS开发者在管理项目的三方框架时都在使用cocoapods,其简单的用法、良好的语言兼容性以及中心化的管理方式给项目开发带来了极大的便利,通过cocoapods可以让我们很方便的下载和管理这些第三方依赖库。
然而,目前开发人员在开发IOS App时,需要对大量依赖外部库进行编译,因此,需要一种能够节约时间的编译方法。
发明内容
本说明书一个或多个实施例的第一方面提供一种目标工程编译的方法。所述目标工程编译方法包括:创建目标工程;同步所述目标工程依赖库组件的源代码;编译所述源代码生成所述依赖库组件的二进制文件;以及自动将所述目标工程的所述依赖库组件依赖于所述依赖库组件的二进制文件。
在一些实施例中,所述下载所述目标工程,所述目标工程包含目标项目相关的代码文件和依赖库组件;所述依赖库组件为二进制库文件格式。
在一些实施例中,所述自动将所述目标工程的所述依赖库组件依赖于所述依赖库组件的二进制文件,包括:在所述目标工程的编译输出目录下,收集生成的所述二进制文件;对生成的所述二进制文件进行打包和压缩,生成二进制文件压缩包;将所述二进制文件压缩包上传于预设位置,并生成所述二进制文件压缩包的下载地址;修改所述项目工程的配置文件,用二进制依赖配置替代源码依赖配置;修改所述项目工程的所述配置文件,添加所述二进制文件压缩包的所述下载地址。
在一些实施例中,当所述目标工程中所述依赖库组件更新时,重新编译生成新的二进制文件,打包压缩,并上传所述新的二进制文件到所述预设位置。
在一些实施例中,所述目标工程为基于iOS系统的工程,所述目标工程的所述依赖库组件为由cocoapods管理第三方依赖库组件。
本说明书一个或多个实施例的第二方面提供一种目标工程编译的装置,包括:创建模块,用于创建目标工程;同步模块,同步所述目标工程依赖库组件的源代码;编译模块,用于编译所述源代码生成所述依赖库组件的二进制文件;以及二进制依赖生成模块,自动将所述目标工程的所述依赖库组件依赖于所述依赖库组件的二进制文件。
在一些实施例中,所述装置还包括:下载模块,用于下载所述目标工程,所述目标工程包含目标项目相关的代码文件和依赖库组件;所述依赖库为二进制库文件格式。
在一些实施例中,所述自动将所述目标工程的所述依赖库组件依赖于所述依赖库组件的二进制文件,包括:在所述目标工程的编译输出目录下,收集生成的所述二进制文件;对生成的所述二进制文件进行打包和压缩,生成二进制文件压缩包;将所述二进制文件压缩包上传于预设位置,并生成所述二进制文件压缩包的下载地址;修改所述项目工程的配置文件,用二进制依赖配置替代源码依赖配置;修改所述项目工程的所述配置文件,添加所述二进制文件压缩包的所述下载地址。
在一些实施例中,当所述目标工程中所述依赖库组件更新时,重新编译生成新的二进制文件,打包压缩,并上传所述新的二进制文件到所述预设位置。
在一些实施例中,所述目标工程为基于iOS系统的工程,所述目标工程的所述依赖库为由cocoapods管理第三方依赖库。
在一些实施例中,所述预设位置可以为所述目标工程所在的项目仓库,也可以为静态文件服务器。
本说明书一个或多个实施例的第三方面提供一种目标工程编译的设备,所述设备包括至少一个处理器和至少一个存储设备,所述存储设备用于存储指令,当所述至少一个处理器执行所述指令时,实现如上所述的方法。
本说明书一个或多个实施例所提供的目标工程编译的方法、装置及设备,创建目标工程;基于目标工程,同步目标工程依赖库组件的源代码;基于目标工程的依赖库组件的源代码,编译所述目标工程生成所述依赖库组件的二进制文件;以及自动将所述目标工程的所述依赖库组件依赖于所述编译生成的依赖库组件的二进制文件。这样,一方面,能够自动地编译二进制,并修改目标工程依赖库组件地依赖。另一方面,在后续的编译过程中,可以直接下载二进制文件的压缩包到目标工程中,由于已经存在编译好的二进制文件,就不会对依赖库再进行编译,缩短了编译时间。
附图说明
为了更清楚地说明本说明书一个或多个实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书一个或多个实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。其中:
图1是根据本说明书一个或多个实施例所示的目标工程编译的方法的流程图;
图2是根据本说明书一个或多个实施例所示的用二进制依赖配置替代源代码依赖配置的方法的流程图;
图3是根据本说明书一个或多个实施例所示的目标工程编译的装置的模块示意框图;
具体实施方式
为了更清楚地说明本说明书一个或多个实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书一个或多个实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书一个或多个实施例应用于其他类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
如本说明书一个或多个实施例和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其他的步骤或元素。
本说明书一个或多个实施例中使用了流程图用来说明根据本说明书一个或多个实施例的系统所执行的操作。应当理解的是,前面或下面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
本说明书一个或多个实施例提供一种目标工程编译的方法,所述目标工程编译的方法示例如下:
实施例一
图1是根据本说明书一个或多个实施例所示的目标工程编译的方法的流程图100,请参照图1,包括步骤:
步骤101、创建目标工程。
具体的,在步骤101中,目标工程可以是基于IOS(互联网操作系统,InternetworkOperating System)系统的工程。在一些实施例中,可以由cocoapods对项目依赖的第三方库进行管理。
步骤103、同步目标工程依赖库组件的源代码。
具体的,利用cocoapods对目标工程的依赖库进行同步。
在本实施例中,利用cocoapods对目标工程的依赖库进行同步可以包括:
S1:进入目标工程,在目标工程中创建podfile文件。
S2:在podfile文件中,添加目标工程所需要的第三方库的名称及版本。
S3:使用pod install命令从远程仓库下载第三方库源代码到目标工程中。
通过上述步骤,cocoapods可以将目标工程的依赖库组件放入目标工程下名为Pods的项目中。
步骤105、编译源代码生成所述依赖库组件的二进制文件。
在本实施例中,可以使用XCODE集成开发环境对源代码进行编译,生成项目自身的代码和依赖库组件的二进制文件。生成的二进制文件可以包括以.a和.framework等为文件后缀名的静态库,和以.tbd和.framework等为文件后缀名的动态库。
步骤107、自动将所述目标工程的所述依赖库组件依赖于所述依赖库组件的二进制文件。
在本实施例中,所述自动将所述目标工程的所述依赖库组件依赖于所述依赖库组件的二进制文件可以是指,通过执行自动脚本工具,使得目标工程经过配置后,在后续编译过程中,不再编译依赖库组件的源代码,而是直接使用本次编译生成的依赖库组件的二进制文件。省去了后续开发人员重复编译第三方依赖库组件的过程。
图2是根据本说明书一个或多个实施例所示的用二进制依赖配置替代源代码依赖配置的方法的流程图200。在一些实施例中,将所述目标工程的所述依赖库组件依赖于所述依赖库组件的二进制文件的步骤可以包括:
步骤201、在目标工程的编译输出目录下,收集生成的二进制文件,并对生成的所述二进制文件进行打包和压缩,生成二进制文件压缩包。
在本实施例中,可以使用cocoapods-packager(cocoapods提供的自动化打包插件)来完成该步骤。在另外一些实施例中,也可以使用xcodebuild(Xcode Command LineTools的一部分)命令来完成该步骤。
步骤203、将所述二进制文件压缩包上传于预设位置,并生成所述二进制文件压缩包的下载地址。
步骤205、修改所述项目工程的配置文件,用二进制依赖配置替代源码依赖配置。
步骤207、修改所述项目工程的所述配置文件,添加所述二进制文件压缩包的所述下载地址。
在本实施例中,可以通过修改目标工程的podspec文件来完成步骤205、207。podspec是cocoapods的一种文件格式,有专用的语法。cocoapods的搜索引擎可以通过podspec获取代码的作者、版本号、概要、描述、源代码地址、部署版本、依赖的框架等描述信息。podspec文件可以自动生成,也可以由开发人员建立创建。具体的,可以在podspec文件中修改相关字段,使得cocoapods在安装pod的时候直接使用二进制库文件。同时在podspec文件中添加步骤203中生成的二进制文件压缩包的下载地址。
执行完以上步骤,上传目标工程和podspec文件到项目仓库。
在一些实施例中,步骤107的操作可以由脚本工具自动完成。
当目标工程中依赖库组件需要更新或者更换时,重复步骤105和步骤107,重新编译依赖库组件的源代码生成新的二进制文件,打包压缩,并上传所述新的二进制文件到预设位置。在本实施例中,预设位置可以为使用git托管的项目仓库,由于git托管会自带版本号(通过tag命令),所以会在项目仓库存储多个版本的目标工程以及podspec文件。
在另一些实施例中,预设位置也可以为静态文件服务器,例如,内网中的某一台服务器。此时,需要使用其他方式进行版本控制。
在一个应用场景中,后续开发人员从项目仓库中下载目标工程,此时目标工程包括项目相关的源代码和podspec文件。开发人员可以使用pod install命令来同步目标工程需要的依赖库组件。具体的,在执行pod install命令过程中,cocoapods会解析podspec文件,根据sourse_files字段获取依赖库组件的下载地址,同步依赖库组件到目标工程的相关目录下。
其中,依赖库组件可以为二进制库文件格式,因此,集成开发环境对目标工程进行编译的过程中,不再需要编译依赖库组件的源代码。因为只需要编译项目自身相关的源代码,节省了大量编译依赖库组件源代码的时间。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
实施例二
本说明书一个或多个实施例还提供了一种目标工程编译的装置。
图3是根据本说明书一个或多个实施例所示的目标工程编译的装置的模块示意框图300,请参照图3。本说明书一个或多个实施例提供一种目标工程编译的装置,该装置可以应用于前述所示的实施例中提供的编译方法中。该装置包括:创建模块301、同步模块303、编译模块305和二进制依赖生成模块307,其中:
创建模块301,用于创建目标工程。
其中,目标工程可以是基于IOS(互联网操作系统,Internetwork OperatingSystem)系统的工程。由cocoapods对项目依赖的第三方库进行管理。
同步模块303,用于同步所述目标工程依赖库组件的源代码。
具体的,同步模块303利用cocoapods对目标工程的依赖库进行同步。
在一些实施例中,同步模块303利用cocoapods对目标工程的依赖库进行同步可以包括:
S1:进入目标工程,在目标工程中创建podfile文件。
S2:在podfile文件中,添加目标工程所需要的第三方库的名称和版本。
S3:使用pod install命令从远程仓库下载第三方库源代码到目标工程中。
通过上述步骤,同步模块303可以利用cocoapods将目标工程的依赖库组件放入名为pods的项目中。
编译模块305,用于编译所述源代码生成所述依赖库组件的二进制文件。
在本实施例中,编译模块可以使用XCODE集成开发环境对源代码进行编译,生成项目自身的代码和依赖库组件的二进制文件。生成的二进制文件包括以.a和.framework等为文件后缀名的静态库,和以.tbd和.framework等为文件后缀名的动态库。
二进制依赖生成模块307,自动将所述目标工程的依赖库由源代码依赖替换成二进制依赖。
具体的,二进制依赖模块307可以执行自动脚本工具将目标工程的依赖库由源代码依赖替换成二进制依赖。使得目标工程经过配置后,在后续编译过程中,不再编译依赖库组件的源代码,而是直接使用本次编译生成的依赖库组件的二进制文件。省去了后续开发人员重复编译第三方依赖库组件的过程。
在一些实施例中,二进制依赖生成模块307还可以用于执行以下步骤:
步骤201、在目标工程的编译输出目录下,收集生成的二进制文件,并对生成的二进制文件进行打包和压缩,生成二进制文件压缩包。
在本实施例中,二进制依赖生成模块307可以使用cocoapods-packager(cocoapods提供的自动化打包插件)来完成该步骤。在另外一些实施例中,二进制依赖模块307也可以使用xcodebuild(Xcode Command Line Tools的一部分)命令来完成该步骤。
步骤203、将二进制文件压缩包上传于预设位置,并生成二进制文件压缩包的下载地址。
步骤205、修改项目工程的配置文件,用二进制依赖配置替代源码依赖配置。
步骤207、修改项目工程的所述配置文件,设置下载脚本,添加所述二进制文件压缩包的下载地址。
在本实施例中,二进制依赖生成模块307可以通过修改目标工程的podspec文件来完成步骤205、207。podspec是cocoapods的一种文件格式,有专用的语法。cocoapods的搜索引擎可以通过podspec获取代码的作者、版本号、概要、描述、源代码地址、部署版本、依赖的框架等描述信息。podspec文件可以自动生成,也可以由开发人员建立创建。具体的,可以在podspec文件中修改相关字段,使得cocoapods在安装pod的时候直接使用二进制库文件。同时在podspec文件中添加步骤203中生成的二进制文件压缩包的下载地址。
执行完以上步骤,二进制依赖生成模块307可以上传目标工程和podspec文件到项目仓库。
在一些实施例中,二进制依赖生成模块307可以利用脚本工具自动完成上述步骤201-207。
当目标工程中依赖库组件更新时,编译模块305将重新编译依赖库组件的源代码生成新的二进制文件,并继续由二进制依赖模块307执行自动脚本工具对生成的新的二进制文件进行打包压缩,并上传新的二进制文件到预设位置。
在本实施例中,预设位置可以为使用git托管的项目仓库,由于git托管会自带版本号(通过tag命令),所以会在项目仓库存储多个版本的目标工程以及podspec文件。
在一个应用场景中,后续开发人员可以利用下载模块下载目标工程,此时目标工程包括项目相关的源代码和podspec文件。开发人员可以使用pod install命令来同步目标工程需要的依赖库组件。具体的,在执行pod install命令过程中,cocoapods会解析podspec文件,根据sourse_files字段获取依赖库组件的下载地址,同步依赖库组件到目标工程的相关目录下。
其中,依赖库组件可以为二进制库文件格式,因此,集成开发环境对目标工程进行编译的过程中,不再需要编译依赖库组件的源代码。因为只需要编译项目自身相关的源代码,节省了大量编译依赖库组件源代码的时间。
在实际应用中,所述创建模块301、同步模块303、编译模块305、二进制依赖模块307均可由中央处理(Central Processing Unit,CPU)、微处理器(Micro Processor Unit,MPU)、数字信号处理器(Digital Signal,DSP)或现场可编程门阵列(Field ProgrammableGate Array,FPGA)登实现。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
可以理解,对于本领域的技术人员来说,在了解该装置的原理后,可能在不背离这一原理的情况下,对各个模块进行任意组合。例如,在一些实施例中,例如,图3中披露的同步模块303、编译模块305可以是一个装置中的不同模块,也可以是一个模块实现上述的两个或两个以上模块的功能。例如,各个模块可以共用一个存储器,各个模块也可以分别具有各自的存储器。诸如此类的变形,均在本说明书一个或多个实施例的保护范围之内。
实施例三
本说明书一个或多个实施例还提供一种目标工程编译的设备。
本说明书一个或多个实施例提供一种目标工程编译的装置,该装置可以应用于前述所示的实施例中提供的编译方法中。该装置包括:至少一个处理器和至少一个存储设备,其中:
存储器,用于存储指令。
处理器,用于执行上述指令时,实现以下步骤:
步骤101、创建目标工程。
具体的,在步骤101中,目标工程可以是基于IOS(互联网操作系统,InternetworkOperating System)系统的工程。在一些实施例中,可以由cocoapods对项目依赖的第三方库进行管理。
步骤103、同步目标工程依赖库组件的源代码。
具体的,利用cocoapods对目标工程的依赖库进行同步。
在本实施例中,利用cocoapods对目标工程的依赖库进行同步可以包括:
S1:进入目标工程,在目标工程中创建podfile文件。
S2:在podfile文件中,添加目标工程所需要的第三方库的名称及版本。
S3:使用pod install命令从远程仓库下载第三方库源代码到目标工程中。
通过上述步骤,cocoapods可以将目标工程的依赖库组件放入目标工程下名为Pods的项目中。
步骤105、编译源代码生成所述依赖库组件的二进制文件。
在本实施例中,可以使用XCODE集成开发环境对源代码进行编译,生成项目自身的代码和依赖库组件的二进制文件。生成的二进制文件可以包括以.a和.framework等为文件后缀名的静态库,和以.tbd和.framework等为文件后缀名的动态库。
步骤107、自动将所述目标工程的所述依赖库组件依赖于所述依赖库组件的二进制文件。
在本实施例中,所述自动将所述目标工程的所述依赖库组件依赖于所述依赖库组件的二进制文件可以是指,通过执行自动脚本工具,使得目标工程经过配置后,在后续编译过程中,不再编译依赖库组件的源代码,而是直接使用本次编译生成的依赖库组件的二进制文件。省去了后续开发人员重复编译第三方依赖库组件的过程。
在一些实施例中,将所述目标工程的所述依赖库组件依赖于所述依赖库组件的二进制文件的步骤可以包括:
步骤201、在目标工程的编译输出目录下,收集生成的二进制文件,并对生成的所述二进制文件进行打包和压缩,生成二进制文件压缩包。
在本实施例中,可以使用cocoapods-packager(cocoapods提供的自动化打包插件)来完成该步骤。在另外一些实施例中,也可以使用xcodebuild(Xcode Command LineTools的一部分)命令来完成该步骤。
步骤203、将所述二进制文件压缩包上传于预设位置,并生成所述二进制文件压缩包的下载地址。
步骤205、修改所述项目工程的配置文件,用二进制依赖配置替代源码依赖配置。
步骤207、修改所述项目工程的所述配置文件,添加所述二进制文件压缩包的所述下载地址。
在本实施例中,可以通过修改目标工程的podspec文件来完成步骤205、207。podspec是cocoapods的一种文件格式,有专用的语法。cocoapods的搜索引擎可以通过podspec获取代码的作者、版本号、概要、描述、源代码地址、部署版本、依赖的框架等描述信息。podspec文件可以自动生成,也可以由开发人员建立创建。具体的,可以在podspec文件中修改相关字段,使得cocoapods在安装pod的时候直接使用二进制库文件。同时在podspec文件中添加步骤203中生成的二进制文件压缩包的下载地址。
执行完以上步骤,上传目标工程和podspec文件到项目仓库。
在一些实施例中,步骤107的操作可以由脚本工具自动完成。
当目标工程中依赖库组件需要更新或者更换时,重复步骤105和步骤107,重新编译依赖库组件的源代码生成新的二进制文件,打包压缩,并上传所述新的二进制文件到预设位置。在本实施例中,预设位置可以为使用git托管的项目仓库,由于git托管会自带版本号(通过tag命令),所以会在项目仓库存储多个版本的目标工程以及podspec文件。
在另一些实施例中,预设位置也可以为静态文件服务器,例如,内网中的某一台服务器。此时,需要使用其他方式进行版本控制。
在一个应用场景中,后续开发人员从项目仓库中下载目标工程,此时目标工程包括项目相关的源代码和podspec文件。开发人员可以使用pod install命令来同步目标工程需要的依赖库组件。具体的,在执行pod install命令过程中,cocoapods会解析podspec文件,根据sourse_files字段获取依赖库组件的下载地址,同步依赖库组件到目标工程的相关目录下。
其中,依赖库组件可以为二进制库文件格式,因此,集成开发环境对目标工程进行编译的过程中,不再需要编译依赖库组件的源代码。因为只需要编译项目自身相关的源代码,节省了大量编译依赖库组件源代码的时间。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
需要注意的是,以上描述,仅为描述方便,并不能把本说明书一个或多个实施例限制在所举实施例范围之内。可以理解,对于本领域的技术人员来说,在了解本说明书一个或多个实施例的原理后,可以在不背离这一原理的情况下,对实施上述设备进行形式和细节上的各种修正和改变。然而,这些变化和修改不脱离本说明书一个或多个实施例的范围。
本说明书一个或多个实施例可能带来的有益效果包括但不限于:(1)将目标工程依赖于依赖库组件的源代码替换成依赖于依赖库组件编译生成的二进制文件,免去编译源代码的步骤,因此编译时间得到极大缩短;(2)可以利用自动脚本工具对二进制文件进行打包、压缩、上传处理,自动化程度更高。
需要说明的是,不同实施例可能产生的有益效果不同,在不同的实施例里,可能产生的有益效果可以是以上任意一种或几种的组合,也可以是其他任何可能获得的有益效果。
以上内容描述了本说明书一个或多个实施例。根据上述内容,本说明书一个或多个实施例还可以做出不同的变形。本说明书一个或多个实施例披露的主题能够以不同的形式和例子所实现,并且本说明书一个或多个实施例可以被应用于大量的应用程序中。后文权利要求中所要求保护的所有应用、修饰以及改变都属于本说明书的范围。
所有软件或其中的一部分有时可能会通过网络进行通信,如互联网或其他通信网络。此类通信能够将软件从一个计算机设备或处理器加载到另一个。例如:从放射治疗系统的一个管理服务器或主机计算机加载至一个计算机环境的硬件平台,或其他实现系统的计算机环境,或与提供确定轮椅目标结构参数所需要的信息相关的类似功能的系统。因此,另一种能够传递软件元素的介质也可以被用作局部设备之间的物理连接,例如光波、电波、电磁波等,通过电缆、光缆或者空气实现传播。用来载波的物理介质如电缆、无线连接或光缆等类似设备,也可以被认为是承载软件的介质。在这里的用法除非限制了有形的“储存”介质,其他表示计算机或机器“可读介质”的术语都表示在处理器执行任何指令的过程中参与的介质。
本说明书一个或多个实施例各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化编程语言如C语言、Visual Basic、Fortran2003、Perl、COBOL 2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或服务器上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,例如,局域网(LAN)或广域网(WAN)、或连接至外部计算机(例如通过因特网)、或在云计算环境中、或作为服务使用如软件即服务(SaaS)。
此外,除非权利要求中明确说明,本说明书一个或多个实施例所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书一个或多个实施例流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书一个或多个实施例实质和范围的修正和等价组合。
同理,应当注意的是,为了简化本说明书披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书一个或多个实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书一个或多个实施例对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。

Claims (13)

1.一种目标工程编译的方法,其特征在于,包括:
创建目标工程;
同步所述目标工程依赖库组件的源代码;
编译所述源代码生成所述依赖库组件的二进制文件;以及
自动将所述目标工程的所述依赖库组件依赖于所述依赖库组件的二进制文件。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
下载所述目标工程,所述目标工程包含目标项目相关的代码文件和依赖库组件;
所述依赖库组件为二进制库文件格式。
3.根据权利要求2所述的方法,其特征在于,所述自动将所述目标工程的所述依赖库组件依赖于所述依赖库组件的二进制文件,包括:
在所述目标工程的编译输出目录下,收集生成的所述二进制文件;
对生成的所述二进制文件进行打包和压缩,生成二进制文件压缩包;
将所述二进制文件压缩包上传于预设位置,并生成所述二进制文件压缩包的下载地址;
修改项目工程的配置文件,用二进制依赖配置替代源代码依赖配置;
修改所述项目工程的配置文件,添加所述二进制文件压缩包的所述下载地址。
4.根据权利要求3所述的方法,其特征在于,当所述目标工程中所述依赖库组件更新时,重新编译生成新的二进制文件,打包压缩,并上传所述新的二进制文件到所述预设位置。
5.根据权利要求1所述的方法,其特征在于,所述目标工程为基于iOS系统的工程,所述目标工程的所述依赖库组件为由cocoapods管理第三方依赖库组件。
6.根据权利要求3所述的方法,其特征在于,所述预设位置为所述目标工程所在的项目仓库,或者为静态文件服务器。
7.一种目标工程编译的装置,其特征在于,包括:
创建模块,用于创建目标工程;
同步模块,同步所述目标工程依赖库组件的源代码;
编译模块,用于编译所述源代码生成所述依赖库组件的二进制文件;以及
二进制依赖生成模块,自动将所述目标工程的所述依赖库组件依赖于所述依赖库组件的二进制文件。
8.根据权利要求7所述的目标工程编译的装置,其特征在于,所述装置还包括:
下载模块,用于下载所述目标工程,所述目标工程包含目标项目相关的代码文件和依赖库组件;
所述依赖库为二进制库文件格式。
9.根据权利要求7所述的目标工程编译的装置,其特征在于,所述自动将所述目标工程的所述依赖库组件依赖于所述依赖库组件的二进制文件,包括:
在所述目标工程的编译输出目录下,收集生成的所述二进制文件;
对生成的所述二进制文件进行打包和压缩,生成二进制文件压缩包;
将所述二进制文件压缩包上传于预设位置,并生成所述二进制文件压缩包的下载地址;
修改项目工程的配置文件,用二进制依赖配置替代源代码依赖配置;
修改所述项目工程的配置文件,添加所述二进制文件压缩包的所述下载地址。
10.根据权利要求9所述的目标工程编译的装置,其特征在于,当所述目标工程中所述依赖库组件更新时,重新编译生成新的二进制文件,打包压缩,并上传所述新的二进制文件到所述预设位置。
11.根据权利要求7所述的目标工程编译的装置,其特征在于,所述目标工程为基于iOS系统的工程,所述目标工程的所述依赖库为由cocoapods管理第三方依赖库。
12.根据权利要求9所述的目标工程编译的装置,其特征在于,所述预设位置为所述目标工程所在的项目仓库,或者为静态文件服务器。
13.一种目标工程编译的设备,其特征在于,所述设备包括至少一个处理器和至少一个存储设备,所述存储设备用于存储指令,当所述至少一个处理器执行所述指令时,实现如权利要求1~6中任一项所述的方法。
CN201910661756.3A 2019-07-22 2019-07-22 一种目标工程编译的方法、装置及设备 Active CN110377290B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910661756.3A CN110377290B (zh) 2019-07-22 2019-07-22 一种目标工程编译的方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910661756.3A CN110377290B (zh) 2019-07-22 2019-07-22 一种目标工程编译的方法、装置及设备

Publications (2)

Publication Number Publication Date
CN110377290A CN110377290A (zh) 2019-10-25
CN110377290B true CN110377290B (zh) 2023-04-25

Family

ID=68254801

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910661756.3A Active CN110377290B (zh) 2019-07-22 2019-07-22 一种目标工程编译的方法、装置及设备

Country Status (1)

Country Link
CN (1) CN110377290B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110825361B (zh) * 2019-10-29 2023-06-16 成都西加云杉科技有限公司 一种代码修改方法、装置、设备及可读存储介质
CN111142884B (zh) * 2019-12-12 2024-03-26 北京达佳互联信息技术有限公司 小程序的版本部署方法、装置、电子设备及存储介质
CN110960855B (zh) * 2019-12-19 2023-07-11 米哈游科技(上海)有限公司 一种通信协议代码更新方法、装置、电子设备及存储介质
CN111191216B (zh) * 2019-12-26 2024-02-06 航天信息股份有限公司 具有java接口的ofd签章客户端及其用于签章验章的方法和系统
CN113360156B (zh) * 2020-03-04 2023-11-14 武汉斗鱼鱼乐网络科技有限公司 一种ios编译方法及相关设备
CN111399840B (zh) * 2020-03-04 2024-03-19 腾讯音乐娱乐科技(深圳)有限公司 一种模块开发方法及装置
CN111782183B (zh) * 2020-06-29 2024-03-01 北京百度网讯科技有限公司 用于判断组件依赖关系的方法及设备、电子设备和介质
CN112114814A (zh) * 2020-09-22 2020-12-22 北京达佳互联信息技术有限公司 编译文件确定方法及装置、应用程序生成方法及装置
CN112286534A (zh) * 2020-11-25 2021-01-29 湖南麒麟信安科技股份有限公司 一种软件包自动化编译方法
CN112463127A (zh) * 2020-12-08 2021-03-09 微医云(杭州)控股有限公司 一种文件处理方法、装置、设备及存储介质
CN112650530A (zh) * 2020-12-31 2021-04-13 五八有限公司 多类库集成方法、装置、电子设备及可读存储介质
CN113448591A (zh) * 2021-07-17 2021-09-28 绿漫科技有限公司 一种基于python快速创建iOS工程的方法
CN114153480A (zh) * 2021-12-06 2022-03-08 北京金堤科技有限公司 代码同步、组件发布方法及其装置、计算机存储介质
CN114968411A (zh) * 2022-06-15 2022-08-30 康键信息技术(深圳)有限公司 一种代码加载方法、装置、计算机设备和可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6968541B1 (en) * 2000-10-04 2005-11-22 International Business Machines Corporation Apparatus and method for template instantiation with a cross compiler
CN106528258A (zh) * 2016-10-28 2017-03-22 武汉斗鱼网络科技有限公司 提高安卓项目编译速度的方法及系统
CN109491664A (zh) * 2018-11-08 2019-03-19 腾讯科技(深圳)有限公司 iOS应用程序的生成方法、装置、设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8856724B2 (en) * 2011-06-20 2014-10-07 Ebay Inc. Systems and methods for incremental software development

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6968541B1 (en) * 2000-10-04 2005-11-22 International Business Machines Corporation Apparatus and method for template instantiation with a cross compiler
CN106528258A (zh) * 2016-10-28 2017-03-22 武汉斗鱼网络科技有限公司 提高安卓项目编译速度的方法及系统
CN109491664A (zh) * 2018-11-08 2019-03-19 腾讯科技(深圳)有限公司 iOS应用程序的生成方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN110377290A (zh) 2019-10-25

Similar Documents

Publication Publication Date Title
CN110377290B (zh) 一种目标工程编译的方法、装置及设备
CN109491695B (zh) 一种集成安卓应用的增量更新方法
CN102289378B (zh) 自动生成应用程序的方法
CN107678748B (zh) 一种源代码文件编译方法及装置
CN105446712B (zh) 一种应用程序缺陷修补方法及装置
CN111026403A (zh) 一种打包部署方法、装置、计算机设备及存储介质
US20160170863A1 (en) Software test automation
CN108897547B (zh) 一种软件自动化部署方法及装置
CN105718251A (zh) 多语言sdk自动化实现方法及系统
CN102156643A (zh) 软件集成方法及系统
CN110659031A (zh) 应用程序的编译方法、装置、电子设备及存储介质
CN112000334A (zh) 页面开发方法、装置、服务器及存储介质
CN111596951A (zh) 一种工程文件的配置方法及装置
CN107092472B (zh) 一种动态发布方法及设备
US10552135B1 (en) Reducing a size of an application package
CN113360156B (zh) 一种ios编译方法及相关设备
CN110806891A (zh) 嵌入式设备软件版本的生成方法及装置
CN115964045A (zh) 一种跨架构的操作系统快速自动化构建的方法、装置及介质
CN111142848A (zh) 一种软件程序编译方法、执行方法及装置
US20150033213A1 (en) Compiling method, storage medium and compiling apparatus
CN115098117A (zh) 一种基于uniApp的自动化打包方法、计算设备及存储介质
CN114090189A (zh) 一种基于流水线的构建部署管理方法及系统
CN114237760A (zh) 一种将工业机理模型封装为容器镜像并发布web服务的方法
CN111078231A (zh) 可视化界面组件热部署方法和客户端、服务端
CN112650189A (zh) 一种嵌入式plc自动化测试系统及方法

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200923

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

Effective date of registration: 20200923

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240228

Address after: 128 Meizhi Road, Singapore, Guohao Times City # 20-01189773

Patentee after: Advanced Nova Technology (Singapore) Holdings Ltd.

Country or region after: Singapore

Address before: 27 Hospital Road, George Town, Grand Cayman ky1-9008

Patentee before: Innovative advanced technology Co.,Ltd.

Country or region before: United Kingdom