CN111984264B - 一种静态库的生成方法和装置 - Google Patents

一种静态库的生成方法和装置 Download PDF

Info

Publication number
CN111984264B
CN111984264B CN202010725152.3A CN202010725152A CN111984264B CN 111984264 B CN111984264 B CN 111984264B CN 202010725152 A CN202010725152 A CN 202010725152A CN 111984264 B CN111984264 B CN 111984264B
Authority
CN
China
Prior art keywords
project
sub
source code
local
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
CN202010725152.3A
Other languages
English (en)
Other versions
CN111984264A (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.)
Wuba Co Ltd
Original Assignee
Wuba 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 Wuba Co Ltd filed Critical Wuba Co Ltd
Priority to CN202010725152.3A priority Critical patent/CN111984264B/zh
Publication of CN111984264A publication Critical patent/CN111984264A/zh
Application granted granted Critical
Publication of CN111984264B publication Critical patent/CN111984264B/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例提供了一种静态库的生成方法及装置,所述方法包括:通过获取源码文件,其中,源码文件中包括至少一个子工程,接着获取子工程的本地工程标识,与针对子工程的更新数据,更新数据包括子工程的目标工程标识,以及子工程的目标工程信息,若目标工程标识与本地工程标识不同,则将子工程在源码文件中的本地工程信息替换为目标工程信息,然后编译更新后的源码文件,生成与至少一个子工程对应的静态库,从而通过对工程标识进行比对,判断源码文件中的工程信息是否为最新的工程信息,避免对未更新的工程信息进行编译,减少了编译时间,提高静态库生成的效率,保证了服务器资源的充分利用。

Description

