掌桥专利:专业的专利平台
掌桥专利
首页

IOS私有API库构建方法、装置、设备及存储介质

文献发布时间:2023-06-19 19:13:14


IOS私有API库构建方法、装置、设备及存储介质

技术领域

本发明涉及数据处理技术领域,尤其涉及一种IOS私有API库构建方法、装置、设备及存储介质。

背景技术

IOS私有应用程序接口(Application Programming Interface,API)库构建,是为了IOS私有API检测而搭建的库,其中主要存储当前版本存在的私有API的api_name、class_name、types、header_file以及framework库等信息,方便扫描IPA文件(IOS安装包)检测其中的私有API方法,增加审核小组的成功率。

而测试人员去检查IOS私有API的时候,面临的问题主要有两个方法:1、技术不足,不知道那些方法属于私有API。2、经验不足,门槛高,很大一部分测试人员看不懂源码。因此,测试人员难以分辨私有API,影响到私有API库构建的效率和准确性。

上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。

发明内容

本发明的主要目的在于提出一种IOS私有API库构建方法、装置、设备及存储介质,旨在解决现有技术中测试人员难以分辨私有API,影响到私有API库构建的效率和准确性的技术问题。

为实现上述目的,本发明提供一种IOS私有API库构建方法,所述IOS私有API库构建方法包括以下步骤:

从IOS系统的源文件中提取目标文件;

根据所述目标文件确定应用程序编程接口API信息;

根据所述API信息确定私有API信息集合;

根据所述私有API信息集合构建私有API库。

可选地,所述源文件包括:私有库源文件、公有库源文件、动态链接库源文件、软件开发工具包源文件以及缓存源文件,所述目标文件包括:第一头文件、第二头文件、第三头文件、第四头文件以及文档列表;

所述从IOS系统的源文件中提取目标文件,包括:

从IOS系统的私有库源文件中提取第一头文件;

从IOS系统的公有库源文件中提取第二头文件;

从IOS系统的动态链接库源文件中提取第三头文件;

从IOS系统的软件开发工具包源文件中提取第四头文件;

从IOS系统的缓存源文件中提取文档列表。

可选地,所述API信息包括:第一API信息、第二API信息、第三API信息、第四API信息以及第五API信息;

所述根据所述目标文件确定应用程序编程接口API信息,包括:

根据所述第一头文件确定第一API信息;

根据所述第二头文件确定第二API信息;

根据所述第三头文件确定第三API信息;

根据所述第四头文件确定第四API信息;

根据所述文档列表确定第五API信息。

可选地,所述根据所述API信息确定私有API信息集合,包括:

根据所述第一API信息确定第一私有API信息集合;

根据所述第二API信息、所述第三API信息、所述第四API信息以及所述第五API信息确定第二私有API信息集合;

将所述第一私有API信息集合与所述第二私有API信息集合进行合并,得到私有API信息集合。

可选地,所述根据所述第二API信息、所述第三API信息、所述第四API信息以及所述第五API信息确定第二私有API信息集合,包括:

根据所述第二API信息和所述第三API信息确定所有API信息集合;

根据所述第四API信息和所述第五API信息确定开放API信息集合;

根据所述所有API信息集合和所述开放API信息集合确定第二私有API信息集合。

可选地,所述根据所述所有API信息集合和所述开放API信息集合确定第二私有API信息集合,包括:

将所述所有API信息集合与所述开放API信息集合进行比对,获得比对结果;

根据所述比对结果提取预设格式的API信息,并在所述所有API信息集合中将所述开放API信息集合对应的数据剔除,得到第二私有API信息集合。

可选地,所述根据所述第二API信息和所述第三API信息确定所有API信息集合,包括:

将所述第二API信息和所述第三API信息进行合并,得到第一初始集合;

对所述第一初始集合进行去重处理,得到所有API信息集合。

可选地,所述根据所述第四API信息和所述第五API信息确定开放API信息集合,包括:

将所述第四API信息和所述第五API信息进行合并,得到第二初始集合;

对所述第二初始集合进行去重处理,得到开放API信息集合。

可选地,所述根据所述第一头文件确定第一API信息,包括:

读取所述第一头文件对应的头文件内容;

通过预设正则匹配算法过滤掉所述头文件内容中的注释,并通过预设正则方法移除所述头文件内容中的预设格式,得到第一候选头文件内容;

根据所述第一候选头文件内容确定第一API信息。

可选地,所述根据所述第一候选头文件内容确定第一API信息,包括:

从所述第一候选头文件内容中取出第一预设域正则方法对应的内容和第二预设域正则方法对应的内容,得到第二候选头文件内容;

从所述第二候选头文件内容中提取出方法名,得到第三候选头文件内容;

