CN110764778A - 应用构建中的预编译方法、装置、设备及存储介质 - Google Patents

应用构建中的预编译方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN110764778A
CN110764778A CN201910999132.2A CN201910999132A CN110764778A CN 110764778 A CN110764778 A CN 110764778A CN 201910999132 A CN201910999132 A CN 201910999132A CN 110764778 A CN110764778 A CN 110764778A
Authority
CN
China
Prior art keywords
library
target
dependency
private
dependent
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.)
Granted
Application number
CN201910999132.2A
Other languages
English (en)
Other versions
CN110764778B (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.)
Shenzhen Zhen Ai Jie Yun Information Technology Co Ltd
Original Assignee
Shenzhen Zhen Ai Jie Yun Information Technology 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 Shenzhen Zhen Ai Jie Yun Information Technology Co Ltd filed Critical Shenzhen Zhen Ai Jie Yun Information Technology Co Ltd
Priority to CN201910999132.2A priority Critical patent/CN110764778B/zh
Publication of CN110764778A publication Critical patent/CN110764778A/zh
Application granted granted Critical
Publication of CN110764778B publication Critical patent/CN110764778B/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
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • 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应用构建过程中,都会使用到开源依赖库,开源依赖库是以源码的方式提供的,因此,在每次构建应用的生产环境中进行编译时,都需要将开源依赖库编译成二进制文件。由于开源依赖库的种类较为固定,且常用的开源依赖库中的代码较为稳定可靠,这就使得上述各种应用构建中的编译过程都会对常用的开源依赖库进行编译,这就导致对开源依赖库的编译往往是重复的,这些重复的编译过程就会延长整个编译过程所需要的时间,降低了编译速度。
发明内容
为至少在一定程度上克服相关技术中存在的问题,本申请提供一种应用构建中的预编译方法、装置、设备及存储介质。
根据本申请的第一方面,提供一种应用构建中的预编译方法,包括:
获取环境参数中的参数内容;
根据所述参数内容对当前的应用构建环境进行切换;
当所述当前的应用构建环境切换为第一环境时,将目标依赖库预先编译为二进制文件,根据所述二进制文件生成私有依赖库;
当所述当前的应用构建环境切换为第二环境时,获取所述私有依赖库并进行安装,运行所述私有依赖库。
根据本申请的第二方面,提供一种应用构建中的预编译装置,包括:
获取模块,用于获取环境参数中的参数内容;
切换模块,用于根据所述参数内容对当前的应用构建环境进行切换;
第一处理模块,用于当所述当前的应用构建环境切换为第一环境时,将目标依赖库预先编译为二进制文件,根据所述二进制文件生成私有依赖库;
第二处理模块,用于当所述当前的应用构建环境切换为第二环境时,获取所述私有依赖库并进行安装,运行所述私有依赖库。
根据本申请的第三方面,提供一种计算机设备,包括:
存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如本申请实施例第一方面所述的方法的步骤。
根据本申请的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如本申请实施例第一方面所述的方法的步骤。
本申请提供的技术方案可以包括以下有益效果:在获取到环境参数中的参数内容后,根据参数内容切换当前的应用构建环境,将当前的应用构建环境切换为第一环境时,将目标依赖库预先编译为二进制文件并根据该二进制文件生成私有依赖库,将当前环境切换为第二环境时,获取上述私有依赖库并安装,然后运行私有依赖库,以避免在第二环境中直接安装未编译的目标依赖库。由于第二环境中,安装了根据二进制文件生成的私有依赖库,而且该二进制文件是由目标依赖库编译得到的,因此,在第二环境中构建应用时,就无需将目标依赖库进行编译,直接使用私有依赖库中的二进制文件即可,因此,节省了本来需要编译目标依赖库所需要的时间,编译速度会加快。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是本申请中的一个实施例提供的一种应用构建中的预编译方法流程示意图
图2是本申请的一个实施例提供的一种应用构建中的预编译方法中确定目标依赖库的流程示意图。
图3是本申请的一个实施例提供的一种应用构建中的预编译方法中确定目标依赖库的流程示意图。
图4是本申请的一个实施例提供的一种应用构建中的预编译方法中确定目标依赖库的流程示意图。
图5是本申请的一个实施例提供的一种应用构建中的预编译方法中生成私有依赖库的流程示意图。
图6是本申请的另一实施例提供的一种应用构建中的预编译方法的流程示意图。
图7是本申请的另一实施例提供的一种应用构建中的预编译装置的结构示意图。
图8是本申请的另一实施例提供的一种计算机设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
请参阅图1,图1是本申请中的一个实施例提供的一种应用构建中的预编译方法流程示意图。
如图1所示,本实施例的应用构建中的预编译方法包括:
步骤S101、获取环境参数中的参数内容。
步骤S102、根据参数内容对当前的应用构建环境进行切换。
步骤S103、当所述当前的应用构建环境切换为第一环境,将目标依赖库预先编译为二进制文件,根据所述二进制文件生成私有依赖库。
步骤S104、当所述当前的应用构建环境切换为第二环境时,获取私有依赖库并进行安装,运行私有依赖库。
一个实施例中,在获取到环境参数中的参数内容后,根据参数内容切换当前的应用构建环境,将当前的应用构建环境切换为第一环境时,将目标依赖库预先编译为二进制文件并根据该二进制文件生成私有依赖库,将当前环境切换为第二环境时,获取上述私有依赖库并安装,然后运行私有依赖库,以避免在第二环境中直接安装未编译的目标依赖库。由于第二环境中,安装了根据二进制文件生成的私有依赖库,而且该二进制文件是由目标依赖库编译得到的,因此,在第二环境中构建应用时,就无需将目标依赖库进行编译,直接使用私有依赖库中的二进制文件即可,因此,节省了本来需要编译目标依赖库所需要的时间,编译速度会加快。
一个实施例中,步骤S101中的环境参数可以是随机定义的参数,也可以是应用构建过程中使用到的某个函数中的参数,比如函数的入参。参数内容可以是预先约定的内容,然后根据约定好的对应规则判断应用构建环境
一个实施例中,步骤S102中的参数内容可以是预先约定的内容,然后根据约定好的对应规则判断应用构建环境。比如,参数内容可以是布尔型的,那么其内容就可以是“true”或“false”,那么就可以约定参数内容为“true”时,对应第一环境,参数内容为“false”时,对应第二环境。当然,参数类型和参数内容均可以自定义,上述对应规则也可以自定义,只要能实现一种参数内容对应一种环境即可。
一个实施例中,第一环境可以是源码环境,比如开发环境;第二环境可以是二进制环境,比如生产环境。
一个实施例中,步骤S103中的目标依赖库可以是满足预设条件的依赖库,上述预设条件可以是发生变更和/或源码版本的依赖库。其中,源码版本的依赖库是由各类编程语言构成的,在二进制环境中无法识别,因此,在二进制环境中,为了识别源码版本的依赖库,会先将源码版本的依赖库编译为二进制版本的依赖库,然后再进行后续步骤。因此,为了减少在第一环境中编译的依赖库的数量,可以仅将发生变更的依赖库和/或源码版本的依赖库作为目标依赖库在第一环境中进行预先编译。
一个实施例中,可以将发生变更的依赖库确定为目标依赖库,具体请参阅图2,图2是本申请的一个实施例提供的一种应用构建中的预编译方法中确定目标依赖库的流程示意图。
如图2所示,确定目标依赖库的具体步骤可以包括:
步骤S201、获取目标变量;目标变量用于记录发生了变更的依赖库对应的目标名称标识;
步骤S202、从目标变量中获取目标名称标识。
步骤S203、确定目标名称标识对应的依赖库为目标依赖库。
一个实施例中,目标变量可以是预先定义的,可以定义其变量类型、变量名称,当然,该变量类型必须是可以记录依赖库名称标识的类型,当执行过程中增加了新的依赖库,该增加的依赖库的名称标识会记录在目标变量中,称为目标变量的变量内容。
一个实施例中,为了增多单个变量的作用,以减少变量的数量,常常会将变量中的变量内容划分为多个字段,每个字段用于存储不同的数据,因此,目标变量的变量内容可以包括目标字段,该目标字段用于记录上述目标名称标识,具体的,步骤S202可以有从目标变量中获取目标字段;从目标字段中获取目标名称标识。仅使用目标变量中的目标字段记录目标名称标识,目标变量中的其它字段可以自定义存储其它内容,有效减少了变量的数量。
一个实施例中,以基于CocoaPods工具构建应用为例,该目标变量所在的函数可以是post_install函数,post_install函数中包括analysis_result成员变量,而analysis_result成员变量中的podfile_state变量即为目标变量,而podfile_state变量中的changed字段即为目标字段。
一个实施例中可以将依赖库中的开源版本的依赖库作为目标依赖库,具体请参阅图3,图3是本申请的一个实施例提供的一种应用构建中的预编译方法中确定目标依赖库的流程示意图。
如图3所示,确定目标依赖库的具体步骤可以包括:
步骤S301、获取所有依赖库的名称标识。
步骤S302、根据名称标识获取与各依赖库对应的依赖库实例。
步骤S303、对各依赖库实例执行预设命令,得到对应的执行结果。
步骤S304、确定执行结果为目标结果对应的依赖库实例为目标依赖库实例。
步骤S305、确定目标依赖库实例对应的依赖库为目标依赖库。
一个实施例中,可以先获取所有依赖库的名称标识,然后根据该名称标识获取各依赖库对应的依赖库实例,对各依赖库实例执行预设命令后得到执行结果,并将执行结果为目标结果所对应的依赖库实例确定为目标依赖库实例,而目标依赖库实例对应的依赖库就确定为目标依赖库。具体的,针对于不同版本的依赖库(此处指开源版本的依赖库或二进制版本的依赖库),对其对应的依赖库实例执行预设命令所得到的执行结果也不同,比如,对于开源版本的依赖库对应的依赖库实例,执行预设命令得到的执行结果可以为“true”,对于二进制版本的依赖库对应的依赖库实例,执行预设命令得到的执行结果可以为“false”。当然,上述执行结果与依赖库类型的对应关系与预设命令相关,均可以进行自定义。
一个实施例中,以基于CocoaPods工具构建应用为例,依赖库实例存在于analysis_result成员变量的pod_targets数组中,可以在pod_targets数组中查找出类型为Pod::PodTarget的依赖库实例,预设命令可以为“should_build?”命令,而执行结果为true即为目标结果。判断“should_build?”命令为true时依赖库实例对应的发生变更的依赖库为开源依赖库;判断“should_build?”命令为false时依赖库实例对应的发生变更的依赖库为闭源依赖库。
一个实施例中,还可以将发生变更的依赖库中的开源版本的依赖库作为目标依赖库,具体请参阅图4,图4是本申请的一个实施例提供的一种应用构建中的预编译方法中确定目标依赖库的流程示意图。
如图4所示,确定目标依赖库的具体步骤可以包括:
步骤S401、获取目标变量;目标变量用于记录发生了变更的依赖库对应的目标名称标识;
步骤S402、从目标变量中获取目标名称标识;
步骤S403、获取与名称标识为各目标名称标识的依赖库相对应的依赖库实例;
步骤S404、对各依赖库实例执行预设命令,得到对应的执行结果;
步骤S405、确定执行结果为目标结果对应的依赖库实例为目标依赖库实例;
步骤S406、确定目标依赖库实例对应的依赖库为目标依赖库。
一个实施例中,可以先确定发生变更的依赖库,然后在发生变更的依赖库中选择开源版本的依赖库在第一环境中进行预先编译。首先获取用于记录发生了变更的依赖库对应的目标名称标识的目标变量,然后从目标变量中获取目标名称标识,再获取与名称标识为各目标名称标识的依赖库相对应的依赖库实例,分别对上述依赖库实例执行预设命令得到对应的执行结果,执行结果分为目标结果时,将该执行结果对应的依赖库实例确定为目标依赖库实例,最后将目标依赖库实例对应的依赖库确定为目标依赖库。
一些是实施例中,上述确定目标依赖库的过程可以发生在步骤S102和步骤S103之间。
一个实施例中,步骤S103的根据二进制文件生成私有依赖库的具体步骤可以参阅图5,图5是本申请的一个实施例提供的一种应用构建中的预编译方法中生成私有依赖库的流程示意图。
如图5所示,生成私有依赖库的具体步骤可以包括:
步骤S501、生成初始私有依赖库;初始私有依赖库的依赖项为空;
步骤S502、将二进制文件设置为初始私有依赖库的依赖项,得到私有依赖库。
一个实施例中,首先生成一个初始私有依赖库,该初始私有依赖库的架构与常规私有依赖库的架构相同,但是所依赖的依赖项为空,然后将预先编译得到的二进制文件设置为初始私有依赖库的依赖项,从而得到私有依赖库。
一个实施例中,步骤S104中还可以包括有移除不需要的依赖库的步骤,该移除步骤可以设置在安装私有依赖库之后,且运行私有依赖库之前。第二环境中,除私有依赖库之外,还可能需要安装其他二进制版本的依赖库,即除私有依赖库外的待安装依赖库,此时,可以先将其他待安装依赖库进行安装,然后获取已经安装好的所有依赖库,最后将安装好的所有依赖库中除待安装依赖库和私有依赖库之外的依赖库移除。
一个实施例中,本申请的预编译方法可以基于应用构建过程中的预设管理工具来实现,比如CocoaPods工具。CocoaPods工具是OS X和iOS下的一个第三类库管理工具,通过CocoaPods工具可以为项目添加被称为“Pods”的依赖库(这些依赖库必须是CocoaPods本身所支持的),并且可以轻松管理其版本。当本申请的预编译方法基于CocoaPods工具实现时,步骤S101中的环境参数就可以是CocoaPods命令入参。
下面以基于CocoaPods工具为例对本申请的预编译方法进行说明。请参阅图6,图6是本申请的另一实施例提供的一种应用构建中的预编译方法的流程示意图。
步骤S601、根据CocoaPods工具中的预先创建的CocoaPods命令入参的参数内容切换当前应用构建环境;当参数内容为true时,应用构建环境为生产环境;当参数内容为false时,应用构建环境为开发环境。
步骤S602、根据参数内容对私有依赖库和各闭源依赖库进行声明。
一个实施例中,闭源依赖库是指二进制版本的依赖库。该处的声明是指指明私有依赖库和一些闭源依赖库是需要进行安装的。
步骤S603、根据CocoaPods工具的安装特性安装经过声明的依赖库。
一个实施例中,步骤S602和步骤S603具体可以通过下述程序代码实现,预先创建的CocoaPods命令入参的参数类型为布尔型,CocoaPods命令入参的命名可以但不仅限于为USE_LIB。CocoaPods命令入参可以称为键值,是为了在函数内部获取参数内容的一个键。其程序伪码可以示例如下:
上述程序伪码中,若USE_LIB为false(不传入USE_LIB则默认为false),则是处于开发环境,此时会使用命令env USE_LIB=false pod install或者pod install,则CocoaPods工具会进行B、C的安装。如果USE_LIB为true,则判断为生产环境,此时会使用命令env USE_LIB=true pod install,则CocoaPods会只会进行A库的安装,B、C库则会被移除。由于CocoaPods工具的安装特性,即只会安装声明的依赖库,没有声明的但是已经安装的都会被移除。
步骤S604、获取应用构建中发生变更的依赖库。
步骤S605、判断发生变更的依赖库是否为开源依赖库,得到第一判断结果。
步骤S606、当第一判断结果为是时,对发生变更的依赖库进行编译,得到二进制文件。
步骤S607、将二进制文件存储到预设目录中。
步骤S608、根据预设目录中的所有二进制文件生成私有依赖库。
一个实施例中,上述各步骤还可以通过手动方式触发执行。
若通过手动方式触发执行,上述步骤S101中的参数内容由用户进行输入。
而上述步骤S103中的将目标依赖库编译为二进制文件、根据二进制文件生成私有依赖库以及步骤S103中的安装私有依赖库都需要手动进行触发,然后才会执行。
一个实施例中,在安装私有依赖库等依赖库时,需要设置好相应的编译参数和链接参数才能够实现依赖库的安装集成。由于依赖库分为开源依赖库和闭源依赖库,若通过手动方式触发安装依赖库,需要根据依赖库的类型触发不同的安装过程。其中,依赖库可以是开源依赖库和闭源依赖库,而闭源依赖库又分为静态库和动态库。
一个实施例中,若依赖库为闭源依赖库,则需要区分闭源依赖库为静态库还是动态库,静态库需要设置HEADER_SEARCH_PATHS,指定闭源静态依赖库的头文件路径,LIBRARY_SEARCH_PATHS,指定闭源静态依赖库的可执行文件路径。
如果是动态依赖库,需要设置FRAMEWORK_SEARCH_PATHS,指定闭源动态依赖库的路径。如果闭源依赖库还有更多的链接需求还需要在OTHER_LDFLAGS加入更多设置参数:如使用了iOS的category技术对***类库做了扩展还需要在OTHER_LDFLAGS加入-Objc。如果闭源依赖库还依赖了更多的***类库,也需要在General-Linked Frameworks andLibraries中添加依赖的***类库。
若通过CocoaPods工具自动执行,则本实施例的步骤S101可以包括:根据CocoaPods工具中的预先创建的CocoaPods命令入参的参数内容判断当前应用构建环境;参数内容包括true或false;当参数内容为true时,应用构建环境为生产环境;当参数内容为false时,应用构建环境为开发环境。
一个实施例中,CocoaPods在安装依赖库结束时,会回调一个post_install的hook函数,hook函数是指允许开发者将额外逻辑***到安装依赖库过程中的函数,开发者***的额外逻辑即为hook,也就是本实施例中的应用构建中的预编译方法。
请参阅图7,图7是本申请的另一实施例提供的一种应用构建中的预编译装置的结构示意图。
如图7所示,本实施例提供的应用构建中的预编译装置可以包括:
获取模块71,用于获取环境参数中的参数内容;
切换模块72,用于根据参数内容对当前的应用构建环境进行切换;
第一处理模块73,用于当当前的应用构建环境切换为第一环境时,将目标依赖库预先编译为二进制文件,根据二进制文件生成私有依赖库;
第二处理模块74,用于当当前的应用构建环境切换为第二环境时,获取私有依赖库并进行安装,运行私有依赖库。
请参阅图8,图8是本申请的另一实施例提供的一种计算机设备的结构示意图。
如图8所示,本实施例提供的计算机设备包括:存储器81和处理器82,存储器存储有计算机程序,处理器执行计算机程序时实现应用构建中的预编译方法的步骤。
本申请的另一实施例提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现应用构建中的预编译方法中的各个步骤。
其中,应用构建中的预编译方法中的各个步骤可参考上述有关该方法的实施例中的说明,此处不做详细阐述说明。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。
需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是指至少两个。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行***执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (10)