一种静态库的生成方法和装置
技术领域
本发明涉及数据处理技术领域,特别是涉及一种静态库的生成方法和一种静态库的生成装置。
背景技术
App工厂指的是通过选择性地组装一些组件来生成应用程序的模式,这些组件可以包括业务服务、业务无关中间件以及第三方基础库等等。其中,对于某些应用程序而言,其所涉及的业务服务是极为复杂和繁多的,业务和底层组件工程数量较多,每个工程均有对应的静态库工程,每次都要对所有的源码工程生成一遍。
当前采用的是通过一个壳工程,将所有业务和组件工程pod(集成)进去,然后编译壳工程,并取编译后的每个pod的.a文件即为所需要的静态库。然而,该方式每次生成静态库时都会重新生成一遍相同的文件,既增加了整个生成库的时间,同时也浪费了服务器资源,建立工程处理的效率。
发明内容
本发明实施例是提供一种静态库的生成方法,以解决现有技术中生成静态库时间长、效率低,浪费服务器资源的问题。
相应的,本发明实施例还提供了一种静态库的生成装置,用以保证上述方法的实现及应用。
为了解决上述问题,本发明实施例公开了一种静态库的生成方法,包括:
获取源码文件,所述源码文件中包括至少一个子工程;
获取所述子工程的本地工程标识,与针对所述子工程的更新数据,所述更新数据包括所述子工程的目标工程标识,以及所述子工程的目标工程信息;
若所述目标工程标识与所述本地工程标识不同,则将所述子工程在所述源码文件中的本地工程信息替换为所述目标工程信息;
编译更新后的源码文件,生成与所述至少一个子工程对应的静态库。
可选地,所述获取所述子工程的本地工程标识,与针对所述子工程的更新数据,包括:
获取针对所述源码文件的本地更新文件,所述本地更新文件包括所述至少一个子工程与工程标识之间的对应关系;
从所述本地更新文件中,提取所述子工程的本地工程标识;
从预设的服务器中,获取所述子工程的目标工程标识与目标工程信息。
可选地,还包括:
将所述本地更新文件中所述子工程的本地工程标识更新为所述目标工程标识,生成目标更新文件。
可选地,还包括:
将所述目标更新文件同步于所述服务器中。
可选地,还包括:
若所述目标工程标识与所述本地工程标识相同,则将所述子工程从所述源码文件中移除。
可选地,所述获取源码文件,包括:
创建一针对预设的应用程序的壳工程,并获取与所述应用程序对应的至少一个子工程;
在所述壳工程中集成所述至少一个子工程,生成与所述应用程序匹配的源码文件。
本发明实施例还公开了一种静态库的生成装置,包括:
源码文件获取模块,用于获取源码文件,所述源码文件中包括至少一个子工程;
工程数据获取模块,用于获取所述子工程的本地工程标识,与针对所述子工程的更新数据,所述更新数据包括所述子工程的目标工程标识,以及所述子工程的目标工程信息;
工程信息更改模块,用于若所述目标工程标识与所述本地工程标识不同,则将所述子工程在所述源码文件中的本地工程信息替换为所述目标工程信息;
源码文件编译模块,用于编译更新后的源码文件,生成与所述至少一个子工程对应的静态库。
可选地,所述工程数据获取模块包括:
更新文件获取子模块,用于获取针对所述源码文件的本地更新文件,所述本地更新文件包括所述至少一个子工程与工程标识之间的对应关系;
本地工程标识提取子模块,用于从所述本地更新文件中,提取所述子工程的本地工程标识;
更新数据获取子模块,用于从预设的服务器中,获取所述子工程的目标工程标识与目标工程信息。
可选地,还包括:
更新文件生成模块,用于将所述本地更新文件中所述子工程的本地工程标识更新为所述目标工程标识,生成目标更新文件。
可选地,还包括:
更新文件同步模块,用于将所述目标更新文件同步于所述服务器中。
可选地,还包括:
子工程移除模块,用于若所述目标工程标识与所述本地工程标识相同,则将所述子工程从所述源码文件中移除。
可选地,所述源码文件获取模块包括:
壳工程创建子模块,用于创建一针对预设的应用程序的壳工程,并获取与所述应用程序对应的至少一个子工程;
源码文件生成子模块,用于在所述壳工程中集成所述至少一个子工程,生成与所述应用程序匹配的源码文件。
本发明实施例还公开了一种电子设备,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述电子设备执行如上所述的方法。
本发明实施例还公开了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如上所述的方法。
本发明实施例包括以下优点:
在本发明实施例中,通过获取源码文件,其中,源码文件中包括至少一个子工程,接着获取子工程的本地工程标识,与针对子工程的更新数据,更新数据包括子工程的目标工程标识,以及子工程的目标工程信息,若目标工程标识与本地工程标识不同,则将子工程在源码文件中的本地工程信息替换为目标工程信息,然后编译更新后的源码文件,生成与至少一个子工程对应的静态库,从而通过对工程标识进行比对,判断源码文件中的工程信息是否为最新的工程信息,避免对未更新的工程信息进行编译,减少了编译时间,提高静态库生成的效率,保证了服务器资源的充分利用。
附图说明
图1是本发明的一种静态库的生成方法实施例的步骤流程图;
图2是本发明的一种静态库的生成方法实施例的步骤流程图;
图3是本发明实施例中工程处理的流程示意图;
图4是本发明的一种静态库的生成装置实施例的结构框图;
图5是本发明的一种电子设备的框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
随着应用程序(APP,Application)业务功能的不断增多,在开发应用程序时,开发者可以将应用程序划分为多个开发工程进行开发。在对开发工程的源代码文件编译成静态库文件时,首先,可以将源代码文件依次进行终端类编译和模拟器类编译,以获取对应的编译结果;其次,可以依次执行以下操作:将两个编译结果中的静态库(.a库)进行合并,分别提取每个编译结果中的头文件(.h文件),以及分别提取每个编译结果中的资源文件;最后,将合并后的静态库,提取到的所有接口文件,以及提取到的所有资源文件合并为该开发工程的静态库文件。
对于应用程序而言,其基础架构中大部分组件工程很少改动,若是需要对所有的工程进行编译生成静态库(.a库),则需要分别进行终端类编译和模拟器类编译。在该过程中,每次生成静态库时都会重新生成一遍相同的文件,不仅增加了整个静态库生成的时间,同时还容易浪费生成服务器的资源。
因此,本发明实施例的核心发明点之一在于通过对每个工程的维护信息进行记录,在每次生成静态库的过程中,可以先获取针对工程的目标工程标识,并将该目标工程标识与本地工程标识进行匹配,以判断源码文件中工程信息是否为最新的工程信息,若是,则将该工程从源码文件中剔除,并调用已有的静态库,减少源代码的编译;若否,则将对源码文件进行更新,并对更新后的源码文件进行编译,以得到对应的静态库,从而减少对未更新的工程进行编译,减少了编译时间,提高静态库生成的效率,保证了服务器资源的充分利用,同时通过对源码文件进行更新,可以保证静态库有效性。
具体的,参照图1,示出了本发明的一种静态库的生成方法实施例的步骤流程图,具体可以包括如下步骤:
步骤101,获取源码文件,所述源码文件中包括至少一个子工程;
作为一种示例,可以在编译服务器中对应用程序的工程文件进行编译,以得到对应的静态库文件。其中,编译服务器可以与至少一个远程服务器进行通信,远程服务器可以用于存储工程文件,以及对工程文件进行编译等等。
在具体实现中,在对某一应用程序的静态库进行编译时,可以获取与该应用程序对应的源码文件,源码文件中可以包括与应用程序对应的至少一个子工程。需要说明的是,一个应用程序可以包括不同的业务服务,每一个业务服务可以对应一个工程,则应用程序可以对应多子工程。
例如,某生活类应用程序可以为用户提供招聘、二手车、找房、黄页等不同的业务服务,则招聘、二手车、找房、黄页可以分别对应不同的工程,在对与应用程序对应的源码文件编译时,可以生成与各个工程对应的静态库。
步骤102,获取所述子工程的本地工程标识,与针对所述子工程的更新数据,所述更新数据包括所述子工程的目标工程标识,以及所述子工程的目标工程信息;
在本发明实施例中,源码文件中不同的子工程可以对应不同的工程标识,对于编译服务器而言,可以在本地存储各个子工程对应的本地工程标识。
在具体实现中,编译服务器得到源码文件后,可以依次遍历各个子工程,并获取针对子工程的更新数据,更新数据可以包括子工程的目标工程标识,以及子工程的目标工程信息。
其中,更新数据可以为存储于远程服务器中工程的最新数据,例如工程最新的代码,以及最近更新的版本等等。对于工程而言,每次更新都可以为工程配置一个工程标识,用于表示服务器本地工程的版本信息,从而可以通过工程标识判断静态库编译服务器本地工程的代码是否为最新的代码。可选地,工程标识可以为一随机数,其可以根据工程的名称、工程所对应的业务功能等生成,本发明对此不作限制。
步骤103,若所述目标工程标识与所述本地工程标识不同,则将所述子工程在所述源码文件中的本地工程信息替换为所述目标工程信息;
在具体实现中,可以通过将子工程的本地工程标识与远程服务器中的目标工程标识进行比对,若两者不同,则表示子工程的本地工程信息版本低于远程服务器中的目标工程信息,需要对源码文件中的工程信息(即代码)进行更新,以对源码文件进行更新;若两者相同,则表示子工程的本地工程信息已经为最新版本,无需进行源代码的编译,可以将该子工程从源码文件中剔除,并直接调用已有静态库。
步骤104,编译更新后的源码文件,生成与所述至少一个子工程对应的静态库。
在具体实现中,当对源码文件中各个子工程遍历与更新完毕后,可以对更新后的源码文件进行编译,生成与子工程对应的静态库。
例如,可以设置一个本地编译的路径,如build目录,在该build目录下生成真机对应的Release-iphoneos目录和模拟器对应的Release-iphonesimulator目录。经过对源码文件进行编译,在Releaseiphoneos目录和Releaseiphonesimulator目录中,分别都有所有子工程各自的.a库文件。每个子工程的.a库文件的名称在Releaseiphoneos目录和Releaseiphonesimulator目录中是相同的。例如:.a库文件的名称为:libPods-BuildLibTool-XXX.a,其中,xxx为子工程的名称。
在本发明实施例中,通过获取源码文件,其中,源码文件中包括至少一个子工程,接着获取子工程的本地工程标识,与针对子工程的更新数据,更新数据包括子工程的目标工程标识,以及子工程的目标工程信息,若目标工程标识与本地工程标识不同,则将子工程在源码文件中的本地工程信息替换为目标工程信息,然后编译更新后的源码文件,生成与至少一个子工程对应的静态库,从而通过对工程标识进行比对,判断源码文件中的工程信息是否为最新的工程信息,避免对未更新的工程信息进行编译,减少了编译时间,提高静态库生成的效率,保证了服务器资源的充分利用。
参照图2,示出了本发明的一种静态库的生成方法实施例的步骤流程图,具体可以包括如下步骤:
步骤201,获取源码文件,所述源码文件中包括至少一个子工程;
在本发明实施例中,对于需要进行静态库编译的应用程序,可以先创建一针对该应用程序的壳工程,并获取与应用程序对应的至少一个子工程,然后在壳工程中集成至少一个子工程,生成与应用程序匹配的源码文件。
其中,所创建的壳工程可以一个空的工程,可以将应用程序对应的所有业务和组件工程pod(集成)于该空的工程中,从而得到源码文件,以便对该壳工程进行编译,并在编译后,取每个pod的.a文件作为静态库。
步骤202,获取所述子工程的本地工程标识,与针对所述子工程的更新数据,所述更新数据包括所述子工程的目标工程标识,以及所述子工程的目标工程信息;
在本发明实施例中,可以在静态库编译服务器本地维护一本地更新文件,在该本地更新文件中保存有每个工程最后一次修改的修改信息,即子工程与工程标识之间的对应关系。
在一种示例中,工程每一次的代码更新均可以对应唯一的标识commitid,对于commitid而言,这个commitid只是一个随机数,每次更新提交都是唯一的,则可以利用这个commitid来判断静态库编译服务器本地工程的代码是否为最新的代码。在本地更新文件中,可以采用一个<Key,Value>键值对的方式组成的json串,作为每个工程的修改信息,例如,以工程名为key,以commitid为value,作为对应工程的修改信息。
在编译壳工程之前,编译服务器需要对壳工程内的所有子工程进行pod install,以判断每个子工程是采用源代码生成静态库,还是将子工程从壳工程中删除,调用已有的静态库。具体的,本地更新文件可以为一列表文件,则编译服务器维护一个全局的列表文件,并保存工程名以及对应的壳工程,接着通过cocoapods将应用程序对应的所有子工程集成于壳工程中,获得源码文件,然后可以按照列表文件中的顺序对源码文件进行遍历,并从列表文件中获取当前子工程的本地工程标识,以及从远程服务器中获取与当前子工程对应的目标工程标识与目标工程信息,以便通过本地工程标识与目标工程标识之间的比对结果,判断静态库编译服务器中当前子工程的代码是否为最新的代码。
需要说明的是,本发明实施例包括但不限于上述示例,可以理解的是,在本发明实施例的思想指导下,本领域技术人员可以采用其他方式对更新文件进行设置,本发明对此不作限制。
步骤203,若所述目标工程标识与所述本地工程标识不同,则将所述子工程在所述源码文件中的本地工程信息替换为所述目标工程信息;
步骤204,若所述目标工程标识与所述本地工程标识相同,则将所述子工程从所述源码文件中移除;
在具体实现中,可以通过将当前子工程的本地工程标识与远程服务器中的目标工程标识进行比对,若两者不同,则表示子工程的本地工程信息版本低于远程服务器中的目标工程信息,需要对源码文件中当前子工程的工程信息(即代码)进行更新,以对源码文件进行更新;若两者相同,则表示当前子工程的本地工程信息已经为最新版本,无需进行源代码的编译,可以将该子工程从源码文件中剔除,并直接调用已有静态库,然后按照列表文件中的顺序,对下一个子工程进行检测,直至遍历所有的子工程,完成对源码文件的更新。
步骤205,编译更新后的源码文件,生成与所述至少一个子工程对应的静态库。
在具体实现中,当按照列表文件的顺序对源码文件中各个子工程遍历与更新完毕后,可以对更新后的源码文件进行编译,生成与子工程对应的静态库,从而通过在编译服务器的本地维护一个全局的更新文件,更新文件中记录了各个子工程的最新修改信息,在通过源码文件生成静态库时,可以通过更新文件中保存的本地工程标识与服务器中最新的目标工程标识进行比对,若两者相同,则将相应的子工程从源码文件中剔除;若两者不同,则将对源码文件与更新文件进行更新,从而通过对工程标识进行比对,判断源码文件中的工程信息是否为最新的工程信息,避免对未更新的工程信息进行编译,减少了编译时间,提高静态库生成的效率,保证了服务器资源的充分利用。
在本发明的一种可选实施例中,将本地更新文件中子工程的本地工程标识更新为目标工程标识,生成目标更新文件;将目标更新文件同步于服务器中。
在具体实现中,编译服务器当检测到对应的子工程的本地工程标识与目标工程标识不同时,可以将本地工程标识更新为目标工程标识,以将对应的源码工程名与commitid写入本地更新文件中,同时将本地修改后的更新文件同步至至少一个远程服务器,以实现在另外的静态库生成服务器上,也可以获得其他任意一台生成库服务器的增量信息,进而实现增量信息的共享。
在本发明实施例中,通过获取源码文件,其中,源码文件中包括至少一个子工程,接着获取子工程的本地工程标识,与针对子工程的更新数据,更新数据包括子工程的目标工程标识,以及子工程的目标工程信息,若目标工程标识与本地工程标识不同,则将子工程在源码文件中的本地工程信息替换为目标工程信息,然后编译更新后的源码文件,生成与至少一个子工程对应的静态库,从而通过对工程标识进行比对,判断源码文件中的工程信息是否为最新的工程信息,避免对未更新的工程信息进行编译,减少了编译时间,提高静态库生成的效率,保证了服务器资源的充分利用。
为了使本领域技术人员能够更好地理解本申请实施例,下面通过一个例子对本申请实施例加以说明:
参考图3,示出了本发明实施例中工程处理的流程示意图,具体可以包括如下流程:
1.在编译服务器的本地维护一个全局的列表文件,保存工程名和对壳工程,初始为空。
2.获取目标应用程序的所有业务和组件工程,并通过cocoapods在壳工程中集成所有工程,获取源码工程。
3.按照工程的顺序,从由源码工程的起始位置开始,对2中获取到的源码工程进行遍历,取当前源码工程,判断当前源码工程在编译服务器的本地中是否为最新的代码。
3.1读取本地列表文件中当前源码工程的本地工程标识commitid1。
3.2从服务器请求当前源码工程的目标工程标识commitid2。
3.3对比commitid1和commitid2,如果commitid1与commitid2相同,将当前源码工程从源码工程列表中删除,继续执行3;否则,继续执行3,对下一个源码工程进行检测。
3.4将<当前工程名:commitid2>写入或更新到列表文件,继续执行3。
4.处理完源码工程列表后,对壳工程进行编译。
5.编译完成后生成所有在3处理后的所有源码工程的静态库。
6.修改本地的列表文件,将3处理后的源码工程以及对应的commitid2写入列表文件。
7.将本地修改完的列表文件同步到远程服务器,即在另外的静态库生成服务器上也能同步到其它任何一台生成库服务器的增量信息。
从而通过对工程标识进行比对,判断源码文件中的工程信息是否为最新的工程信息,避免对未更新的工程信息进行编译,减少了编译时间,提高静态库生成的效率,保证了服务器资源的充分利用,以及通过对列表文件进行服务器之间的共享,实现了在另外的静态库生成服务器上,也可以获得其他任意一台生成库服务器的增量信息,进而实现增量信息的共享。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图4,示出了本发明的一种静态库的生成装置实施例的结构框图,具体可以包括如下模块:
源码文件获取模块401,用于获取源码文件,所述源码文件中包括至少一个子工程;
工程数据获取模块402,用于获取所述子工程的本地工程标识,与针对所述子工程的更新数据,所述更新数据包括所述子工程的目标工程标识,以及所述子工程的目标工程信息;
工程信息更改模块403,用于若所述目标工程标识与所述本地工程标识不同,则将所述子工程在所述源码文件中的本地工程信息替换为所述目标工程信息;
源码文件编译模块404,用于编译更新后的源码文件,生成与所述至少一个子工程对应的静态库。
在本发明的一种可选实施例中,所述工程数据获取模块402包括:
更新文件获取子模块,用于获取针对所述源码文件的本地更新文件,所述本地更新文件包括所述至少一个子工程与工程标识之间的对应关系;
本地工程标识提取子模块,用于从所述本地更新文件中,提取所述子工程的本地工程标识;
更新数据获取子模块,用于从预设的服务器中,获取所述子工程的目标工程标识与目标工程信息。
在本发明的一种可选实施例中,还包括:
更新文件生成模块,用于将所述本地更新文件中所述子工程的本地工程标识更新为所述目标工程标识,生成目标更新文件。
在本发明的一种可选实施例中,还包括:
更新文件同步模块,用于将所述目标更新文件同步于所述服务器中。
在本发明的一种可选实施例中,还包括:
子工程移除模块,用于若所述目标工程标识与所述本地工程标识相同,则将所述子工程从所述源码文件中移除。
在本发明的一种可选实施例中,所述源码文件获取模块401包括:
壳工程创建子模块,用于创建一针对预设的应用程序的壳工程,并获取与所述应用程序对应的至少一个子工程;
源码文件生成子模块,用于在所述壳工程中集成所述至少一个子工程,生成与所述应用程序匹配的源码文件。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
另外,本发明实施例还提供一种电子设备,如图5所示,包括处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信,
存储器503,用于存放计算机程序;
处理器501,用于执行存储器503上所存放的程序时,实现如下步骤:
获取源码文件,所述源码文件中包括至少一个子工程;
获取所述子工程的本地工程标识,与针对所述子工程的更新数据,所述更新数据包括所述子工程的目标工程标识,以及所述子工程的目标工程信息;
若所述目标工程标识与所述本地工程标识不同,则将所述子工程在所述源码文件中的本地工程信息替换为所述目标工程信息;
编译更新后的源码文件,生成与所述至少一个子工程对应的静态库。
在本发明的一种可选实施例中,所述获取所述子工程的本地工程标识,与针对所述子工程的更新数据,包括:
获取针对所述源码文件的本地更新文件,所述本地更新文件包括所述至少一个子工程与工程标识之间的对应关系;
从所述本地更新文件中,提取所述子工程的本地工程标识;
从预设的服务器中,获取所述子工程的目标工程标识与目标工程信息。
在本发明的一种可选实施例中,还包括:
将所述本地更新文件中所述子工程的本地工程标识更新为所述目标工程标识,生成目标更新文件。
在本发明的一种可选实施例中,还包括:
将所述目标更新文件同步于所述服务器中。
在本发明的一种可选实施例中,还包括:
若所述目标工程标识与所述本地工程标识相同,则将所述子工程从所述源码文件中移除。
在本发明的一种可选实施例中,所述获取源码文件,包括:
创建一针对预设的应用程序的壳工程,并获取与所述应用程序对应的至少一个子工程;
在所述壳工程中集成所述至少一个子工程,生成与所述应用程序匹配的源码文件。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的静态库的生成方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的静态库的生成方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (12)