删除所述第三候选头文件内容中的预设关键字对应的内容,得到第四候选头文件内容;

删除所述第四候选头文件内容中的结构枚举类型,并进行方法匹配处理,得到第一API信息。

可选地,所述根据所述文档列表确定第五API信息,包括:

根据所述文档列表确定API信息表;

读取所述API信息表对应的信息表内容,并根据所述信息表内容确定当前通用唯一识别码UUID;

根据所述UUID和所述信息表内容确定第五API信息。

可选地,所述根据所述UUID和所述信息表内容确定第五API信息,包括:

判断所述UUID是否符合预设开头条件;

在所述UUID符合预设开头条件时,根据预设切割长度对所述信息表内容中的字符串进行切割,得到候选信息表内容;

根据所述候选信息表内容确定第五API信息。

此外,为实现上述目的,本发明还提出一种IOS私有API库构建装置,所述IOS私有API库构建装置包括:

头文件提取模块,用于从IOS系统的源文件中提取目标文件;

API信息确定模块,用于根据所述目标文件确定应用程序编程接口API信息;

集合确定模块,用于根据所述API信息确定私有API信息集合;

私有API库构建模块,用于根据所述私有API信息集合构建私有API库。

可选地,所述源文件包括:私有库源文件、公有库源文件、动态链接库源文件、软件开发工具包源文件以及缓存源文件,所述目标文件包括:第一头文件、第二头文件、第三头文件、第四头文件以及文档列表;

所述头文件提取模块,还用于从IOS系统的私有库源文件中提取第一头文件;从IOS系统的公有库源文件中提取第二头文件;从IOS系统的动态链接库源文件中提取第三头文件;从IOS系统的软件开发工具包源文件中提取第四头文件;从IOS系统的缓存源文件中提取文档列表。

可选地,所述API信息包括:第一API信息、第二API信息、第三API信息、第四API信息以及第五API信息;

所述API信息确定模块,还用于根据所述第一头文件确定第一API信息;根据所述第二头文件确定第二API信息;根据所述第三头文件确定第三API信息;根据所述第四头文件确定第四API信息;根据所述文档列表确定第五API信息。

可选地,所述集合确定模块,还用于根据所述第一API信息确定第一私有API信息集合;根据所述第二API信息、所述第三API信息、所述第四API信息以及所述第五API信息确定第二私有API信息集合;将所述第一私有API信息集合与所述第二私有API信息集合进行合并,得到私有API信息集合。

可选地,所述集合确定模块,还用于根据所述第二API信息和所述第三API信息确定所有API信息集合;根据所述第四API信息和所述第五API信息确定开放API信息集合;根据所述所有API信息集合和所述开放API信息集合确定第二私有API信息集合。

可选地,所述集合确定模块,还用于将所述所有API信息集合与所述开放API信息集合进行比对,获得比对结果;根据所述比对结果提取预设格式的API信息,并在所述所有API信息集合中将所述开放API信息集合对应的数据剔除,得到第二私有API信息集合。

此外,为实现上述目的,本发明还提出一种IOS私有API库构建设备,所述IOS私有API库构建设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的IOS私有API库构建程序,所述IOS私有API库构建程序被处理器执行时实现如上所述的IOS私有API库构建方法。

此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有IOS私有API库构建程序,所述IOS私有API库构建程序被处理器执行时实现如上所述的IOS私有API库构建方法。

本发明提出的IOS私有API库构建方法,通过从IOS系统的源文件中提取目标文件,根据所述目标文件确定API信息,根据所述API信息确定私有API信息集合,根据所述私有API信息集合构建私有API库,从而可自动根据目标文件确定源文件对应的API信息,并从中筛选出私有API信息构建私有API库,不需要人工去对私有API进行分辨,提高了私有API库构建的效率和准确性。

附图说明

图1是本发明实施例方案涉及的硬件运行环境的IOS私有API库构建设备结构示意图;

图2为本发明IOS私有API库构建方法第一实施例的流程示意图;

图3为本发明IOS私有API库构建方法一实施例的整体架构图;

图4为本发明IOS私有API库构建方法第二实施例的流程示意图;

图5为本发明IOS私有API库构建方法第三实施例的流程示意图;

图6为本发明IOS私有API库构建方法一实施例的API信息提取示意图;

图7为本发明IOS私有API库构建方法一实施例的sdk文件信息处理流程示意图;

图8为本发明IOS私有API库构建方法一实施例的Cache.db文件信息处理流程示意图;

图9为本发明IOS私有API库构建方法第四实施例的流程示意图;

图10为本发明IOS私有API库构建方法一实施例的API筛选流程示意图;

图11为本发明IOS私有API库构建装置第一实施例的功能模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

