CN112965697B - 一种代码文件的生成方法、装置及电子设备 - Google Patents
一种代码文件的生成方法、装置及电子设备 Download PDFInfo
- Publication number
- CN112965697B CN112965697B CN202110319749.2A CN202110319749A CN112965697B CN 112965697 B CN112965697 B CN 112965697B CN 202110319749 A CN202110319749 A CN 202110319749A CN 112965697 B CN112965697 B CN 112965697B
- Authority
- CN
- China
- Prior art keywords
- code file
- function
- codes
- code
- configuration information
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- 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/44—Encoding
- G06F8/447—Target code generation
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种代码文件的生成方法、装置及电子设备,所述方法包括:获取至少一个功能代码文件对应的目标配置文件,所述目标配置文件包括N个功能模块对应的N个配置信息,每一所述功能代码文件包括至少一个所述功能模块对应的功能代码,N为正整数;基于所述N个配置信息,生成第一代码文件,所述第一代码文件包括M个所述功能模块对应的M个控制代码,M为小于或等于N的正整数;基于所述N个配置信息,获取所述至少一个功能代码文件中,所述M个功能模块对应的M个功能代码;基于所述M个功能代码和所述M个控制代码,生成目标代码文件。本发明实施例提升了SDK代码文件的生成效率。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种代码文件的生成方法、装置及电子设备。
背景技术
软件开发工具包(Software Development Kit,SDK)一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。SDK服务通常面向不同的外部厂商,因此,需要快捷准确地针对不同厂商发布对应SDK。
通常地,一套SDK代码中可以包括多个功能模块的功能代码,并通过功能控制宏控制功能代码的执行与否。在现有技术中,若一套SDK代码中包括功能模块a和功能模块b的功能代码,厂商A需要实现功能模块a的功能,厂商B需要实现功能模块b的功能,开发者需要手动查找功能模块a对应的代码,并修改功能模块a的功能控制宏,测试封包后发送给厂商A,而后再查找功能模块b对应的代码,并修改功能模块b的功能控制宏后,测试封包后发送给厂商B。可见,目前针对不同厂商需求,生成SDK对应的代码文件的方式便捷性较低。
发明内容
本发明实施例的目的在于提供一种代码文件的生成方法、装置及电子设备,以提升现有生成SDK对应的代码文件的便捷性。具体技术方案如下:
在本发明实施的第一方面,首先提供了一种代码文件的生成方法,包括:获取至少一个功能代码文件对应的目标配置文件,所述目标配置文件包括N个功能模块对应的N个配置信息,每一所述功能代码文件包括至少一个所述功能模块对应的功能代码,N为正整数;
基于所述N个配置信息,生成第一代码文件,所述第一代码文件包括M个所述功能模块对应的M个控制代码,M为小于或等于N的正整数;
基于所述N个配置信息,获取所述至少一个功能代码文件中,所述M个功能模块对应的M个功能代码;
基于所述M个功能代码和所述M个控制代码,生成目标代码文件。
在本发明实施的第二方面,还提供了一种代码文件的生成装置,包括:
第一获取模块,用于获取至少一个功能代码文件对应的目标配置文件,所述目标配置文件包括N个功能模块对应的N个配置信息,每一所述功能代码文件包括至少一个所述功能模块对应的功能代码,N为正整数;
第一生成模块,用于基于所述N个配置信息,生成第一代码文件,所述第一代码文件包括M个所述功能模块对应的M个控制代码,M为小于或等于N的正整数;
第二获取模块,用于基于所述N个配置信息,获取所述至少一个功能代码文件中,所述M个功能模块对应的M个功能代码;
第二生成模块,用于基于所述M个功能代码和所述M个控制代码,生成目标代码文件。
在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的代码文件的生成方法。
在本发明实施的又一方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的代码文件的生成方法。
本发明实施例提供的代码文件的生成方法,通过获取目标配置文件,可以在N个功能模块中得知厂商所需的M个功能模块,并可以根据M个功能模块获取对应的控制代码,同时可以根据目标配置文件获知N个功能模块对应的功能代码对应存放于哪些功能代码文件中,而后从至少一个功能代码文件中获取所需的M个功能模块对应的功能代码,并基于M个功能模块对应的功能代码和控制代码生成目标代码文件,从而针对不同厂商的不同功能需求,可以自动生成包括不同功能模块的目标代码文件,进而提升了生成代码文件的便捷性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1是本发明实施例中的代码文件的生成方法的流程图之一;
图2是本发明实施例中的代码文件的生成方法的配置信息的示意图;
图3是本发明实施例中的代码文件的生成方法的控制优先级示意图;
图4是本发明实施例中的代码文件的生成方法的流程图之二;
图5是本发明实施例中的代码文件的生成装置的结构示意图;
图6是本发明实施例中的电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
软件开发工具包(Software Development Kit,SDK)一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。
对于SDK代码文件而言,其一般包括系统SDK代码文件和应用SDK代码文件。系统SDK代码文件是为特定的软件包、软件框架、硬件平台或操作系统等建立应用时所使用的开发工具集合;应用SDK代码文件是基于系统SDK开发的独立于具体业务而具有特定功能的集合。
需要说明的是,在本发明实施例中,生成的目标代码文件可以是上文所提及的应用SDK代码文件,基于IOS系统的SDK代码文件,或者Android系统的SDK代码文件生成。
对于不同的外部厂商而言,往往针对一套应用SDK代码文件,有不同的功能需求。举例而言,开发者开发出一套SDK代码文件,其中可以包括第三方登录功能的功能代码、注册功能的功能代码或者搜索功能的功能代码等。而第三方登录功能可以包括针对不同的第三方应用而设置的多个第三方登录模块,例如针对第三方应用程序A和第三方应用程序B设置的登录模块A和登录模块B,登录模块A和登录模块B的功能代码可以分别通过功能控制宏来控制编译过程中的执行与否,例如仅执行登录模块A的功能代码或者仅执行登录模块B的功能代码,从而确保代码不报错。
而对于不同的厂商而言,厂商A可能仅需求实现第三方应用程序A对应的登录模块A,厂商B可能仅需求实现第三方应用程序B对应的登录模块B。在此种情况下,现有技术中开发者需要手动获取登录模块A的功能代码,并手动修改登录模块A的功能控制宏,再基于登录模块A的功能代码和功能控制宏生成面向厂商A的新SDK代码文件。再手动通过类似流程,生成面向厂商B的新SDK代码文件,流程较为繁琐。为了简化流程,提升SDK代码文件生成的便捷性,本发明实施例提供了一种代码文件的生成方法。
参见图1,图1是本发明实施例提供的一种代码文件的生成方法的流程图,如图1所示,包括以下步骤:
步骤101、获取至少一个功能代码文件对应的目标配置文件,所述目标配置文件包括N个功能模块对应的N个配置信息,每一所述功能代码文件包括至少一个所述功能模块对应的功能代码,N为正整数。
在上述步骤101中,上述功能代码文件可以在生成最初版本的SDK代码文件时生成,可以包括实现同一功能,例如上述第三方登录功能的一个或多个功能模块对应的功能代码,而上述目标配置文件可以对应至少一个功能代码文件,每一个代码文件实现的功能可以不同,从而在厂商需求不止一项功能时,也可以通过本发明实施例实现目标代码文件的生成。
上述目标配置文件可以由开发者预先配置,包括N个功能模块对应的N个配置信息。具体地,参照图2,一个功能模块的配置信息可以包括功能模块的标识信息、统一资源定位器(Uniform Resource Locator,URL)地址和对应的功能代码文件等。
上述功能模块的标识信息,可以基于厂商的需求进行设置。例如,在一可选的实施例中,功能模块A为厂商需求的功能模块时,电子设备可以将功能模块A的标识信息置1,而将不需要的功能模块的标识信息置0,从而电子设备可以通过获取目标配置信息中每一功能模块的标识信息,确定哪些功能模块是厂商需求的功能模块。上述标识信息的设置,可以为开发者根据厂商需求手动预先设置,也可以为电子设备根据厂商发送的需求信息自动修改标识信息,在此不作进一步的限定。
电子设备可以根据预先生成的最初版本的SDK代码文件,获取N个功能模块对应的URL地址和N个功能模块对应的功能代码所存放的功能代码文件的名称,并可以将N个功能模块与至少一个功能代码文件的映射关系写入上述目标配置文件中,从而可以根据上述目标配置文件获知功能模块对应的功能代码存放在哪一功能代码文件中。当然,在其他可选的实施例中,上述URL地址和功能模块和功能代码文件的映射关系也可以由开发者手动进行修改,具体可以根据实际需要进行设置。电子设备可以通过上述目标配置文件的N个配置信息,根据功能模块查找到对应的功能代码文件。
可选地,上述目标配置文件还可以包括厂商所需的SDK代码文件的版本信息,从而最终可以生成厂商所需的版本的目标代码文件。
步骤102、基于所述N个配置信息,生成第一代码文件,所述第一代码文件包括M个所述功能模块对应的M个控制代码,M为小于或等于N的正整数。
在上述步骤102中,电子设备可以基于上述的N个配置信息,获知厂商所需的M个功能模块,从而可以根据M个功能模块获取对应的M个控制代码,并写入第一代码文件中。具体地,上述M个控制代码可以为预置代码,上述配置信息中可以包括功能模块与相应的控制代码的映射关系,例如包括功能模块的名称和控制代码的存储路径的映射表。
上述功能模块对应的控制代码可以为上述的功能控制宏,用于控制功能模块的功能代码执行或不执行。这样,电子设备可以根据上述第一代码文件,来上述控制M个功能模块的功能代码在编译过程中的执行与否。
上述第一代码文件,可以为一个包括上述M个控制代码的代码文件,也可以为M个代码文件,与M个控制代码一一对应,在此不作进一步地限定。
应理解,在一些实施例中,开发者可以预先根据上述N个功能模块,设置N个对应的控制代码,而在此种情况下,上述步骤102即为根据上述目标配置文件,从上述N个控制代码中,获取上述M个控制代码,并将上述M个控制代码写入上述第一代码文件的过程。
步骤103、基于所述N个配置信息,获取所述至少一个功能代码文件中,所述M个功能模块对应的M个功能代码。
在上述步骤103中,电子设备可以基于上述N个配置信息,获知厂商所需的M个功能模块对应的功能代码文件的名称,并通过功能代码文件的名称查找到对应的功能代码文件。这样,电子设备可以从上述至少一个功能代码文件中,提取出上述M个功能模块对应的M个功能代码。
上述功能模块对应的功能代码,即为实现该功能模块的功能所需要的代码,电子设备可以通过运行功能代码实现对应的功能模块的功能。例如,统计功能模块可以包括用于执行统计操作和计数操作等的功能代码;登录功能模块可以包括用于执行验证操作和登录操作等的功能代码。
步骤104、基于所述M个功能代码和所述M个控制代码,生成目标代码文件。
由于在上述步骤102和上述步骤103中已经分别获取了厂商所需的M个功能模块对应的M个控制代码和M个功能代码,上述步骤104中,电子设备可以将M个控制代码与M个功能代码进行对应匹配,并加入相应的配置代码,最终经过封装得到上述目标代码文件。厂商可以在开发应用程序的过程中,通过调用上述目标代码文件实现所需的功能。
具体地,在生成上述目标代码文件的过程中,可以通过脚本检测配置信息中功能模块的标识信息,在标识信息指示功能模块为所需的功能模块的情况下,同时获取上述功能模块对应的控制代码和功能代码,并将控制代码。在一些实施例中,电子设备也可以通过检测功能模块的名称,来实现M个功能代码和M个控制代码的匹配。
本发明实施例提供的代码文件的生成方法,通过获取目标配置文件,可以在N个功能模块中得知厂商所需的M个功能模块,并可以根据M个功能模块获取对应的控制代码,同时可以根据目标配置文件获知N个功能模块对应的功能代码对应存放于哪些功能代码文件中,而后从至少一个功能代码文件中获取所需的M个功能模块对应的功能代码,并基于M个功能模块对应的功能代码和控制代码生成目标代码文件,从而针对不同厂商的不同功能需求,可以自动生成包括不同功能模块的目标代码文件,进而提升了生成代码文件的便捷性。
可选地,上述步骤102具体可以包括:
从所述N个配置信息中获取M个第一配置信息,所述第一配置信息指示所述功能模块为预设的功能模块;
基于所述M个第一配置信息,从预配置的N个控制代码中,获取所述M个功能模块对应的M个控制代码;
基于所述M个控制代码,生成所述第一代码文件。
由上述内容可知,上述功能模块的配置信息可以包括标识信息,用于标识功能模块是否为当前厂商所需的功能模块。可以理解的是,上述标识信息可以由开发者进行手动修改,从而在生成其他厂商所需的SDK代码文件时,根据其他厂商所需的功能模块对标识信息进行修改,从而可以针对不同厂商生成不同的SDK代码文件。
在本发明实施例中,电子设备可以根据上述标识信息,从N个配置信息中获取到M个标识功能模块为所需功能模块的第一配置信息。在得知所需的M个功能模块后,可以从预配置的N个控制代码中,获取M个功能模块对应的M个控制代码,并生成上述第一代码文件。
进一步地,所述基于所述M个控制代码,生成所述第一代码文件的步骤包括:
获取预配置的第三代码文件,所述第三代码文件包括至少一个功能模块对应的控制代码;
将所述第三代码文件中的控制代码删除;
将所述M个控制代码写入所述第三代码文件,得到所述第一代码文件。
由上述内容可知,不同厂商需求实现的功能可能不同,导致所需的功能模块不同。因此,在面向多个厂商需求的情况下,上述生成上述第一代码文件的方法步骤可以多次执行,根据配置信息的不同从而获取到面向不同厂商需求的功能模块所对应的控制代码,并生成上述第一代码文件。
上述第三代码文件可以为电子设备此前生成其他厂商所需求的SDK代码文件时,生成的包含有对应功能模块的控制代码的代码文件,本发明实施例可以获取上述第三代码文件,并将此前的控制代码删除,写入当前所需功能模块对应的M个控制代码,得到上述第一代码文件,从而仅需要对控制代码进行增删即可实现上述第一代码文件的生成,提升了代码文件的生成效率。
需要说明的是,在一些实施例中,上述第一代码文件也可以预先存放有开发软件默认的控制代码,上述基于M个控制代码,生成第一代码文件的过程,可以为在上述第一代码文件中删除功能模块默认的控制代码,增加新的控制代码的过程。
本发明实施例通过在N个配置信息中,获取指示功能模块为预设功能模块的M个第一配置信息,从而可以通过M个第一配置信息获知所需的M个功能模块,进而从预配置的N个控制代码中,获取上述M个功能模块对应的M个控制代码并生成第一代码文件,避免了开发者手动修改所需的功能模块的控制代码,提升了生成目标代码文件的便捷性。除此之外,还提高了代码的可阅读性、可维护性,有利于提升开发效率,进一步的,这还有利于提高目标代码文件的稳定性。
可选地,上述基于所述M个第一配置信息,从预配置的N个控制代码中,获取所述M个功能模块对应的M个控制代码的步骤,可以由电子设备通过执行预配置的ruby脚本中的代码来实现。
上述ruby脚本中可以包括上述目标配置文件和上述预配置的N个控制代码的存放路径,在电子设备执行ruby脚本的过程中,可以通过存放路径分别读取上述目标配置文件和上述N个控制代码,而后获取到所需的M个控制代码,并可以加入资源代码来控制删除原第一代码文件中的默认控制代码,增加新的控制代码。
当然,在其他可选的实施例中,上述步骤也可以通过电子设备执行其他类型的脚本来实现,具体可以根据实际需要进行设置。
可选地,上述步骤103具体可以包括:
从所述N个配置信息中获取M个第二配置信息,所述M个第二配置信息与所述M个功能模块一一对应,所述第二配置信息指示所述功能模块对应的功能代码所属的功能代码文件;
基于所述M个第二配置信息,从所述至少一个功能代码文件中获取所述M个功能模块对应的M个功能代码。
如上所述,上述目标配置文件中还可以存放有N个功能模块与至少一个功能代码文件的映射关系,在上述步骤102已经获知所需的M个功能模块后,在本发明实施例中,可以从上述N个功能模块对应的N个配置信息中,获取与上述M个功能模块对应的M个第二配置信息。上述第二配置信息即指示了上述功能模块对应的功能代码所属的功能代码文件,电子设备可以根据上述M个第二配置信息,从M个功能模块分别对应的功能代码文件中获取到M个功能代码,从而避免了开发者手动查找所需的功能模块对应的功能代码文件,提升了生成目标代码文件的便捷性。
与上述步骤102类似地,上述步骤103也可以通过电子设备运行ruby脚本中的代码来实现。ruby脚本中可以存放有上述至少一个代码文件的存储路径,通过存储路径可以读取上述至少一个代码文件,从而获取上述M个功能代码。
可选地,上述步骤104具体可以包括:
将所述M个功能代码用对应的所述M个控制代码进行包裹,得到第二代码文件;其中,每一所述控制代码用于控制对应的所述功能代码的执行或不执行;
对所述第二代码文件进行编译,得到第一编译文件;
对第一编译文件进行封包,得到所述目标代码文件。
在本发明实施例中,上述将M个功能代码与M个控制代码一一匹配的步骤,即为将M个功能代码用M个功能控制宏进行包裹,这样,电子设备在编译过程中,可以根据M个功能控制宏控制M个功能代码是否执行,从而在编译过程中M个功能代码之间不会发生冲突。由于不同厂商需求的功能模块也可能不同,导致最终生成的SDK代码文件面向不同厂商存在多个版本。采用本发明实施例提供的代码文件的生成方法,可以有效避免人工操作时,因SDK代码文件的版本较多而出现SDK代码文件生成错误的情况,有利于提升开发效率,也有利于提高目标代码文件的稳定性。
应理解,在将M个功能代码用M个控制代码进行包裹后,可以对各个功能模块的功能代码经编译后进行测试,在测试可以正常运行后,通过脚本进行打包封装,最终得到目标代码文件。需要说明的是,由于上述控制代码仅控制对应的功能代码在编译过程中执行与否,从而确保M个功能代码可以顺利进行编译。因此,在最终打包封装,得到目标代码文件的过程中,可以将此前包裹M个功能代码的M个的控制代码删除。
可选地,在上述步骤104之前,上述方法还可以包括:
获取所述第一代码文件的控制优先级;
所述基于所述M个功能代码和所述M个控制代码,生成目标代码文件的步骤包括:
在所述第一代码文件的控制优先级高于或等于预设优先级的情况下,基于所述M个功能代码和所述M个控制代码,生成所述目标代码文件。
在本发明实施例中,上述方法可以应用于IOS系统开发场景下,在该场景下,上述功能模块对应的功能代码所属的功能代码文件,均可以在开发软件的一个工程中进行统一管理,即一个工程下可以包括多个功能代码文件,开发者可以通过调整开发软件中的配置功能来对功能代码文件对应的功能模块进行控制。对于一个工程而言,其存在用于工程的配置功能;而对于工程下的功能代码文件,其也可以存在用于管理功能代码文件对应的功能模块的配置功能;而对于IOS平台而言,也可以存在管理IOS系统的配置功能。
在Xcode开发软件中,上述第一代码文件即为用于控制功能模块的代码文件,即开发者可以在上述至少一个功能代码文件的目录下创建上述第一代码文件,从而通过第一代码文件中的M个控制代码实现对M个功能模块的功能代码的控制。由于Xcode开发软件中存在上述多个配置功能,且上述多个层级的配置功能的优先级均不同,开发者可以调节配置功能的优先级,来确定采用何种配置功能对功能模块进行控制。为了确定上述M个功能模块的功能代码是否需要通过第一代码文件中的M个控制代码控制,电子设备可以预先获取开发软件中当前第一代码文件的控制优先级,若第一代码文件的控制优先级高于其他层级的配置功能的控制优先级,则表示上述功能代码可以由第一代码文件中的控制代码进行控制,进而执行根据上述第一代码文件最终生成目标代码文件的操作,避免了在不需要通过第一代码文件进行控制时,上述第一代码文件中的控制代码覆盖其他层级的配置的情况。
上述功能代码文件可以存在默认设置,因此在生成上述目标代码文件的步骤之前,可以先获取上述第一代码文件的控制优先级,在上述第一代码文件的控制优先级高于或等于默认设置的预设优先级的情况下,基于上述M个功能代码和上述M个控制代码,生成上述目标代码文件。
可以理解的是,在上述第一代码文件的控制优先级低于默认设置的预设优先级的情况下,可以采用默认设置,并由开发者手动修改默认设置中的控制代码。
可选地,在上述步骤101具体可以包括:
向服务端发送配置请求
接收所述服务端发送的所述目标配置文件。
在本发明实施例中,开发者可以将执行上述步骤102和步骤103的ruby脚本上传至云端,同时上传目标配置文件和较早版本的SDK代码文件。厂商可以从云端下载ruby脚本,并从云端获取上述目标配置文件和较早版本的SDK代码文件,在电子设备上运行ruby脚本,从而通过本发明实施例的方法实现上述目标代码文件的生成。
需要说明的是,本发明实施例中介绍的多种可选的实施方式,彼此可以相互结合实现,也可以单独实现,对此本发明实施例不作限定。
参照图3,下面将以IOS平台下的Xcode开发软件为例,对本发明实施例的具体实施方式进行阐述。在IOS平台下的开发软件中,一套SDK代码为一个工程(project),包含了多个功能代码文件(Target),而实现同一功能的一个或多个功能模块的功能代码,可以存放于一个功能代码文件中。生成上述目标代码文件的方法可以包括如下步骤:
步骤201、获取至少一个功能代码文件(Target)的控制优先级。
需要说明的是,在上述步骤201之前,可以先在至少一个功能代码文件(Target)的目录下新建一个xcconfig文件(即上述第一代码文件),该文件的后缀为.xcconfig,并将至少一个功能代码文件(Target)的配置(build setting)的控制优先级调整为xcconfig文件的xcconfig-level,相当于将xcconfig文件的控制优先级设置为高于功能代码文件的配置(build setting)的优先级。这样,在xcconfig文件的控制优先级高于预设优先级的情况下,至少一个功能代码文件(Target)中的功能模块对应的功能代码可以由xcconfig文件中的功能控制宏控制。
若未进行优先级调整,则根据功能代码文件的默认设置的功能控制宏控制功能代码文件中的功能代码,并手动修改默认设置中的功能控制宏,进行编译封包。
参照图4,在IOS平台下的开发软件中,每个工程和每个功能代码文件下都存在相应的配置功能(build setting),不同层级的配置功能(build setting)存在控制优先级如图4所示,优先级的箭头指示由低指向高。在本发明实施例中可以在需要通过上述xcconfig文件控制功能代码文件中的功能代码时,将xcconfig文件的控制优先级调节为高于功能代码文件配置的优先级,从而将至少一个功能代码文件(Target)中的功能模块对应的功能代码由xcconfig文件中的控制代码控制,而不会被其他层级的配置功能覆盖。
步骤202、在工程(project)下创建一个plist文件(即上述目标配置文件),该plist文件包含了上述至少一个功能代码文件的配置信息,和厂商所需的SDK代码文件的版本信息。
步骤203、通过ruby脚本获取plist文件中至少一个功能代码文件的配置信息,获取到所需的功能模块的信息,并根据ruby脚本和配置信息配合增删xcconfig文件中的代码,使得xcconfig文件包括所需的功能模块的功能控制宏。
在上述步骤202之前,可以先判断是否需要plist文件,在不需要plist文件的情况下,可以直接通过ruby脚本修改xcconfig文件。
步骤204、通过ruby脚本获取至少一个功能代码文件中所需功能模块的功能代码,并将所需功能模块的功能代码用对应的功能控制宏进行包裹,进行编译测试,测试后封包生成framework静态库文件,并删除功能控制宏。
本发明实施例在IOS平台的开发软件中,运用ruby脚本进行机器化自动配置生成SDK代码文件,可以极大提升面向不同厂商需求的SDK代码文件的生成效率,并可以降低在面向不同厂商需求的版本下人工操作导致的代码错误的问题。
应理解,本发明提供的代码文件的生成方法可以应用于SDK代码文件的生成中,也可以应用于应用程序的各种配置环境,例如生产环境,测试环境,用户接受度测试(UserAcceptance Test,UAT)环境下进行版本控制和IOS平台下ipa包文件的生成,降低了人为控制的成本。
参见图5,图5是本发明实施例提供的代码文件的生成装置的结构图,如图5所示,上述代码文件的生成装置500包括:
第一获取模块510,用于获取至少一个功能代码文件对应的目标配置文件,所述目标配置文件包括N个功能模块对应的N个配置信息,每一所述功能代码文件包括至少一个所述功能模块对应的功能代码,N为正整数;
第一生成模块520,用于基于所述N个配置信息,生成第一代码文件,所述第一代码文件包括M个所述功能模块对应的M个控制代码,M为小于或等于N的正整数;
第二获取模块530,用于基于所述N个配置信息,获取所述至少一个功能代码文件中,所述M个功能模块对应的M个功能代码;
第二生成模块540,用于基于所述M个功能代码和所述M个控制代码,生成目标代码文件。
可选地,上述第一生成模块520具体可以包括:
第一获取单元,用于从所述N个配置信息中获取M个第一配置信息,所述第一配置信息指示所述功能模块为预设的功能模块;
第二获取单元,用于基于所述M个第一配置信息,从预配置的N个控制代码中,获取所述M个功能模块对应的M个控制代码;
第一生成单元,用于基于所述M个控制代码,生成所述第一代码文件。
可选地,所述第一生成单元具体可以用于:
获取预配置的第三代码文件,所述第三代码文件包括至少一个功能模块对应的控制代码;
将所述第三代码文件中的控制代码删除;
将所述M个控制代码写入所述第三代码文件,得到所述第一代码文件。
可选地,上述第二获取模块520具体可以包括:
第三获取单元,用于从所述N个配置信息中获取M个第二配置信息,所述M个第二配置信息与所述M个功能模块一一对应,所述第二配置信息指示所述功能模块所属的功能代码文件;
第四获取单元,用于基于所述M个第二配置信息,从所述至少一个功能代码文件中获取所述M个功能模块对应的M个功能代码。
可选地,上述第二生成模块540具体可以包括:
包裹单元,用于将所述M个功能代码分别用对应的控制代码进行包裹,得到第二代码文件;其中,每一所述控制代码用于控制对应的所述功能代码的执行或不执行;
编译单元,用于对所述第二代码文件进行编译,得到第一编译文件;
封包单元,用于对第一编译文件进行封包,得到所述目标代码文件。
可选地,上述代码文件的生成装置500还可以包括:
第三获取模块,用于获取所述第一代码文件的控制优先级;
上述第二生成模块540,具体可以用于:
在所述第一代码文件的控制优先级高于或等于预设优先级的情况下,基于所述M个功能代码和所述M个控制代码,生成所述目标代码文件。
可选地,上述第一生成模块520具体可以包括:
发送单元,用于向服务端发送配置请求;
接收单元,用于接收所述服务端发送的所述目标配置文件。
本发明实施例可以通过第一获取模块510获取目标配置文件,在N个功能模块中得知厂商所需的M个功能模块,并可以通过第一生成模块510根据M个功能模块生成对应的控制代码,同时可以根据目标配置文件获知N个功能模块对应的功能代码对应存放于哪些功能代码文件中,而后通过第二获取模块530从至少一个功能代码文件中获取所需的M个功能模块对应的功能代码,并通过第二生成模块540基于M个功能模块对应的功能代码和控制代码生成目标代码文件,从而针对不同厂商的不同功能需求,可以自动生成包括不同功能模块的目标代码文件,进而提升了生成代码文件的便捷性。
本发明实施例提供的执行端能够实现图1-4的方法实施例中代码文件的生成方法实现的各个过程,为避免重复,这里不再赘述。
本发明实施例还提供了一种电子设备,如图6所示,包括处理器601、通信接口602、存储器603和通信总线604,其中,处理器601,通信接口602,存储器603通过通信总线604完成相互间的通信,
存储器603,用于存放计算机程序;
处理器601,用于执行存储器603上所存放的程序时,实现如下步骤:
获取至少一个功能代码文件对应的目标配置文件,所述目标配置文件包括N个功能模块对应的N个配置信息,每一所述功能代码文件包括至少一个所述功能模块对应的功能代码,N为正整数;
基于所述N个配置信息,生成第一代码文件,所述第一代码文件包括M个所述功能模块对应的M个控制代码,M为小于或等于N的正整数;
基于所述N个配置信息,获取所述至少一个功能代码文件中,所述M个功能模块对应的M个功能代码;
基于所述M个功能代码和所述M个控制代码,生成目标代码文件。
上述终端提到的通信总线可以是外设部件互连标准(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 (9)
1.一种代码文件的生成方法,其特征在于,包括:
获取至少一个功能代码文件对应的目标配置文件,所述目标配置文件包括N个功能模块对应的N个配置信息,每一所述功能代码文件包括至少一个所述功能模块对应的功能代码,N为正整数;
基于所述N个配置信息,生成第一代码文件,所述第一代码文件包括M个所述功能模块对应的M个控制代码, M为小于或等于N的正整数;
基于所述N个配置信息,获取所述至少一个功能代码文件中,所述M个功能模块对应的M个功能代码;
基于所述M个功能代码和所述M个控制代码,生成目标代码文件;
其中,所述配置信息包括功能模块的标识信息、统一资源定位器地址和对应的功能代码文件,所述基于所述M个功能代码和所述M个控制代码,生成目标代码文件的步骤之前,所述方法还包括:
获取所述第一代码文件的控制优先级;
所述基于所述M个功能代码和所述M个控制代码,生成目标代码文件的步骤包括:
在所述第一代码文件的控制优先级高于或等于预设优先级的情况下,基于所述M个功能代码和所述M个控制代码,生成所述目标代码文件。
2.根据权利要求1所述的方法,其特征在于,所述基于所述N个配置信息,生成第一代码文件的步骤包括:
从所述N个配置信息中获取M个第一配置信息;
基于所述M个第一配置信息,从预配置的N个控制代码中,获取所述M个功能模块对应的M个控制代码;
基于所述M个控制代码,生成所述第一代码文件。
3.根据权利要求2所述的方法,其特征在于,所述基于所述M个控制代码,生成所述第一代码文件的步骤包括:
获取预配置的第三代码文件,所述第三代码文件包括至少一个功能模块对应的控制代码;
将所述第三代码文件中的控制代码删除;
将所述M个控制代码写入所述第三代码文件,得到所述第一代码文件。
4.根据权利要求1所述的方法,其特征在于,所述基于所述N个配置信息,获取所述至少一个功能代码文件中,所述M个功能模块对应的M个功能代码的步骤包括:
从所述N个配置信息中获取M个第二配置信息,所述M个第二配置信息与所述M个功能模块一一对应,所述第二配置信息指示所述功能模块对应的功能代码所属的功能代码文件;
基于所述M个第二配置信息,从所述至少一个功能代码文件中获取所述M个功能模块对应的M个功能代码。
5.根据权利要求1所述的方法,其特征在于,所述基于所述M个功能代码和所述M个控制代码,生成目标代码文件的步骤包括:
将所述M个功能代码分别用对应的控制代码进行包裹,得到第二代码文件;其中,每一所述控制代码用于控制对应的所述功能代码的执行或不执行;
对所述第二代码文件进行编译,得到第一编译文件;
对所述第一编译文件进行封包,得到所述目标代码文件。
6.根据权利要求1所述的方法,其特征在于,所述获取至少一个功能代码文件对应的目标配置文件的步骤包括:
向服务端发送配置请求;
接收所述服务端发送的所述目标配置文件。
7.一种代码文件的生成装置,其特征在于,包括:
第一获取模块,用于获取至少一个功能代码文件对应的目标配置文件,所述目标配置文件包括N个功能模块对应的N个配置信息,每一所述功能代码文件包括至少一个所述功能模块对应的功能代码,N为正整数;
第一生成模块,用于基于所述N个配置信息,生成第一代码文件,所述第一代码文件包括M个所述功能模块对应的M个控制代码, M为小于或等于N的正整数;
第二获取模块,用于基于所述N个配置信息,获取所述至少一个功能代码文件中,所述M个功能模块对应的M个功能代码;
第二生成模块,用于基于所述M个功能代码和所述M个控制代码,生成目标代码文件;
其中,所述配置信息包括功能模块的标识信息、统一资源定位器地址和对应的功能代码文件,所述代码文件的生成装置还包括:第三获取模块,用于获取所述第一代码文件的控制优先级;
所述第二生成模块,具体用于:在所述第一代码文件的控制优先级高于或等于预设优先级的情况下,基于所述M个功能代码和所述M个控制代码,生成所述目标代码文件。
8.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-6任一所述的方法步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110319749.2A CN112965697B (zh) | 2021-03-25 | 2021-03-25 | 一种代码文件的生成方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110319749.2A CN112965697B (zh) | 2021-03-25 | 2021-03-25 | 一种代码文件的生成方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112965697A CN112965697A (zh) | 2021-06-15 |
CN112965697B true CN112965697B (zh) | 2023-07-25 |
Family
ID=76278442
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110319749.2A Active CN112965697B (zh) | 2021-03-25 | 2021-03-25 | 一种代码文件的生成方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112965697B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113778394B (zh) * | 2021-08-18 | 2024-08-20 | 北京城市网邻信息技术有限公司 | Sdk适配方法、装置、电子设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7500220B1 (en) * | 2003-12-30 | 2009-03-03 | The Mathworks, Inc. | Shared code management |
CN105049532A (zh) * | 2015-08-28 | 2015-11-11 | 北京奇艺世纪科技有限公司 | 一种sdk包的打包方法及装置和下载方法及装置 |
US9383976B1 (en) * | 2015-01-15 | 2016-07-05 | Xerox Corporation | Methods and systems for crowdsourcing software development project |
CN108255481A (zh) * | 2018-01-17 | 2018-07-06 | 北京网信云服信息科技有限公司 | 应用开发方法及相关设备 |
CN108563435A (zh) * | 2018-04-19 | 2018-09-21 | 北京百度网讯科技有限公司 | 代码生成的方法及装置 |
CN110442329A (zh) * | 2019-06-26 | 2019-11-12 | 平安科技(深圳)有限公司 | 代码段的生成方法、装置、存储介质及计算机设备 |
CN110888628A (zh) * | 2019-10-12 | 2020-03-17 | 中国平安财产保险股份有限公司 | 生成控制工具的方法、装置、设备和存储介质 |
CN111722839A (zh) * | 2020-06-24 | 2020-09-29 | 北京航天数据股份有限公司 | 一种代码生成方法、装置、电子设备及存储介质 |
CN112034765A (zh) * | 2020-09-10 | 2020-12-04 | 深圳市兆威机电股份有限公司 | 控制代码的生成方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1734442A1 (en) * | 2005-05-19 | 2006-12-20 | Agilent Technologies, Inc. | Modular code generation |
US10255443B2 (en) * | 2016-02-11 | 2019-04-09 | Line Corporation | Method, apparatus, system and non-transitory computer readable medium for code protection |
-
2021
- 2021-03-25 CN CN202110319749.2A patent/CN112965697B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7500220B1 (en) * | 2003-12-30 | 2009-03-03 | The Mathworks, Inc. | Shared code management |
US9383976B1 (en) * | 2015-01-15 | 2016-07-05 | Xerox Corporation | Methods and systems for crowdsourcing software development project |
CN105049532A (zh) * | 2015-08-28 | 2015-11-11 | 北京奇艺世纪科技有限公司 | 一种sdk包的打包方法及装置和下载方法及装置 |
CN108255481A (zh) * | 2018-01-17 | 2018-07-06 | 北京网信云服信息科技有限公司 | 应用开发方法及相关设备 |
CN108563435A (zh) * | 2018-04-19 | 2018-09-21 | 北京百度网讯科技有限公司 | 代码生成的方法及装置 |
CN110442329A (zh) * | 2019-06-26 | 2019-11-12 | 平安科技(深圳)有限公司 | 代码段的生成方法、装置、存储介质及计算机设备 |
CN110888628A (zh) * | 2019-10-12 | 2020-03-17 | 中国平安财产保险股份有限公司 | 生成控制工具的方法、装置、设备和存储介质 |
CN111722839A (zh) * | 2020-06-24 | 2020-09-29 | 北京航天数据股份有限公司 | 一种代码生成方法、装置、电子设备及存储介质 |
CN112034765A (zh) * | 2020-09-10 | 2020-12-04 | 深圳市兆威机电股份有限公司 | 控制代码的生成方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112965697A (zh) | 2021-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106294113B (zh) | 一种基于可编程式测试服务的创建方法及装置 | |
CN104754062B (zh) | 基于互联网的信息推广方法、服务器及用户终端 | |
CN111399840B (zh) | 一种模块开发方法及装置 | |
CN110113391B (zh) | 一种客户端上线方法、装置及一种客户端运行方法、装置 | |
CN109977008B (zh) | 一种应用程序依赖的js代码与原生库兼容的方法及终端 | |
CN110727440A (zh) | 一种软件封装方法 | |
CN113505073B (zh) | 一种数据库的性能测试方法、装置、设备及介质 | |
CN111443920B (zh) | 一种框架迁移方法及装置 | |
CN112115049B (zh) | 应用程序测试方法、装置、设备和计算机可读存储介质 | |
CN111651169B (zh) | 基于web容器的区块链智能合约运行方法及系统 | |
CN112965697B (zh) | 一种代码文件的生成方法、装置及电子设备 | |
CN114422618A (zh) | 基于云原生的iot平台协议适配方法、装置、设备及介质 | |
CN113342419B (zh) | 一种推送系统加载方法、装置、电子设备及存储介质 | |
CN110750310A (zh) | 基于ios系统组件化开发的二进制和源码切换方法 | |
CN117055501A (zh) | 可信dcs上位机系统的部署方法、系统、设备及存储介质 | |
CN111597020B (zh) | 一种应用程序编程接口api调试方法以及调试终端 | |
CN110442353B (zh) | 一种安装包管理的方法、装置及电子设备 | |
CN109739756B (zh) | 移动终端应用测试的方法及设备 | |
CN115454575B (zh) | jar包转换并自动加载的方法、装置、设备及存储介质 | |
CN116300833A (zh) | 车联网仿真测试方法、装置、电子设备以及存储介质 | |
CN116450165A (zh) | 一种快速搭建环境及部署程序的方法、系统、终端及存储介质 | |
CN110221880B (zh) | 应用程序编程接口调用方法、装置、设备及介质 | |
CN116126357A (zh) | 测试工具自动部署方法、装置、可读存储介质及电子设备 | |
CN113342660B (zh) | 文件测试方法、装置、系统、电子设备及可读存储介质 | |
CN112685071A (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 |