1.一种静态库的生成方法,其特征在于,包括:
获取源码文件,所述源码文件中包括至少一个子工程;
获取所述子工程的本地工程标识,与针对所述子工程的更新数据,所述更新数据包括所述子工程的目标工程标识,以及所述子工程的目标工程信息;
若所述目标工程标识与所述本地工程标识不同,则将所述子工程在所述源码文件中的本地工程信息替换为所述目标工程信息;
编译更新后的源码文件,生成与所述至少一个子工程对应的静态库;
其中,所述方法还包括:
若所述目标工程标识与所述本地工程标识相同,则将所述子工程从源码文件中移除并调用已有的所述静态库;
其中,所述获取所述子工程的本地工程标识,与针对所述子工程的更新数据,包括:
获取针对所述源码文件的本地更新文件,所述本地更新文件包括所述至少一个子工程与工程标识之间的对应关系。
2.根据权利要求1所述的方法,其特征在于,所述获取所述子工程的本地工程标识,与针对所述子工程的更新数据,还包括:从所述本地更新文件中,提取所述子工程的本地工程标识;
从预设的服务器中,获取所述子工程的目标工程标识与目标工程信息。
3.根据权利要求2所述的方法,其特征在于,还包括:
将所述本地更新文件中所述子工程的本地工程标识更新为所述目标工程标识,生成目标更新文件。
4.根据权利要求3 所述的方法,其特征在于,还包括:
将所述目标更新文件同步于所述服务器中。
5.根据权利要求1所述的方法,其特征在于,所述获取源码文件,包括:
创建一针对预设的应用程序的壳工程,并获取与所述应用程序对应的至少一个子工程;
在所述壳工程中集成所述至少一个子工程,生成与所述应用程序匹配的源码文件。
6.一种静态库的生成装置,其特征在于,包括:
源码文件获取模块,用于获取源码文件,所述源码文件中包括至少一个子工程;
工程数据获取模块,用于获取所述子工程的本地工程标识,与针对所述子工程的更新数据,所述更新数据包括所述子工程的目标工程标识,以及所述子工程的目标工程信息;
工程信息更改模块,用于若所述目标工程标识与所述本地工程标识不同,则将所述子工程在所述源码文件中的本地工程信息替换为所述目标工程信息;
源码文件编译模块,用于编译更新后的源码文件,生成与所述至少一个子工程对应的静态库;
其中,所述装置还包括:
子工程移除模块,用于若所述目标工程标识与所述本地工程标识相同,则将所述子工程从源码文件中移除并调用已有的所述静态库;
其中,所述工程数据获取模块,包括:
更新文件获取子模块,用于获取针对所述源码文件的本地更新文件,所述本地更新文件包括所述至少一个子工程与工程标识之间的对应关系。
7.根据权利要求6所述的装置,其特征在于,所述工程数据获取模块包括:本地工程标识提取子模块,用于从所述本地更新文件中,提取所述子工程的本地工程标识;
更新数据获取子模块,用于从预设的服务器中,获取所述子工程的目标工程标识与目标工程信息。
8.根据权利要求7所述的装置,其特征在于,还包括:
更新文件生成模块,用于将所述本地更新文件中所述子工程的本地工程标识更新为所述目标工程标识,生成目标更新文件。
9.根据权利要求8 所述的装置,其特征在于,还包括:
更新文件同步模块,用于将所述目标更新文件同步于所述服务器中。
10.根据权利要求6所述的装置,其特征在于,所述源码文件获取模块包括:
壳工程创建子模块,用于创建一针对预设的应用程序的壳工程,并获取与所述应用程序对应的至少一个子工程;
源码文件生成子模块,用于在所述壳工程中集成所述至少一个子工程,生成与所述应用程序匹配的源码文件。
11.一种电子设备,其特征在于,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述电子设备执行如权利要求1-5任一项所述的方法。
12.一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如权利要求1-5任一项所述的方法。
CN202010725152.3A 2020-07-24 2020-07-24 一种静态库的生成方法和装置 Active CN111984264B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010725152.3A CN111984264B (zh) 2020-07-24 2020-07-24 一种静态库的生成方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010725152.3A CN111984264B (zh) 2020-07-24 2020-07-24 一种静态库的生成方法和装置