参照图1,图1为本发明实施例方案涉及的硬件运行环境的IOS私有API库构建设备结构示意图。

如图1所示,该IOS私有API库构建设备可以包括:处理器1001,例如中央处理器(Central Processing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如按键,可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如Wi-Fi接口)。存储器1005可以是高速随机存取存储器(Random Access Memory,RAM),也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

本领域技术人员可以理解,图1中示出的设备结构并不构成对IOS私有API库构建设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及IOS私有API库构建程序。

在图1所示的IOS私有API库构建设备中,网络接口1004主要用于连接外网,与其他网络设备进行数据通信;用户接口1003主要用于连接用户设备,与所述用户设备进行数据通信;本发明设备通过处理器1001调用存储器1005中存储的IOS私有API库构建程序,并执行本发明实施例提供的IOS私有API库构建方法。

基于上述硬件结构,提出本发明IOS私有API库构建方法实施例。

参照图2,图2为本发明IOS私有API库构建方法第一实施例的流程示意图。

在第一实施例中,所述IOS私有API库构建方法包括以下步骤:

步骤S10,从IOS系统的源文件中提取目标文件。

需要说明的是,本实施例的执行主体可为IOS私有API库构建设备,例如具有数据处理功能的计算机设备,还可为其他可实现相同或相似功能的设备,本实施例对此不作限制,在本实施例中,以计算机设备为例进行说明。

应当理解的是,苹果并没有直接提供私有API,需要根据苹果提供的其他源文件,分门别类进行处理,提取私有API,构建私有API库,这个库需要根据苹果更新的版本不断变更。可如图3所示,图3为整体架构图,本方案整体主要分为四个部分:1、目标文件提取;2、API信息提取(API info)提取;3、API筛选;4、构建私有API库。

可以理解的是,由于本方案针对的是IOS系统,而IOS系统中存在多种类型的源文件,因此可根据这些源文件的类型获取与之对应的目标文件。其中,目标文件可包括头文件和文档列表,除此之外,还可包括其他更多类型的文件,本实施例对此不作限制。

步骤S20,根据所述目标文件确定应用程序编程接口API信息。

可以理解的是,在确定各源文件对应的目标文件之后,可基于目标文件进行APIinfo提取,以得到各源文件对应的的API信息。其中,可对不同类型的源文件的目标文件进行不同方式的处理,执行不同的处理策略。

步骤S30,根据所述API信息确定私有API信息集合。

应当理解的是,由于API可分为公有API和私有API,而本方案的目的是为了确定私有API,进而构建私有API库。因此,在确定API信息之后,还需要根据API信息进行API筛选,以确定私有API,并根据这些私有API对应的私有API信息生成私有API信息集合。

步骤S40,根据所述私有API信息集合构建私有API库。

可以理解的是,经过上述步骤之后,不仅提取了API信息,而且还进行了API筛选,根据所有的私有API信息生成了私有API信息集合。可将最后所得的私有API信息集合中的私有API信息存储到数据库中,以实现私有API库的构建。通过这种构建方式,不仅效率较高,而且可以保证私有API库中的全是私有API信息,而且也避免了私有API信息的遗漏,提高了私有API库构建的准确性。

可以理解的是,由于本方案不需要人工进行操作,而是计算机设备根据设置的相关代码自动运行的,最终构建私有API库,可最全面的提取私有API,并且定位准确,检查方便,提高了测试人员检查效率,解决了检查门槛高的问题。

在本实施例中,从IOS系统的源文件中提取目标文件,根据所述目标文件确定API信息,根据所述API信息确定私有API信息集合,根据所述私有API信息集合构建私有API库,从而可自动根据目标文件确定源文件对应的API信息,并从中筛选出私有API信息构建私有API库,不需要人工去对私有API进行分辨,提高了私有API库构建的效率和准确性。

在一实施例中,如图4所示,基于第一实施例提出本发明IOS私有API库构建方法第二实施例,所述源文件包括:私有库源文件、公有库源文件、动态链接库源文件、软件开发工具包源文件以及缓存源文件,所述目标文件包括:第一头文件、第二头文件、第三头文件、第四头文件以及文档列表;

所述步骤S10,包括:

步骤S101,从IOS系统的私有库源文件中提取第一头文件。

需要说明的是,本实施例将源文件分为了五种类型,分别为私有库源文件、公有库源文件、动态链接库源文件、软件开发工具包源文件以及缓存源文件,除此之外,还可包括其他更多类型的源文件,本实施例对此不作限制。