1.一种应用构建中的预编译方法,其特征在于,包括:
获取环境参数中的参数内容;
根据所述参数内容对当前的应用构建环境进行切换;
当所述当前的应用构建环境切换为第一环境时,将目标依赖库预先编译为二进制文件,根据所述二进制文件生成私有依赖库;
当所述当前的应用构建环境切换为第二环境时,获取所述私有依赖库并进行安装,运行所述私有依赖库。
2.根据权利要求1所述的方法,其特征在于,在所述根据所述参数内容对当前的应用构建环境进行切换之前,所述方法还包括:
获取目标变量;所述目标变量用于记录发生了变更的依赖库对应的目标名称标识;
从所述目标变量中获取目标名称标识;
确定所述目标名称标识对应的依赖库为目标依赖库。
3.根据权利要求2所述的方法,其特征在于,所述目标变量的变量内容包括目标字段;所述目标字段记录有所述目标名称标识;
所述从所述目标变量中获取所述目标名称标识,包括:
从所述目标变量中获取所述目标字段;
从所述目标字段中获取所述目标名称标识。
4.根据权利要求1所述的方法,其特征在于,在所述根据所述参数内容对当前的应用构建环境进行切换之前,所述方法还包括:
获取所有依赖库的名称标识;
根据所述名称标识获取与各所述依赖库对应的依赖库实例;
对各所述依赖库实例执行预设命令,得到对应的执行结果;
确定执行结果为目标结果对应的依赖库实例为目标依赖库实例;
确定所述目标依赖库实例对应的依赖库为目标依赖库。
5.根据权利要求1所述的方法,其特征在于,在所述根据所述参数内容对当前的应用构建环境进行切换之前,所述方法还包括:
获取目标变量;所述目标变量用于记录发生了变更的依赖库对应的目标名称标识;
从所述目标变量中获取目标名称标识;
获取与名称标识为各所述目标名称标识的依赖库相对应的依赖库实例;
对各所述依赖库实例执行预设命令,得到对应的执行结果;
确定执行结果为目标结果对应的依赖库实例为目标依赖库实例;
确定所述目标依赖库实例对应的依赖库为目标依赖库。
6.根据权利要求1所述的方法,其特征在于,根据所述二进制文件生成私有依赖库,包括:
生成初始私有依赖库;所述初始私有依赖库的依赖项为空;
将所述二进制文件设置为所述初始私有依赖库的依赖项,得到所述私有依赖库。
7.根据权利要求1所述的方法,其特征在于,在获取所述私有依赖库并进行安装之后,且,在运行所述私有依赖库之前,还包括:
获取除所述私有依赖库外的至少一个待安装依赖库并进行安装;
获取已安装依赖库;
将所述已安装依赖库中除所述待安装依赖库和所述私有依赖库之外的依赖库移除。
8.一种应用构建中的预编译装置,其特征在于,包括:
获取模块,用于获取环境参数中的参数内容;
切换模块,用于根据所述参数内容对当前的应用构建环境进行切换;
第一处理模块,用于当所述当前的应用构建环境切换为第一环境时,将目标依赖库预先编译为二进制文件,根据所述二进制文件生成私有依赖库;
第二处理模块,用于当所述当前的应用构建环境切换为第二环境时,获取所述私有依赖库并进行安装,运行所述私有依赖库。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
CN201910999132.2A 2019-10-21 2019-10-21 应用构建中的预编译方法、装置、设备及存储介质 Active CN110764778B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910999132.2A CN110764778B (zh) 2019-10-21 2019-10-21 应用构建中的预编译方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910999132.2A CN110764778B (zh) 2019-10-21 2019-10-21 应用构建中的预编译方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN110764778A true CN110764778A (zh) 2020-02-07
CN110764778B CN110764778B (zh) 2024-02-06

