CN115757287A - 目标文件的构建方法、装置及存储介质 - Google Patents
目标文件的构建方法、装置及存储介质 Download PDFInfo
- Publication number
- CN115757287A CN115757287A CN202111032798.4A CN202111032798A CN115757287A CN 115757287 A CN115757287 A CN 115757287A CN 202111032798 A CN202111032798 A CN 202111032798A CN 115757287 A CN115757287 A CN 115757287A
- Authority
- CN
- China
- Prior art keywords
- target
- file
- function
- parameter
- keyword
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种目标文件的构建方法、装置及存储介质,可以应用于云技术、AI、智慧交通、车载等各种场景,该方法包括:获取预设语言的头文件;基于头文件的标识信息,确定目标文件的标识信息;目标文件为目标语言的文件;若头文件中不包括类声明关键字,获取头文件中的目标关键字;若目标关键字为函数声明,获取函数声明对应的第一函数的名称以及第一参数;基于第一函数的名称,确定目标文件中第二函数的名称;确定与第一参数匹配的第二函数的第二参数;基于目标文件的标识信息、第二函数的名称以及第二参数,构建目标文件。本申请实现了将预设语言的头文件快速、准确地转换成目标语言的文件。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种目标文件的构建方法、装置及存储介质。
背景技术
相关技术中,将OC头文件转换成目标文件的过程中,需要创建桥接头文件;若在桥接头文件中导入的OC头文件较多,会产生编译速度过慢的问题。
因此,有必要提供一种目标文件的构建方法、装置及存储介质,可以在不创建桥接头文件的情况下,将预设语言的头文件快速、准确地转换成目标语言的文件。
发明内容
本申请提供了一种目标文件的构建方法、装置及存储介质,可以在不创建桥接头文件的情况下,将预设语言的头文件快速、准确地转换成目标语言的文件。
一方面,本申请提供了一种目标文件的构建方法,所述方法包括:
获取预设语言的头文件;
基于所述头文件的标识信息,确定目标文件的标识信息;所述目标文件为目标语言的文件;
若所述头文件中不包括类声明关键字,获取所述头文件中的目标关键字;
若所述目标关键字为函数声明,获取所述函数声明对应的第一函数的名称以及第一参数;
基于所述第一函数的名称,确定所述目标文件中第二函数的名称;
确定与所述第一参数匹配的所述第二函数的第二参数;
基于所述目标文件的标识信息、所述第二函数的名称以及所述第二参数,构建所述目标文件。
另一方面提供了一种目标文件的构建装置,所述装置包括:
头文件获取模块,用于获取预设语言的头文件;
标识信息确定模块,用于基于所述头文件的标识信息,确定目标文件的标识信息;所述目标文件为目标语言的文件;
目标关键字获取模块,用于若所述头文件中不包括类声明关键字,获取所述头文件中的目标关键字;
第一参数获取模块,用于若所述目标关键字为函数声明,获取所述函数声明对应的第一函数的名称以及第一参数;
第二函数的名称确定模块,用于基于所述第一函数的名称,确定所述目标文件中第二函数的名称;
第二参数确定模块,用于确定与所述第一参数匹配的所述第二函数的第二参数;
目标文件构建模块,用于基于所述目标文件的标识信息、所述第二函数的名称以及所述第二参数,构建所述目标文件。
另一方面提供了一种目标文件的构建设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如上所述的目标文件的构建方法。
另一方面提供了一种计算机存储介质,所述计算机存储介质存储有至少一条指令或至少一段程序,所述至少一条指令或至少一段程序由处理器加载并执行以实现如上所述的目标文件的构建方法。
另一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行以实现如上所述的目标文件的构建方法。
本申请提供的目标文件的构建方法、装置及存储介质,具有如下技术效果:
本申请中将预设语言的头文件转换成目标语言的文件时,对于不包括类声明关键字的头文件,获取目标关键字;若目标关键字为函数声明,获取所述函数声明对应的第一函数的名称以及第一参数;并确定目标文件中第二函数的名称以及第二参数;最后基于目标文件的标识信息、所述第二函数的名称以及所述第二参数,构建所述目标文件,从而快速构建目标文件,实现了在不创建桥接头文件的情况下,将预设语言的头文件快速、准确地转换成目标语言的文件。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本申请实施例提供的一种目标文件的构建系统的示意图;
图2是本申请实施例提供的一种目标文件的构建方法的流程示意图;
图3是本申请实施例提供的一种获取上述函数声明对应的第一函数的名称以及第一参数的方法的流程示意图;
图4是本申请实施例提供的另一种构建目标文件的方法的流程示意图;
图5是本申请实施例提供的一种基于上述目标文件的标识信息、上述第二函数的名称以及上述第二参数,构建上述目标文件的方法的流程示意图;
图6是本申请实施例提供的一种基于上述目标文件的标识信息以及配置信息,构建上述目标文件的方法的流程示意图;
图7是本申请实施例提供的加载目标业务的方法的流程示意图;
图8是本申请实施例提供的OC头文件的数据配置类示意图;
图9是本申请实施例提供的Swift文件的数据配置类示意图;
图10是本申请实施例提供的编辑工程系统显示界面图;
图11是本申请实施例提供的一种视频播放过程中弹出弹窗对应的文件转换方法的流程图;
图12是现有技术提供的Swift工程调用OC头文件的示意图;
图13是本申请实施例提供的一种目标文件的构建装置的结构示意图;
图14是本申请实施例提供的一种服务器的结构示意图。
具体实施方式
云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术(Cloud technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。
目前,存储系统的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件系统上,文件系统将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(ID,IDentity)等额外的信息,文件系统将每个对象分别写入该逻辑卷的物理存储空间,且文件系统会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件系统能够根据每个对象的存储位置信息让客户端对数据进行访问。
存储系统为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(RAID,Redundant Array of Independent Disk)的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。本申请实施例中可以对预设语言的头文件转换后的目标文件进行云存储。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
请参阅图1,图1是本申请实施例提供的一种目标文件的构建系统的示意图,如图1所示,该目标文件的构建系统可以至少包括服务器01和客户端02。
具体的,本说明书实施例中,所述服务器01可以包括一个独立运行的服务器,或者分布式服务器,或者由多个服务器组成的服务器集群,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(ContentDelivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。服务器01可以包括有网络通信单元、处理器和存储器等等。具体的,所述服务器01可以用于根据预设语言的头文件,构建目标语言的目标文件。
具体的,本说明书实施例中,所述客户端02可以包括智能手机、台式电脑、平板电脑、笔记本电脑、数字助理、智能可穿戴设备、智能音箱、车载终端、智能电视等类型的实体设备,也可以包括运行于实体设备中的软体,例如一些服务商提供给用户的网页页面,也可以为该些服务商提供给用户的应用。具体的,所述客户端02可以用于在目标语言的应用程序中,根据用户需求,快速、准确地展示预设语言的业务模块。
以下介绍本申请的一种目标文件的构建方法,图2是本申请实施例提供的一种目标文件的构建方法的流程示意图,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图2所示,所述方法可以包括:
S201:获取预设语言的头文件。
具体的,在本申请实施例中,预设语言的头文件可以为OC头文件;一些应用程序中涉及到OC语言与Swift语言的混编技术;其中OC全称Objective-C,通常写作ObjC或OC和较少用的Objective C或Obj-C,是扩充C的面向对象编程语言。它主要使用于Mac OS X(麦金塔电脑的专属操作系统)和GNUstep(实作OpenStep介面的开放软体计划,目标为提供跨平台的物件导向程式开发环境)这两个使用开放软件(Open Step)标准的系统。Swift为苹果于2014年WWDC苹果开发者大会发布的新开发语言,可与Objective-C共同运行于macOS和iOS平台,用于搭建基于苹果平台的应用程序。
本实施例是针对Swift工程中,调用OC方法的相关优化。本实施例中预设语言的头文件用于存储配置信息,该配置信息在预设时间范围内不会发生改变;OC头文件中的配置信息一般是宏定义和全局变量;例如可以为一些工程中基础的配置信息,包括进行网络请求的地址、使用的证书公钥、固定的Url地址等;还可以为单例对象类,该类为在程序运行过程中只会存在一份的数据,例如用户数据信息、设备信息数据、数据下载器等。
S203:基于上述头文件的标识信息,确定目标文件的标识信息;上述目标文件为目标语言的文件。
在本申请实施例中,目标语言可以为Swift语言;相应的,目标文件为Swift文件。具体的,可以将头文件的标识信息作为目标文件的标识信息;头文件的标识信息可以为头文件的名称,目标文件的标识信息可以为目标文件的名称;可以将头文件的名称作为目标文件的名称。
在本申请实施例中,在获取到预设语言的头文件后,可以通过头文件的路径后缀获取头文件的名称(Name),路径的后缀可以为.h,.c,.m等。可以通过执行目标指令创建目标文件的文件名,即Swift文件的文件名;目标指令可以为touch Name.swift;目标文件的标识信息可以与头文件的标识信息相同,即可以创建与OC头文件同名的Swift文件名。
S205:若上述头文件中不包括类声明关键字,获取上述头文件中的目标关键字。
在本申请实施例中,可以获取头文件(例如.h文件)中的关键字,判断是否有类声明关键字,类声明关键字可以为@interface;若没有类声明关键字,则进行宏定义和静态变量的单独转化。目标关键字可以为字符串,例如宏定义关键字(例如#define),也可以为函数声明。
在本申请实施例中,头文件中可以包括多个关键字;上述若上述头文件中不包括类声明关键字,获取上述头文件中的目标关键字之前,上述方法还包括:
遍历头文件中的每个关键字,直至遍历到结束关键字;
判断是否存在类声明关键字。
在本申请实施例中,结束关键字可以为@end。
S207:若上述目标关键字为函数声明,获取上述函数声明对应的第一函数的名称以及第一参数。
在本申请实施例中,如图3所示,上述若上述目标关键字为函数声明,获取上述函数声明对应的第一函数的名称以及第一参数,包括:
S2071:若上述目标关键字为函数声明,获取上述函数声明对应的第一函数的名称。
在本申请实施例中,如图4所示,上述方法还包括:
S401:若上述目标关键字非函数声明,获取上述目标关键字对应的目标数值并将上述目标关键字确定为第一关键字。
具体的,在本申请实施例中,目标关键字可以包括宏定义关键字和静态关键字,其中,宏定义关键字可以为字符串,也可以为函数;目标关键字非函数声明包括目标关键字为字符串。
在本申请实施例中,宏定义可以定义变量,也可以定义函数;宏定义如果是代码,用到宏定义的地方,在编译的时候需要替换成代码实现;例如,在初始化网络请求,比如加载页面、加载播放器或者下载视频时,都会发起数据的网络请求,如果将网络请求封装成一个宏定义,一个函数的话,在用到函数的地方,都会进行函数的替换,将宏替换成具体的应用实现;具体实现可以为参数,比如App key(App的唯一标识),pid(App所在的平台标识id,比如iPhone、iwatch、iPad的标识)以及http里面的URL这些参数,用到这些参数的时候,在编译阶段就把它替换成具体值;宏定义还可以定义函数、方法;同样的道理,在编译的时候进行替换,转成Swift静态语言,在程序实际运行的过程中,才将其替换成实现。
在本申请实施例中,上述若上述目标关键字非函数声明,获取上述目标关键字对应的目标数值并将上述目标关键字确定为第一关键字,可以包括:
若上述目标关键字为字符串,获取上述字符串对应的目标数值并将上述目标关键字确定为上述第一关键字。
S403:基于第二映射信息,确定与上述第一关键字匹配的第二关键字;上述第二映射信息表征第一关键字与第二关键字的映射关系。
在本申请实施例中,可以预先构建OC语言的第一关键字与Swift语言的第二关键字之间的对应关系,第一关键字与第二关键字为一一对应关系;从而便于将OC头文件快速转换成Swift文件。
S405:基于上述目标文件的标识信息、上述第二关键字以及上述目标数值,构建上述目标文件。
具体的,在本申请实施例中,可以在目标文件中存储第二关键字以及目标数值的对应关系,并采用目标文件的标识信息进行命名。
S2073:基于上述第一函数的名称中的语法糖,确定上述第一函数的类型;
具体的,在本申请实施例中,OC头文件可以包括C函数或OC函数;涉及到函数的声明时,需要根据函数名称前的语法糖判定是C函数还是OC函数;对于不同的函数设置不同的语言转换规则。语法糖(Syntactic sugar),也译为糖衣语法,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。
S2075:若上述语法糖中包括目标字符,确定上述第一函数为预设语言的函数;
具体的,在本申请实施例中,第一函数的类型可以包括预设语言的函数类型和C语言的函数类型;其中,预设语言可以为OC语言;对应的第一函数可以OC函数和C函数。语法糖中包括目标字符,例如OC函数一般为“+”或“-”开头,C函数一般为返回值类型。若为C函数则可以直接将函数体复制到Swift文件中。
S2077:获取上述第一函数的第一参数。
在本申请实施例中,确定上述第一函数为预设语言的函数之后,获取其对应的第一参数;即提取函数函数。
在本申请实施例中,上述获取上述第一函数的第一参数之后,上述方法还包括:
确定上述第一参数的类型。
具体的,在本申请实施例中,第一参数的类型包括数据类型和对象类型。例如,第一参数可以为基本数据类型,比如int、float、double、none这些类型,对于这些类型根据表格1中映射关系做转化。
在本申请实施例中,若第一参数为对象类型,上述方法还包括:
获取对象的头文件;
基于目标文件的标识信息以及上述对象的头文件,构建目标文件。
在本申请实施例中,若第一参数为对象类型,比如人、播放器、视图、按钮、图片,不做类型转换,导入对象的头文件,比如对象存在哪里,存储的位置,将索引关系导出来,相当于做了声明部分的转换;就是将OC的声明部分转成swift的声明部分。
S209:基于上述第一函数的名称,确定上述目标文件中第二函数的名称。
在本申请实施例中,第二函数的名称可以与第一函数的名称相同。
S2011:确定与上述第一参数匹配的上述第二函数的第二参数。
在本申请实施例中,上述确定与上述第一参数匹配的上述第二函数的第二参数,包括:
若上述第一参数为数据类型,执行基于第一映射信息,确定与上述第一参数匹配的上述第二函数的第二参数;上述第一映射信息表征第一参数与第二参数的映射关系。
具体的,在本申请实施例中,若第一参数为数据类型,则将按照表1的规则转换成第二参数;
S2013:基于上述目标文件的标识信息、上述第二函数的名称以及上述第二参数,构建上述目标文件。
在本申请实施例中,如图5所示,上述方法还包括:
S2012:若上述头文件中不包括类声明关键字,基于上述头文件中的静态变量创建上述目标文件的第一结构体。
在本申请实施例中,可以根据头文件标识信息(例如头文件名)确定第一结构体的标识信息;然后提取头文件中的静态变量,在第一结构体中创建与头文件中的静态变量相同的静态变量;静态变量中数据类型的转化规则如表1所示。
在本申请实施例中,一个结构体中可以包括很多信息,比如数据地址、图片信息、播放器信息等;若匹配到OC头文件中的静态变量,就在目标文件的第一结构体中创建相同的静态变量,相当于一个数据初始化的过程。
表1
OC基础数据类型参数声明 | Swift数据类型声明 |
intintValue | var intValue:Int |
double doubleValue | var intValue1:Double |
float floatValue | var intValue2:Float |
long longValue | var intValue3:Int8 |
short shortValue | var intValue4:Int16 |
signed signedValue | var intValue5:Int32 |
unsigedunsigedValue | var intValue6:Int64 |
相应的,上述基于上述目标文件的标识信息、上述第二函数的名称以及上述第二参数,构建上述目标文件,包括:
S20131:将上述第二函数的名称以及上述第二参数存储于上述第一结构体中,得到存储后的第一结构体;
S20133:基于上述目标文件的标识信息,对上述存储后的第一结构体进行命名,得到命名后的结构体;
S20135:将上述命名后的结构体作为上述目标文件。
在本申请实施例中,如图6所示,上述方法还包括:
S601:若上述头文件中包括类声明关键字,基于上述类声明关键字创建上述目标文件的第二结构体;
具体的,在本申请实施例中,上述基于上述类声明关键字创建上述目标文件的第二结构体可以包括:
基于上述类声明关键字,确定上述目标文件中的静态关键字;
根据上述静态关键字,构建上述目标文件的第二结构体。
具体的,在本申请实施例中,一个类声明对应一个第二结构体,有多少个@interface对应的类名称就创建多少个对应的第二结构体,创建的最后关键字用@end结束。
S603:基于上述类声明中的成员属性信息,在上述第二结构体中创建上述目标文件的配置信息;
S605:基于上述目标文件的标识信息以及配置信息,构建上述目标文件。
在本申请实施例中,上述基于上述类声明中的成员属性信息,在上述第二结构体中创建上述目标文件的配置信息之前,上述方法还包括:
获取上述成员属性信息的目标数量;
在上述第二结构体中,创建上述目标数量的单例对象;
相应的,上述基于上述类声明中的成员属性信息,在上述第二结构体中创建上述目标文件的配置信息,包括:
基于上述类声明中的成员属性信息,在上述目标数量的单例对象中创建上述目标文件的配置信息;其中,每个单例对象对应一个配置信息。
具体的,在本申请实施例中,当OC头文件中包含了类声明,则表明该类为单例数据类型,在Swift中需要创建相同名称的结构体,并在结构体内部通过static关键字创建单例对象;扫描出@property后对应的成员属性,在Swift结构体中通过var关键字进行相同的声明,并不设置默认值。若有多个类声明则Swift文件中创建相同名称、相同数量的结构体,当扫描到最后一个类的@end关键字结束转化。
在本申请实施例中,如图7所示,上述方法还包括:
S701:在目标语言的应用程序中,响应于目标业务加载请求,获取上述目标业务对应的数据类名称;
在本申请实施例中,若应用程序为视频播放应用程序,对应的目标业务可以为播放业务、下载业务、广告弹窗业务等;每个目标业务对应一个数据类名称。
S703:确定与上述数据类名称匹配的上述目标文件的标识信息;
在本申请实施例中,数据类名称与目标文件的标识信息为映射关系,可以根据数据类名称确定对应的目标文件的标识信息。
S705:根据上述目标文件的标识信息,获取上述目标文件;
S707:根据上述目标文件,加载上述目标业务。
在本申请实施例中,加载目标业务可以为展示目标业务对应的页面。通过本实施例构建的目标文件,可以保证目标业务快速、准确地加载,从而提升用户体验。
具体的,在本申请实施例中,目标文件可以为配置文件,其中可以包括配置信息,配置信息在预设时间范围内不会发生改变;配置信息可以如图8中App key(App的唯一标识),pid(App所在的平台标识id,比如iPhone、iwatch、iPad的标识)以及http里面的URL这些参数;custom ID(自定义id,用于标识网络信息中初始化的数据);其中网关相关的属性名称,如请求路径、http URL用于标识网络的基础功能;其中,tcp port为对应的端口号;GWRkey为公钥用来加密。一个工程中有几十至上百个基础信息,比如用户的基本配置信息(用户的昵称、图像之类)都为App中的基础数据;在某一次运行过程中,或者在一定时间范围内,这些数据不会发生改变。
在一个具体的实施例中,例如在XX视频App中,有一些业务功能,比如播放模块或下载模块,需要用到配置信息(播放参数、播放时长、播放数据的地址、下载数据的地址),这些如果是固定的参数的话,会在OC头文件里面;但是使用的技术是混编的,应用程序中为Swift工程,就需要转成Swift的配置文件;应用程序使用Swift工程;Swift工程为Swift语言的代码工程。例如,在播放视频的时候,弹出一个弹窗,推荐视频相关的广告或内容。
在一个具体的实施例中,视频播放过程中弹出弹窗对应的文件转换方法的流程图如图11所示,包括如下步骤:
S1101:导入OC头文件;
S1103:脚本执行,开始扫描OC头文件;
S1105:基于Swift语言创建文件,内置结构体;
S1107:判断OC头文件中是否包括@interface关键字;
S1109:若包括@interface关键字,基于该关键字以及Swift语言,创建内容结构体;
S11011:创建static结构体单例对象;
S11013:扫描文件中成员属性并在单例对象中创建对应类型的成员变量;
S11015:在文件扫描过程中,直至扫描到@end时结束;
S11017:完成转化。
在一些实施例中,上述方法还包括:
S11009:若OC头文件中不包括@interface关键字,提取宏定义、static关键字;
S110011:判断OC头文件中是否包括函数;
S110013:若OC头文件中包括函数,在Swift文件中创建同名函数;
S110015:根据预设映射关系,扫描头文件中参数并进行参数映射;
S110017:在文件扫描过程中,直至扫描到最后一个数据声明时结束;
S11017:完成转化。
在一些实施例中,上述方法还包括:
S1100131:若OC头文件中不包括函数,跳转至步骤S110015。
在本申请实施例中,弹窗模块对应OC头文件,弹窗模块会通过Swift转换后的结构体名称去访问播放器里面的数据信息,比如播放的视频、视频的地址,视频的关联信息,然后进行弹出。
在一个具体的实施例中,如图10所示,图10为编辑工程系统显示界面图,在导入配置文件之前,可以设置项目名称、应用程序ID、工作区ID等信息;通过触发“导入配置文件”可以从侧边文件夹(AA、BB或CC)中导入文件,例如,可以将图8的OC头文件导入该系统,从而将其转换成图9所示的Swift文件;OC头文件的数据配置类如图8所示,转化后的Swift文件中的数据配置类如图9所示;其中,OC头文件中的数据一般是以宏定义为主,在Swift文件中一般是以结构体中包含静态变量为主;宏定义可以理解为字符串替换,在编译时会把使用到宏的地方替换为具体实现的值;静态变量则是在程序运行过程中分配内存,运行结束释放内存。
相关技术在Swift工程中调用OC方法,需要创建桥接头(BridgingHeader)文件,然后在桥接头文件中导入所需调用的OC头文件;在一个具体的案例中,如图12所示,在Swift工程中,需要预先构建BridgingHeader.h文件,该文件中包括import关键字,通过import关键字引入OC头文件;若导入的OC头文件较多,会产生编译速度过慢的问题。而本实施例可以在不创建桥接头文件的情况下,将预设语言的头文件快速转换成目标语言的文件。
由以上本说明书实施例提供的技术方案可见,本说明书实施例将预设语言的头文件转换成目标语言的文件时,对于不包括类声明关键字的头文件,获取目标关键字;若目标关键字为函数声明,获取所述函数声明对应的第一函数的名称以及第一参数;并确定目标文件中第二函数的名称以及第二参数;最后基于目标文件的标识信息、所述第二函数的名称以及所述第二参数,构建所述目标文件,从而快速构建目标文件,实现了在不创建桥接头文件的情况下,将预设语言的头文件快速、准确地转换成目标语言的文件。
本申请实施例还提供了一种目标文件的构建装置,如图13所示,上述装置包括:
头文件获取模块1310,用于获取预设语言的头文件;
标识信息确定模块1320,用于基于上述头文件的标识信息,确定目标文件的标识信息;上述目标文件为目标语言的文件;
目标关键字获取模块1330,用于若上述头文件中不包括类声明关键字,获取上述头文件中的目标关键字;
第一参数获取模块1340,用于若上述目标关键字为函数声明,获取上述函数声明对应的第一函数的名称以及第一参数;
第二函数的名称确定模块1350,用于基于上述第一函数的名称,确定上述目标文件中第二函数的名称;
第二参数确定模块1360,用于确定与上述第一参数匹配的上述第二函数的第二参数;
目标文件构建模块1370,用于基于上述目标文件的标识信息、上述第二函数的名称以及上述第二参数,构建上述目标文件。
在一些实施例中,上述第一参数获取模块包括:
第一函数名称获取单元,用于若上述目标关键字为函数声明,获取上述函数声明对应的第一函数的名称;
第一函数类型确定单元,用于基于上述第一函数的名称中的语法糖,确定上述第一函数的类型;
函数确定单元,用于若上述语法糖中包括目标字符,确定上述第一函数为预设语言的函数;
第一参数获取单元,用于获取上述第一函数的第一参数。
在一些实施例中,上述装置还可以包括:
第一函数类型确定模块,用于确定上述第一参数的类型。
在一些实施例中,上述第二参数确定模块可以包括:
第二参数确定单元,用于若上述第一参数为数据类型,执行基于第一映射信息,确定与上述第一参数匹配的上述第二函数的第二参数;上述第一映射信息表征第一参数与第二参数的映射关系。
在一些实施例中,上述装置还可以包括:
第一关键字获取模块,用于若上述目标关键字非函数声明,获取上述目标关键字对应的目标数值并将上述目标关键字确定为第一关键字;
第二关键字获取模块,用于基于第二映射信息,确定与上述第一关键字匹配的第二关键字;上述第二映射信息表征第一关键字与第二关键字的映射关系;
构建模块,用于基于上述目标文件的标识信息、上述第二关键字以及上述目标数值,构建上述目标文件。
在一些实施例中,上述装置还可以包括:
第一结构体创建模块,用于若上述头文件中不包括类声明关键字,基于上述头文件中的静态变量创建上述目标文件的第一结构体。
在一些实施例中,上述目标文件构建模块可以包括:
存储单元,用于将上述第二函数的名称以及上述第二参数存储于上述第一结构体中,得到存储后的第一结构体;
命名单元,用于基于上述目标文件的标识信息,对上述存储后的第一结构体进行命名,得到命名后的结构体;
目标文件确定单元,用于将上述命名后的结构体作为上述目标文件。
在一些实施例中,上述装置还可以包括:
第二结构体创建模块,用于若上述头文件中包括类声明关键字,基于上述类声明关键字创建上述目标文件的第二结构体;
配置信息创建模块,用于基于上述类声明中的成员属性信息,在上述第二结构体中创建上述目标文件的配置信息;
目标文件构建模块,用于基于上述目标文件的标识信息以及配置信息,构建上述目标文件。
在一些实施例中,上述装置还可以包括:
目标数量获取模块,用于获取上述成员属性信息的目标数量;
单例对象创建模块,用于在上述第二结构体中,创建上述目标数量的单例对象。
在一些实施例中,配置信息创建模块可以包括:
配置信息创建单元,用于基于上述类声明中的成员属性信息,在上述目标数量的单例对象中创建上述目标文件的配置信息;其中,每个单例对象对应一个配置信息。
在一些实施例中,上述装置还可以包括:
数据类名称获取模块,用于在目标语言的应用程序中,响应于目标业务加载请求,获取上述目标业务对应的数据类名称;
标识信息确定模块,用于确定与上述数据类名称匹配的上述目标文件的标识信息;
目标文件获取模块,用于根据上述目标文件的标识信息,获取上述目标文件;
目标业务加载模块,用于根据上述目标文件,加载上述目标业务。
上述的装置实施例中的装置与方法实施例基于同样地发明构思。
本申请实施例提供了一种目标文件的构建设备,该设备包括处理器和存储器,该存储器中存储有至少一条指令或至少一段程序,该至少一条指令或至少一段程序由该处理器加载并执行以实现如上述方法实施例所提供的目标文件的构建方法。
本申请的实施例还提供了一种计算机存储介质,上述存储介质可设置于终端之中以保存用于实现方法实施例中一种目标文件的构建方法相关的至少一条指令或至少一段程序,该至少一条指令或至少一段程序由该处理器加载并执行以实现上述方法实施例提供的目标文件的构建方法。
本申请的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行以实现上述方法实施例提供的目标文件的构建方法。
可选地,在本申请实施例中,存储介质可以位于计算机网络的多个网络服务器中的至少一个网络服务器。可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书实施例上述存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据上述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
本申请实施例所提供的目标文件的构建方法实施例可以在移动终端、计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图14是本申请实施例提供的一种目标文件的构建方法的服务器的硬件结构框图。如图14所示,该服务器1400可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(CentralProcessing Units,CPU)1410(处理器1410可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器1430,一个或一个以上存储应用程序1423或数据1422的存储介质1420(例如一个或一个以上海量存储设备)。其中,存储器1430和存储介质1420可以是短暂存储或持久存储。存储在存储介质1420的程序可以包括一个或一个以上模块,每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1410可以设置为与存储介质1420通信,在服务器1400上执行存储介质1420中的一系列指令操作。服务器1400还可以包括一个或一个以上电源1460,一个或一个以上有线或无线网络接口1450,一个或一个以上输入输出接口1440,和/或,一个或一个以上操作系统1421,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
输入输出接口1440可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器1400的通信供应商提供的无线网络。在一个实例中,输入输出接口1440包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,输入输出接口1440可以为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯。
本领域普通技术人员可以理解,图14所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器1400还可包括比图14中所示更多或者更少的组件,或者具有与图14所示不同的配置。
由上述本申请提供的目标文件的构建方法、装置、服务器或存储介质的实施例可见,本申请将预设语言的头文件转换成目标语言的文件时,对于不包括类声明关键字的头文件,获取目标关键字;若目标关键字为函数声明,获取上述函数声明对应的第一函数的名称以及第一参数;并确定目标文件中第二函数的名称以及第二参数;最后基于目标文件的标识信息、上述第二函数的名称以及上述第二参数,构建上述目标文件,从而快速构建目标文件,实现了在不创建桥接头文件的情况下,将预设语言的头文件快速、准确地转换成目标语言的文件。
需要说明的是:上述本申请实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,上述的程序可以存储于一种计算机存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上上述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种目标文件的构建方法,其特征在于,所述方法包括:
获取预设语言的头文件;
基于所述头文件的标识信息,确定目标文件的标识信息;所述目标文件为目标语言的文件;
若所述头文件中不包括类声明关键字,获取所述头文件中的目标关键字;
若所述目标关键字为函数声明,获取所述函数声明对应的第一函数的名称以及第一参数;
基于所述第一函数的名称,确定所述目标文件中第二函数的名称;
确定与所述第一参数匹配的所述第二函数的第二参数;
基于所述目标文件的标识信息、所述第二函数的名称以及所述第二参数,构建所述目标文件。
2.根据权利要求1所述的方法,其特征在于,所述若所述目标关键字为函数声明,获取所述函数声明对应的第一函数的名称以及第一参数,包括:
若所述目标关键字为函数声明,获取所述函数声明对应的第一函数的名称;
基于所述第一函数的名称中的语法糖,确定所述第一函数的类型;
若所述语法糖中包括目标字符,确定所述第一函数为预设语言的函数;
获取所述第一函数的第一参数。
3.根据权利要求2所述的方法,其特征在于,所述获取所述第一函数的第一参数之后,所述方法还包括:
确定所述第一参数的类型;
相应的,所述确定与所述第一参数匹配的所述第二函数的第二参数,包括:
若所述第一参数为数据类型,执行基于第一映射信息,确定与所述第一参数匹配的所述第二函数的第二参数;所述第一映射信息表征第一参数与第二参数的映射关系。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若所述目标关键字非函数声明,获取所述目标关键字对应的目标数值并将所述目标关键字确定为第一关键字;
基于第二映射信息,确定与所述第一关键字匹配的第二关键字;所述第二映射信息表征第一关键字与第二关键字的映射关系;
基于所述目标文件的标识信息、所述第二关键字以及所述目标数值,构建所述目标文件。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述头文件中不包括类声明关键字,基于所述头文件中的静态变量创建所述目标文件的第一结构体;
相应的,所述基于所述目标文件的标识信息、所述第二函数的名称以及所述第二参数,构建所述目标文件,包括:
将所述第二函数的名称以及所述第二参数存储于所述第一结构体中,得到存储后的第一结构体;
基于所述目标文件的标识信息,对所述存储后的第一结构体进行命名,得到命名后的结构体;
将所述命名后的结构体作为所述目标文件。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述头文件中包括类声明关键字,基于所述类声明关键字创建所述目标文件的第二结构体;
基于所述类声明中的成员属性信息,在所述第二结构体中创建所述目标文件的配置信息;
基于所述目标文件的标识信息以及配置信息,构建所述目标文件。
7.根据权利要求6所述的方法,其特征在于,所述基于所述类声明中的成员属性信息,在所述第二结构体中创建所述目标文件的配置信息之前,所述方法还包括:
获取所述成员属性信息的目标数量;
在所述第二结构体中,创建所述目标数量的单例对象;
相应的,所述基于所述类声明中的成员属性信息,在所述第二结构体中创建所述目标文件的配置信息,包括:
基于所述类声明中的成员属性信息,在所述目标数量的单例对象中创建所述目标文件的配置信息;其中,每个单例对象对应一个配置信息。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在目标语言的应用程序中,响应于目标业务加载请求,获取所述目标业务对应的数据类名称;
确定与所述数据类名称匹配的所述目标文件的标识信息;
根据所述目标文件的标识信息,获取所述目标文件;
根据所述目标文件,加载所述目标业务。
9.一种目标文件的构建装置,其特征在于,所述装置包括:
头文件获取模块,用于获取预设语言的头文件;
标识信息确定模块,用于基于所述头文件的标识信息,确定目标文件的标识信息;所述目标文件为目标语言的文件;
目标关键字获取模块,用于若所述头文件中不包括类声明关键字,获取所述头文件中的目标关键字;
第一参数获取模块,用于若所述目标关键字为函数声明,获取所述函数声明对应的第一函数的名称以及第一参数;
第二函数的名称确定模块,用于基于所述第一函数的名称,确定所述目标文件中第二函数的名称;
第二参数确定模块,用于确定与所述第一参数匹配的所述第二函数的第二参数;
目标文件构建模块,用于基于所述目标文件的标识信息、所述第二函数的名称以及所述第二参数,构建所述目标文件。
10.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如权利要求1-8任一所述的目标文件的构建方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111032798.4A CN115757287A (zh) | 2021-09-03 | 2021-09-03 | 目标文件的构建方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111032798.4A CN115757287A (zh) | 2021-09-03 | 2021-09-03 | 目标文件的构建方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115757287A true CN115757287A (zh) | 2023-03-07 |
Family
ID=85332539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111032798.4A Pending CN115757287A (zh) | 2021-09-03 | 2021-09-03 | 目标文件的构建方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115757287A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116257286A (zh) * | 2023-03-13 | 2023-06-13 | 北京百度网讯科技有限公司 | 一种文件处理方法、装置、电子设备及存储介质 |
-
2021
- 2021-09-03 CN CN202111032798.4A patent/CN115757287A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116257286A (zh) * | 2023-03-13 | 2023-06-13 | 北京百度网讯科技有限公司 | 一种文件处理方法、装置、电子设备及存储介质 |
CN116257286B (zh) * | 2023-03-13 | 2023-09-15 | 北京百度网讯科技有限公司 | 一种文件处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107766126B (zh) | 容器镜像的构建方法、系统、装置及存储介质 | |
CN111221521B (zh) | 日志代码的生成方法、装置、计算机系统和可读存储介质 | |
US20170351723A1 (en) | Managing data format of data received from devices in an internet of things network | |
CN105573734B (zh) | 一种用于提供sdk文件的方法与设备 | |
CN110245128B (zh) | 元模型的建立方法及装置、存储介质、电子装置 | |
US11853749B2 (en) | Managing container images in groups | |
CN108427699A (zh) | 快速初始化系统数据库的方法、装置及存储介质 | |
CN106557307B (zh) | 业务数据的处理方法及处理系统 | |
US20210224055A1 (en) | Data interface processing method, device, server and medium | |
CN116244387A (zh) | 实体关系构建方法、装置、电子设备及存储介质 | |
CN113114515B (zh) | 一种资源文件配置方法及装置 | |
CN115757287A (zh) | 目标文件的构建方法、装置及存储介质 | |
CN116521181B (zh) | 基于游戏系统的脚本数据处理方法、装置、设备及介质 | |
CN109388406A (zh) | 转换java代码的方法及装置、存储介质、电子装置 | |
CN112235132A (zh) | 动态配置服务的方法、装置、介质以及服务器 | |
US9606775B2 (en) | Developing rich internet application | |
CN111061468A (zh) | 一种映射方法及装置 | |
CN112947900A (zh) | web应用开发方法、装置、服务器及开发终端 | |
CN114124883B (zh) | 基于云存储地址的数据访问方法、装置、计算机设备及介质 | |
US8935659B2 (en) | Method for generating software | |
US8615744B2 (en) | Methods and system for managing assets in programming code translation | |
CN114637499A (zh) | 可视化组件处理方法、装置、设备及介质 | |
CN113127430B (zh) | 镜像信息处理方法、装置、计算机可读介质及电子设备 | |
CN114358936A (zh) | 一种基于微服务区块链的智能合约运行方法 | |
CN114579132A (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 |