需要说明的是,本实施例中的私有库源文件可为private frameworks源文件,还可为其他同类型的源文件,本实施例对此不作限制,在本实施例中,以private frameworks源文件为例进行说明。其中,private frameworks源文件为来自private frameworks的源文件,private frameworks是苹果私有库,其中所有的库均为私有库,所有的API都是私有API,由第三方提供。

可以理解的是,可从private frameworks源文件中提取第一头文件,其中,本实施例中的“第一、”“第二”、“第三”等描述只是为了区分不同的对象,方便说明,并不作其他限制。

步骤S102,从IOS系统的公有库源文件中提取第二头文件。

需要说明的是,本实施例中的公有库源文件可为frameworks源文件,还可为其他同类型的源文件,本实施例对此不作限制,在本实施例中,以frameworks源文件为例进行说明。其中,frameworks源文件为来自frameworks的源文件,frameworks是苹果公有库,其中一部分API为公有API,一部分API为私有API,还有一部分API属于不确定的API,就是根据版本的不同,站队不一样,由第三方提供。

可以理解的是,可从frameworks源文件中提取第二头文件。

步骤S103,从IOS系统的动态链接库源文件中提取第三头文件。

需要说明的是,本实施例中的动态链接库源文件可为lib源文件,还可为其他同类型的源文件,本实施例对此不作限制,在本实施例中,以lib源文件为例进行说明。其中,lib源文件为来自lib的源文件,lib是苹果的动态链接库,和frameworks的情况相同。

可以理解的是,可从lib源文件中提取第三头文件。

步骤S104,从IOS系统的软件开发工具包源文件中提取第四头文件。

需要说明的是,本实施例中的软件开发工具包源文件可为sdk源文件,还可为其他同类型的源文件,本实施例对此不作限制,在本实施例中,以sdk源文件为例进行说明。其中,sdk源文件为来自sdk的源文件。

可以理解的是,可从sdk源文件中提取第四头文件。

步骤S105,从IOS系统的缓存源文件中提取文档列表。

需要说明的是,需要说明的是,本实施例中的缓存源文件可为Cache.db源文件,还可为其他同类型的源文件,本实施例对此不作限制,在本实施例中,以Cache.db源文件为例进行说明。其中,Cache.db源文件为来自Cache.db的源文件,Cache.db以doc文档的形式存储数据,doc文档都属于公开的API文件。

可以理解的是,可从Cache.db源文件中读取所有数据,并得到这些数据对应的文档列表。

在本实施例中,从IOS系统的私有库源文件中提取第一头文件,从IOS系统的公有库源文件中提取第二头文件,从IOS系统的动态链接库源文件中提取第三头文件,从IOS系统的软件开发工具包源文件中提取第四头文件,从IOS系统的缓存源文件中提取文档列表,从而可从不同类型的源文件中提取不同的目标文件,用于后续的API信息提取,提高了API信息提取的准确性。

在一实施例中,如图5所示,基于第二实施例提出本发明IOS私有API库构建方法第三实施例,在本实施例中,所述API信息包括:第一API信息、第二API信息、第三API信息、第四API信息以及第五API信息;

所述步骤S20,包括:

步骤S201,根据所述第一头文件确定第一API信息。

应当理解的是,private frameworks的API信息都属于私有API信息,可以直接抽取。可如图6所示,图6为API信息提取示意图,在得到第一头文件之后,可读取第一头文件对应的头文件内容,然后通过预设正则匹配算法过滤掉头文件内容中的注释,并通过预设正则方法移除头文件内容中的预设格式,得到第一候选头文件内容。

需要说明的是,预设正则匹配算法可为'//.*?$|/\*.*?\*/|\'(?:\\.|[^\\\'])*\'|"(?:\\.|[^\\"])*"',预设正则方法可为"@protocol[\w,]*;",预设格式可为@protocol NSObject,OS_voucher格式。

应当理解的是,可从第一候选头文件内容中取出第一预设域正则方法对应的内容和第二预设域正则方法对应的内容,得到第二候选头文件内容;从第二候选头文件内容中提取出方法名,得到第三候选头文件内容;删除第三候选头文件内容中的预设关键字对应的内容,得到第四候选头文件内容;删除第四候选头文件内容中的结构枚举类型,并进行方法匹配处理,得到第一API信息。

需要说明的是,第一预设域正则方法可为@interface域正则方法,第二预设域正则方法可为@protocol域正则方法,第一预设域正则方法对应的内容可为("""@interface\s*.*?@end"""),第二预设域正则方法对应的内容可为("""@protocol\s*.*?@end""")。

可以理解的是,在得到第二候选头文件内容之后,可从第二候选头文件内容中提取出所有的方法名,以得到第三候选头文件内容。其中,有参数的方法提取规则为"([+-]\([*\w]*\).*?;)\s*",无参数的提取算法为"[+-]\([\w*]+\)\s*(\w+)(?!:)",类名提取正则算法("@interface\s*([\s\(\)\w]*)")。