Family

ID=69332402

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910999132.2A Active CN110764778B (zh) 2019-10-21 2019-10-21 应用构建中的预编译方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN110764778B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111679852A (zh) * 2020-05-29 2020-09-18 北京五八信息技术有限公司 一种冲突依赖库的检测方法及装置
CN112559067A (zh) * 2020-12-08 2021-03-26 浪潮商用机器有限公司 一种动态库加载方法及相关装置
CN112748916A (zh) * 2021-01-13 2021-05-04 叮当快药科技集团有限公司 基于自定义协议的功能模块组件化方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1961287A (zh) * 2002-10-29 2007-05-09 皇家飞利浦电子股份有限公司 创建软件应用
US7499933B1 (en) * 2005-11-12 2009-03-03 Jpmorgan Chase Bank, N.A. System and method for managing enterprise application configuration
CN107832057A (zh) * 2017-10-31 2018-03-23 福建天泉教育科技有限公司 一种iOS应用的构建方法及终端
CN108292209A (zh) * 2016-01-20 2018-07-17 谷歌有限责任公司 选择性地提供缓存和当前编译的应用的方法和装置
CN108804107A (zh) * 2018-05-21 2018-11-13 北京小米移动软件有限公司 应用编译方法及装置
CN109144563A (zh) * 2018-06-29 2019-01-04 平安科技(深圳)有限公司 应用组件构建打包方法、装置及计算机存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1961287A (zh) * 2002-10-29 2007-05-09 皇家飞利浦电子股份有限公司 创建软件应用
US7499933B1 (en) * 2005-11-12 2009-03-03 Jpmorgan Chase Bank, N.A. System and method for managing enterprise application configuration
CN108292209A (zh) * 2016-01-20 2018-07-17 谷歌有限责任公司 选择性地提供缓存和当前编译的应用的方法和装置
CN107832057A (zh) * 2017-10-31 2018-03-23 福建天泉教育科技有限公司 一种iOS应用的构建方法及终端
CN108804107A (zh) * 2018-05-21 2018-11-13 北京小米移动软件有限公司 应用编译方法及装置
CN109144563A (zh) * 2018-06-29 2019-01-04 平安科技(深圳)有限公司 应用组件构建打包方法、装置及计算机存储介质

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111679852A (zh) * 2020-05-29 2020-09-18 北京五八信息技术有限公司 一种冲突依赖库的检测方法及装置
CN111679852B (zh) * 2020-05-29 2023-06-02 北京五八信息技术有限公司 一种冲突依赖库的检测方法及装置
CN112559067A (zh) * 2020-12-08 2021-03-26 浪潮商用机器有限公司 一种动态库加载方法及相关装置
CN112748916A (zh) * 2021-01-13 2021-05-04 叮当快药科技集团有限公司 基于自定义协议的功能模块组件化方法及装置
CN112748916B (zh) * 2021-01-13 2022-08-23 叮当快药科技集团有限公司 基于自定义协议的功能模块组件化方法及装置