Publications (2)

Publication Number Publication Date
CN111984264A CN111984264A (zh) 2020-11-24
CN111984264B true CN111984264B (zh) 2021-11-16

Family

ID=73438913

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010725152.3A Active CN111984264B (zh) 2020-07-24 2020-07-24 一种静态库的生成方法和装置

Country Status (1)

Country Link
CN (1) CN111984264B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112596734B (zh) * 2020-12-15 2024-06-07 五八同城信息技术有限公司 静态库生成方法及装置
CN112650498B (zh) * 2020-12-21 2022-05-17 北京五八信息技术有限公司 静态库集成方法、装置、电子设备及存储介质
CN112949272A (zh) * 2021-02-26 2021-06-11 中国联合网络通信集团有限公司 一种设计文件的生成方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9134975B1 (en) * 2014-08-22 2015-09-15 International Business Machines Corporation Determining which computer programs are candidates to be recompiled after application of updates to a compiler
CN105843662A (zh) * 2016-03-28 2016-08-10 乐视控股(北京)有限公司 一种软件产品编译方法及设备
CN106775744A (zh) * 2016-12-28 2017-05-31 北京五八信息技术有限公司 一种生成静态库的方法和装置
CN108279904A (zh) * 2017-12-26 2018-07-13 努比亚技术有限公司 代码编译方法及终端
CN109144519A (zh) * 2018-08-23 2019-01-04 广州视源电子科技股份有限公司 升级包的生成方法、装置、计算机设备和存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107608677B (zh) * 2017-09-05 2020-11-03 腾讯科技(深圳)有限公司 一种编译处理方法、装置及电子设备
CN107885521A (zh) * 2017-12-11 2018-04-06 凌云天博光电科技股份有限公司 软件工程项目自动生成/更新方法、装置及系统
CN110119274A (zh) * 2018-02-05 2019-08-13 北京智明星通科技股份有限公司 一种数据编译的方法、装置以及电子终端、计算机可读存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9134975B1 (en) * 2014-08-22 2015-09-15 International Business Machines Corporation Determining which computer programs are candidates to be recompiled after application of updates to a compiler
CN105843662A (zh) * 2016-03-28 2016-08-10 乐视控股(北京)有限公司 一种软件产品编译方法及设备
CN106775744A (zh) * 2016-12-28 2017-05-31 北京五八信息技术有限公司 一种生成静态库的方法和装置
CN108279904A (zh) * 2017-12-26 2018-07-13 努比亚技术有限公司 代码编译方法及终端
CN109144519A (zh) * 2018-08-23 2019-01-04 广州视源电子科技股份有限公司 升级包的生成方法、装置、计算机设备和存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于Eclipse的嵌入式集成开发环境工程管理;田丹 等;《微处理机》;20150430;第36卷(第2期);第29-34页 *