需要说明的是,预设关键字可为interface和protocol,interface和protocol对应的内容可为"""@interface\s*.*?@end|@protocol\s*.*?@end""",可删除第三候选头文件内容中的上述内容,得到第四候选头文件内容。

可以理解的是,可删除第四候选头文件内容中的结构枚举类型,并进行匹配C方法,得到第一API信息。其中,删除结构枚举类型的方式如下:

"""

(?:typedef)?\s*struct\s*\w+\s*{[^}]*}\s*\w*;|\s*enum\s*{[^}]*\s*};|

\s*{[^{}]*\s*}

"""

匹配C方法的方式如下:

"""

#^(?!\#)(?!\s*typedef\s\w+).*?(\w+)\s*\((?!\w+,)(?![^()*^]*(?:\d+_\d+|NA))

^(?!\#)(?!\s*typedef\s\w+).*?(\w+)\s*\((?!\w+,)(?!\d+_\d+|NA,)|

\([*^]([^)]+)\)\s*\(|\#define\s*(\w+)\s?\(\s*\w*

"""

步骤S202,根据所述第二头文件确定第二API信息。

应当理解的是,根据第二头文件确定第二API信息的方式与根据第一头文件确定第一API信息的方式相同,在此不做赘述。

步骤S203,根据所述第三头文件确定第三API信息。

应当理解的是,根据第三头文件确定第三API信息的方式与根据第一头文件确定第一API信息的方式相同,在此不做赘述。

步骤S204,根据所述第四头文件确定第四API信息。

应当理解的是,可如图7所示,图7为sdk文件信息处理流程示意图。在Xcode的sdk版本中对应导出第四头文件之后,可遍历本地对应的sdk版本,按照图7中的流程通过抽取算法抽取其中的.h文件到对应的库中,根据.h文件确定第四头文件内容,然后按照与根据第一头文件内容确定第一API信息相同的方式确定第四API信息。

步骤S205,根据所述文档列表确定第五API信息。

应当理解的是,可如图8所示,图8为Cache.db文件信息处理流程示意图。Cache.db是在Xcode中的doc文档,doc文档都属于公开的API文件,在最新版本中,按照数据库的形式存储。在本方案中链接到数据库后,读取所有数据,得到文档列表,然后按照图8中的流程对所有数据进行规则匹配,抽取所需要的API,以得到API信息表。

应当理解的是,可读取API信息表对应的信息表内容,并根据所述信息表内容确定当前通用唯一识别码(Universally Unique Identifier,UUID),判断UUID是否符合预设开头条件,在UUID符合预设开头条件时,根据预设切割长度对信息表内容中的字符串进行切割,得到候选信息表内容,根据候选信息表内容确定第五API信息。

需要说明的是,预设开头条件可为是否以'lc/documentation/'开头,预设长度可为5。

可以理解的是,Cache.db是一个数据库文件,文件存储格式按照表的存储结构显示,可读取API信息表,读取方式可为select uuid from refs。然后判断UUID是否以'lc/documentation/'开头,若是,则将字符串按照‘/’进行切割,切割长度大于5的时候,可以有效提取方法名称,以确定第五API信息。

在本实施例中,根据所述第一头文件确定第一API信息,根据所述第二头文件确定第二API信息,根据所述第三头文件确定第三API信息,根据所述第四头文件确定第四API信息,根据所述文档列表确定第五API信息,从而可准确地进行API信息提取。

在一实施例中,如图9所示,基于第三实施例提出本发明IOS私有API库构建方法第四实施例,在本实施例中,所述步骤S30,包括:

步骤S301,根据所述第一API信息确定第一私有API信息集合。

应当理解的是,可如图10所示,图10为API筛选流程示意图。由于Privateframeworks是私有API集合,因此,可直接根据第一API信息确定第一私有API信息集合。

步骤S302,根据所述第二API信息、所述第三API信息、所述第四API信息以及所述第五API信息确定第二私有API信息集合。

应当理解的是,可将第二API信息和第三API信息进行合并,得到第一初始集合,并对第一初始集合进行去重处理,得到所有API信息集合(all api info list)。可将第四API信息和第五API信息进行合并,得到第二初始集合,并对第二初始集合进行去重处理,得到开发API信息集合(public api info list)。

应当理解的是,可将所有API信息集合与开放API信息集合进行比对,获得比对结果,根据比对结果提取预设格式的API信息,并在所有API信息集合中将开放API信息集合对应的数据剔除,得到第二私有API信息集合。