Also Published As

Publication number Publication date
CN110764778B (zh) 2024-02-06

Similar Documents

Publication Publication Date Title
US8141059B2 (en) Method and system for avoidance of software conflict
US6681391B1 (en) Method and system for installing software on a computer system
US8434054B2 (en) System and method for managing cross project dependencies at development time
US8739190B2 (en) Determining an extension to use to process an input object to a call in a program
KR101246623B1 (ko) 악성 애플리케이션 진단 장치 및 방법
CN110764778A (zh) 应用构建中的预编译方法、装置、设备及存储介质
KR20160002685A (ko) 드라이버를 로딩하는 방법 및 내장형 장치
US20130014092A1 (en) Multi level virtual function tables
WO2019148816A1 (en) Method and apparatus for data compilation, electronic device and computer readable storage medium
CN105468529A (zh) 一种安卓应用ui控件精准遍历方法和装置
US7765520B2 (en) System and method for managing cross project dependencies at development time
US9513889B2 (en) System and method of automating installation of applications
US10514898B2 (en) Method and system to develop, deploy, test, and manage platform-independent software
WO2015195418A1 (en) Software package management
US20210103514A1 (en) Reusable test cases for identifiable patterns
US10338910B2 (en) Multi-tenant upgrading
CN112379940B (zh) 一种可执行文件处理方法、装置、电子设备及存储介质
CN111124872A (zh) 基于差异代码分析的分支检测方法、装置及存储介质
CN112860312A (zh) 项目依赖关系变化的检测方法及装置
CN109284222B (zh) 软件单元、数据处理***中的项目测试方法、装置及设备
CN111679852A (zh) 一种冲突依赖库的检测方法及装置
CN112000367B (zh) 一种二进制库文件版本兼容性识别方法和装置
CN106557305B (zh) 一种自动回放Android程序的方法及***
CN109766125B (zh) 批次间追平冲突的识别方法及装置
US9335990B2 (en) Method, a system, and a non-transitory computer-readable medium for supporting application development

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