Also Published As

Publication number Publication date
CN111984264A (zh) 2020-11-24

Similar Documents

Publication Publication Date Title
CN111984264B (zh) 一种静态库的生成方法和装置
CN108228814B (zh) 数据同步方法及装置
CN107783766B (zh) 对应用程序的文件进行清理的方法和装置
CN111460241B (zh) 一种数据查询方法、装置、电子设备及存储介质
CN106557307B (zh) 业务数据的处理方法及处理系统
CN110032568B (zh) 数据结构的读取及更新方法、装置、电子设备
CN111124480B (zh) 应用程序包的生成方法、装置、电子设备及存储介质
CN111443920B (zh) 一种框架迁移方法及装置
CN109672608B (zh) 根据时间发送消息的方法
CN114780138B (zh) 流场模拟软件代码版本管理方法、装置和存储介质
CN110737437A (zh) 一种基于代码集成的编译方法和装置
CN111104151A (zh) 一种基于Shell脚本的Git代码简化的管理方法
CN113885920A (zh) 机器学习模型的热更新方法、装置、电子设备及存储介质
CN108733758B (zh) 酒店静态数据推送方法、装置、电子设备及可读存储介质
CN114327761A (zh) 一种虚拟机批量创建方法、装置、电子设备及存储介质
CN113821249A (zh) 项目开发配置的方法、装置、电子设备和可读存储介质
CN111124883A (zh) 一种基于树形表格的测试用例库引入方法、系统及设备
CN112925561B (zh) 一种软件开发方法、装置、计算机设备及存储介质
CN115543967A (zh) 一种数据迁移方法、装置、电子设备及计算机可读介质
CN114625372A (zh) 组件自动编译方法、装置、计算机设备及存储介质
CN114416641A (zh) 文件数据的处理方法、装置、电子设备及存储介质
CN115705297A (zh) 代码调用检测方法、装置、计算机设备以及存储介质
CN114253595A (zh) 代码仓库管理方法、装置、计算机设备及存储介质
CN111736848A (zh) 包冲突定位方法、装置、电子设备及可读存储介质
CN116483735B (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
GR01 Patent grant
GR01 Patent grant