可以理解的是,预设格式可为以“-”开头的API信息,可根据比对结果提取所有以“-”开头的API信息。然后在所有API信息集合中将开放API信息集合对应的数据剔除,得到剔除数据后的所有API信息集合,并根据剔除数据后的所有API信息集合和所有以“-”开头的API信息生成第二私有API信息集合。

步骤S303,将所述第一私有API信息集合与所述第二私有API信息集合进行合并,得到私有API信息集合。

可以理解的是,将第一私有API信息集合与第二私有API信息集合进行合并处理,便可得到包含所有的私有API信息的私有API信息集合。

在本实施例中,根据所述第一API信息确定第一私有API信息集合;根据所述第二API信息、所述第三API信息、所述第四API信息以及所述第五API信息确定第二私有API信息集合;将所述第一私有API信息集合与所述第二私有API信息集合进行合并,得到私有API信息集合,从而可得到包含所有的私有API信息的私有API信息集合,提高了构建私有API库的准确性,以达到更好的私有API库构建效果。

此外,本发明实施例还提出一种存储介质,所述存储介质上存储有IOS私有API库构建程序,所述IOS私有API库构建程序被处理器执行时实现如上文所述的IOS私有API库构建方法的步骤。

由于本存储介质采用了上述所有实施例的全部技术方案,因此至少具有上述实施例的技术方案所带来的所有有益效果,在此不再一一赘述。

此外,参照图11,本发明实施例还提出一种IOS私有API库构建装置,所述IOS私有API库构建装置包括:

头文件提取模块10,用于从IOS系统的源文件中提取目标文件。

应当理解的是,苹果并没有直接提供私有API,需要根据苹果提供的其他源文件,分门别类进行处理,提取私有API,构建私有API库,这个库需要根据苹果更新的版本不断变更。可如图3所示,图3为整体架构图,本方案整体主要分为四个部分:1、目标文件提取;2、API信息提取(API info)提取;3、API筛选;4、构建私有API库。

可以理解的是,由于本方案针对的是IOS系统,而IOS系统中存在多种类型的源文件,因此可根据这些源文件的类型获取与之对应的目标文件。其中,目标文件可包括头文件和文档列表,除此之外,还可包括其他更多类型的文件,本实施例对此不作限制。

API信息确定模块20,用于根据所述目标文件确定应用程序编程接口API信息。

可以理解的是,在确定各源文件对应的目标文件之后,可基于目标文件进行APIinfo提取,以得到各源文件对应的的API信息。其中,可对不同类型的源文件的目标文件进行不同方式的处理,执行不同的处理策略。

集合确定模块30,用于根据所述API信息确定私有API信息集合。

应当理解的是,由于API可分为公有API和私有API,而本方案的目的是为了确定私有API,进而构建私有API库。因此,在确定API信息之后,还需要根据API信息进行API筛选,以确定私有API,并根据这些私有API对应的私有API信息生成私有API信息集合。

私有API库构建模块40,用于根据所述私有API信息集合构建私有API库。

可以理解的是,经过上述步骤之后,不仅提取了API信息,而且还进行了API筛选,根据所有的私有API信息生成了私有API信息集合。可将最后所得的私有API信息集合中的私有API信息存储到数据库中,以实现私有API库的构建。通过这种构建方式,不仅效率较高,而且可以保证私有API库中的全是私有API信息,而且也避免了私有API信息的遗漏,提高了私有API库构建的准确性。

可以理解的是,由于本方案不需要人工进行操作,而是计算机设备根据设置的相关代码自动运行的,最终构建私有API库,可最全面的提取私有API,并且定位准确,检查方便,提高了测试人员检查效率,解决了检查门槛高的问题。

在本实施例中,从IOS系统的源文件中提取目标文件,根据所述目标文件确定API信息,根据所述API信息确定私有API信息集合,根据所述私有API信息集合构建私有API库,从而可自动根据目标文件确定源文件对应的API信息,并从中筛选出私有API信息构建私有API库,不需要人工去对私有API进行分辨,提高了私有API库构建的效率和准确性。

在一实施例中,所述集合确定模块30,还用于将所述第二API信息和所述第三API信息进行合并,得到第一初始集合;对所述第一初始集合进行去重处理,得到所有API信息集合。

在一实施例中,所述集合确定模块30,还用于将所述第四API信息和所述第五API信息进行合并,得到第二初始集合;对所述第二初始集合进行去重处理,得到开放API信息集合。

在一实施例中,所述API信息确定模块20,还用于读取所述第一头文件对应的头文件内容;通过预设正则匹配算法过滤掉所述头文件内容中的注释,并通过预设正则方法移除所述头文件内容中的预设格式,得到第一候选头文件内容;根据所述第一候选头文件内容确定第一API信息。

在一实施例中,所述API信息确定模块20,还用于从所述第一候选头文件内容中取出第一预设域正则方法对应的内容和第二预设域正则方法对应的内容,得到第二候选头文件内容;从所述第二候选头文件内容中提取出方法名,得到第三候选头文件内容;删除所述第三候选头文件内容中的预设关键字对应的内容,得到第四候选头文件内容;删除所述第四候选头文件内容中的结构枚举类型,并进行方法匹配处理,得到第一API信息。

在一实施例中,所述API信息确定模块20,还用于根据所述文档列表确定API信息表;读取所述API信息表对应的信息表内容,并根据所述信息表内容确定当前通用唯一识别码UUID;根据所述UUID和所述信息表内容确定第五API信息。

在一实施例中,所述API信息确定模块20,还用于判断所述UUID是否符合预设开头条件;在所述UUID符合预设开头条件时,根据预设切割长度对所述信息表内容中的字符串进行切割,得到候选信息表内容;根据所述候选信息表内容确定第五API信息。

在本发明所述IOS私有API库构建装置的其他实施例或具体实现方法可参照上述各方法实施例,此处不再赘述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该估算机软件产品存储在如上所述的一个估算机可读存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台智能设备(可以是手机,估算机,IOS私有API库构建设备,或者网络IOS私有API库构建设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

本发明公开了A1、一种IOS私有API库构建方法,所述IOS私有API库构建方法包括以下步骤:

从IOS系统的源文件中提取目标文件;

根据所述目标文件确定应用程序编程接口API信息;

根据所述API信息确定私有API信息集合;

根据所述私有API信息集合构建私有API库。

A2、如A1所述的IOS私有API库构建方法,所述源文件包括:私有库源文件、公有库源文件、动态链接库源文件、软件开发工具包源文件以及缓存源文件,所述目标文件包括:第一头文件、第二头文件、第三头文件、第四头文件以及文档列表;

所述从IOS系统的源文件中提取目标文件,包括:

从IOS系统的私有库源文件中提取第一头文件;

从IOS系统的公有库源文件中提取第二头文件;

从IOS系统的动态链接库源文件中提取第三头文件;

从IOS系统的软件开发工具包源文件中提取第四头文件;

从IOS系统的缓存源文件中提取文档列表。

A3、如A2所述的IOS私有API库构建方法,所述API信息包括:第一API信息、第二API信息、第三API信息、第四API信息以及第五API信息;

所述根据所述目标文件确定应用程序编程接口API信息,包括:

根据所述第一头文件确定第一API信息;

根据所述第二头文件确定第二API信息;

根据所述第三头文件确定第三API信息;

根据所述第四头文件确定第四API信息;

根据所述文档列表确定第五API信息。

A4、如A3所述的IOS私有API库构建方法,所述根据所述API信息确定私有API信息集合,包括:

根据所述第一API信息确定第一私有API信息集合;

根据所述第二API信息、所述第三API信息、所述第四API信息以及所述第五API信息确定第二私有API信息集合;

将所述第一私有API信息集合与所述第二私有API信息集合进行合并,得到私有API信息集合。

A5、如A4所述的IOS私有API库构建方法,所述根据所述第二API信息、所述第三API信息、所述第四API信息以及所述第五API信息确定第二私有API信息集合,包括:

根据所述第二API信息和所述第三API信息确定所有API信息集合;

根据所述第四API信息和所述第五API信息确定开放API信息集合;

根据所述所有API信息集合和所述开放API信息集合确定第二私有API信息集合。

A6、如A5所述的IOS私有API库构建方法,所述根据所述所有API信息集合和所述开放API信息集合确定第二私有API信息集合,包括:

将所述所有API信息集合与所述开放API信息集合进行比对,获得比对结果;

根据所述比对结果提取预设格式的API信息,并在所述所有API信息集合中将所述开放API信息集合对应的数据剔除,得到第二私有API信息集合。

A7、如A5所述的IOS私有API库构建方法,所述根据所述第二API信息和所述第三API信息确定所有API信息集合,包括:

将所述第二API信息和所述第三API信息进行合并,得到第一初始集合;

对所述第一初始集合进行去重处理,得到所有API信息集合。

A8、如A5所述的IOS私有API库构建方法,所述根据所述第四API信息和所述第五API信息确定开放API信息集合,包括:

将所述第四API信息和所述第五API信息进行合并,得到第二初始集合;

对所述第二初始集合进行去重处理,得到开放API信息集合。

A9、如A3至A8中任一项所述的IOS私有API库构建方法,所述根据所述第一头文件确定第一API信息,包括:

读取所述第一头文件对应的头文件内容;

通过预设正则匹配算法过滤掉所述头文件内容中的注释,并通过预设正则方法移除所述头文件内容中的预设格式,得到第一候选头文件内容;

根据所述第一候选头文件内容确定第一API信息。

A10、如A9所述的IOS私有API库构建方法,所述根据所述第一候选头文件内容确定第一API信息,包括:

从所述第一候选头文件内容中取出第一预设域正则方法对应的内容和第二预设域正则方法对应的内容,得到第二候选头文件内容;

从所述第二候选头文件内容中提取出方法名,得到第三候选头文件内容;

删除所述第三候选头文件内容中的预设关键字对应的内容,得到第四候选头文件内容;

删除所述第四候选头文件内容中的结构枚举类型,并进行方法匹配处理,得到第一API信息。

A11、如A3至A8中任一项所述的IOS私有API库构建方法,所述根据所述文档列表确定第五API信息,包括:

根据所述文档列表确定API信息表;

读取所述API信息表对应的信息表内容,并根据所述信息表内容确定当前通用唯一识别码UUID;

根据所述UUID和所述信息表内容确定第五API信息。

A12、如A11所述的IOS私有API库构建方法,所述根据所述UUID和所述信息表内容确定第五API信息,包括:

判断所述UUID是否符合预设开头条件;

在所述UUID符合预设开头条件时,根据预设切割长度对所述信息表内容中的字符串进行切割,得到候选信息表内容;

根据所述候选信息表内容确定第五API信息。

本发明还公开了B13、一种IOS私有API库构建装置,所述IOS私有API库构建装置包括:

头文件提取模块,用于从IOS系统的源文件中提取目标文件;

API信息确定模块,用于根据所述目标文件确定应用程序编程接口API信息;

集合确定模块,用于根据所述API信息确定私有API信息集合;

私有API库构建模块,用于根据所述私有API信息集合构建私有API库。

B14、如B13所述的IOS私有API库构建装置,所述源文件包括:私有库源文件、公有库源文件、动态链接库源文件、软件开发工具包源文件以及缓存源文件,所述目标文件包括:第一头文件、第二头文件、第三头文件、第四头文件以及文档列表;

所述头文件提取模块,还用于从IOS系统的私有库源文件中提取第一头文件;从IOS系统的公有库源文件中提取第二头文件;从IOS系统的动态链接库源文件中提取第三头文件;从IOS系统的软件开发工具包源文件中提取第四头文件;从IOS系统的缓存源文件中提取文档列表。

B15、如B14所述的IOS私有API库构建装置,所述API信息包括:第一API信息、第二API信息、第三API信息、第四API信息以及第五API信息;

所述API信息确定模块,还用于根据所述第一头文件确定第一API信息;根据所述第二头文件确定第二API信息;根据所述第三头文件确定第三API信息;根据所述第四头文件确定第四API信息;根据所述文档列表确定第五API信息。

B16、如B15所述的IOS私有API库构建装置,所述集合确定模块,还用于根据所述第一API信息确定第一私有API信息集合;根据所述第二API信息、所述第三API信息、所述第四API信息以及所述第五API信息确定第二私有API信息集合;将所述第一私有API信息集合与所述第二私有API信息集合进行合并,得到私有API信息集合。

B17、如B16所述的IOS私有API库构建装置,所述集合确定模块,还用于根据所述第二API信息和所述第三API信息确定所有API信息集合;根据所述第四API信息和所述第五API信息确定开放API信息集合;根据所述所有API信息集合和所述开放API信息集合确定第二私有API信息集合。

B18、如B17所述的IOS私有API库构建装置,所述集合确定模块,还用于将所述所有API信息集合与所述开放API信息集合进行比对,获得比对结果;根据所述比对结果提取预设格式的API信息,并在所述所有API信息集合中将所述开放API信息集合对应的数据剔除,得到第二私有API信息集合。

本发明还公开了C19、一种IOS私有API库构建设备,所述IOS私有API库构建设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的IOS私有API库构建程序,所述IOS私有API库构建程序配置有实现如上所述的IOS私有API库构建方法。

本发明还公开了D20、一种存储介质,所述存储介质上存储有IOS私有API库构建程序,所述IOS私有API库构建程序被处理器执行时实现如上所述的IOS私有API库构建方法。

相关技术
  • 一种存储系统的构建方法、装置、设备及存储介质
  • 数据库事务处理方法、装置、设备和计算机可读存储介质
  • 数据库同步恢复方法、装置、计算机可读存储介质和电子设备
  • 云数据库的测试方法及其装置、设备和存储介质
  • 医疗数据库建立方法、装置、计算机设备和存储介质
  • IOS私有API检测方法、装置、设备及存储介质
  • IOS应用的私有API检测方法、终端及存储介质
技术分类

06120115834291