发明内容
本发明提供一种识别文件的方法及移动终端,可通过扫描安装文件中文件头标识识别所述文件头标识指示的文件,减少开机或安装应用程序前对安装文件的扫描时间。
本发明第一方面提供一种识别文件的方法,包括:
获取安装文件,获取所述安装文件的文件目录的结束标记位置;
根据所述文件目录的结束标记位置确定所述文件目录的起始标记位置;
根据所述文件目录的起始标记位置查找所述文件目录中的文件头标识,通过分析所述文件头标识识别所述文件头标识指示的文件。
可选的,所述根据所述文件目录的结束标记位置确定所述文件目录的起始标记位置,包括:
获取所述文件目录占用所述安装文件的容量,根据所述文件目录的结束标记位置以及所述文件目录占用所述安装文件的容量确定所述文件目录相对所述安装文件的起始位置的距离;
根据所述文件目录相对所述安装文件的起始位置的距离确定所述文件目录的起始标记位置。
可选的,所述通过分析所述文件头标识识别所述文件头标识指示的文件,包括:
判断所述文件头标识是否包含用于指示渲染脚本文件的第一标识;
若判断为是,则识别出所述文件头标识指示的文件为渲染脚本文件。
可选的,所述通过分析所述文件头标识识别所述文件头标识指示的文件之前,所述方法还包括:
从所述文件目录中获取Lib库目录;
则所述通过分析所述文件头标识识别所述文件头标识指示的文件,包括:
从所述Lib目录中获取包含第二标识的文件头标识,所述第二标识用于指示动态链接库文件;
识别出所述包含第二标识的文件头标识指示的文件为动态链接库文件;
所述通过分析所述文件头标识识别所述文件头标识指示的文件之后,所述方法还包括:
确定所述包含第二标识的文件头标识指示的文件所属的Lib目录的子目录支持应用程序接口。
可选的,所述方法还包括:
获取所述文件头标识指示的文件的容量、所述文件头标识指示的文件的距离当前时间最近的修改时间以及所述文件头标识指示的文件的校验值;
根据所述文件头标识指示的文件的容量、所述文件头标识指示的文件的距离当前时间最近的修改时间以及所述文件头标识指示的文件的校验值,判断所述文件头标识指示的文件是否与Lib库目录包括的动态链接库文件相同;
若判断为否,则解压所述文件头标识指示的文件到所述Lib目录中。
本发明第二方面提供一种移动终端,包括:
获取模块,用于获取安装文件,获取所述安装文件的文件目录的结束标记位置;
确定模块,用于根据所述获取模块获取的文件目录的结束标记位置确定所述文件目录的起始标记位置;
识别模块,用于根据所述确定模块确定的文件目录的起始标记位置查找所述文件目录中的文件头标识,通过分析所述文件头标识识别所述文件头标识指示的文件。
可选的,所述确定模块,包括:
获取单元,用于获取所述文件目录占用所述安装文件的容量,根据所述文件目录的结束标记位置以及所述文件目录占用所述安装文件的容量确定所述文件目录相对所述安装文件的起始位置的距离;
确定单元,根据所述文件目录相对所述安装文件的起始位置的距离确定所述文件目录的起始标记位置。
可选的,所述识别模块包括:
判断单元,用于判断所述文件头标识是否包含用于指示渲染脚本文件的第一标识;
第一识别单元,用于当所述第一判断单元的判断结果为是时,则识别出所述文件头标识指示的文件为渲染脚本文件。
可选的,所述获取模块还用于:
从所述文件目录中获取Lib库目录;
所述识别模块包括:
获取单元,用于从所述Lib目录中获取包含第二标识的文件头标识,所述第二标识用于指示动态链接库文件;
第二识别单元,用于识别出所述包含第二标识的文件头标识指示的文件为动态链接库文件;
所述确定模块还用于:
确定所述包含第二标识的文件头标识指示的文件所属的Lib目录的子目录支持应用程序接口。
可选的,所述获取模块还用于:
获取所述文件头标识指示的文件的容量、所述文件头标识指示的文件的距离当前时间最近的修改时间以及所述文件头标识指示的文件的校验值;
所述移动终端还包括:
判断模块,用于根据所述文件头标识指示的文件的容量、所述文件头标识指示的文件的距离当前时间最近的修改时间以及所述文件头标识指示的文件的校验值,判断所述文件头标识指示的文件是否与Lib库目录包括的动态链接库文件相同;
解压模块,用于当所述判断模块的判断结果为否时,则解压所述文件头标识指示的文件到所述Lib目录中。
采用本发明,在开机或安装应用程序时,先获取安装文件,获取所述安装文件的文件目录的结束标记位置,根据所述文件目录的结束标记位置确定所述文件目录的起始标记位置,最后根据所述文件目录的起始标记位置查找所述文件目录中的文件头标识,通过分析所述文件头标识识别所述文件头标识指示的文件,可减少解压安装文件中所有文件的过程,减少开机或安装应用程序前对安装文件中所有文件的扫描时间,提高开机或安装应用程序的效率。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
请参阅图1,图1是本发明实施例的一种识别文件的方法的一实施例的流程示意图。其中,移动终端例如可以是手机、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(MID,mobile internet device)、可穿戴设备(例如智能手表(如iwatch等)、智能手环、计步器等)或其他终端设备。
如图1所示,本发明实施例的一种识别文件的方法的一实施例可以包括以下步骤。
S100,获取安装文件,获取所述安装文件的文件目录的结束标记位置。
具体实现中,在开机或安装应用程序时,需要获取应用程序的安装文件,并通过提取安装文件的格式中文件目录的结构实现部分扫描。文件目录中指示应用程序的各个文件,通过对文件目录中用于指示各个文件的文件头标识进行扫描识别各个文件,能够减少解压安装文件中所有文件并识别出native(原生)库文件和RenderScript(渲染脚本)文件的步骤。安装文件本身是一个zip包,因此可获取zip包的文件目录的结束标记位置。
作为一种可实施的方式,zip包的文件目录的结束标记位置可位于安装文件的二进制格式中0x06054b50处的位置。
S101,根据所述文件目录的结束标记位置确定所述文件目录的起始标记位置。
具体实现中,移动终端可根据文件目录的结束标记位置,确定文件目录的起始标记位置,以确定文件目录在安装文件的二进制格式中的位置范围以及文件目录的二进制的起始标记位置。
S102,根据所述文件目录的起始标记位置查找所述文件目录中的文件头标识,通过分析所述文件头标识识别所述文件头标识指示的文件。
具体实现中,在确定文件目录在安装文件的二进制格式中的位置范围以及文件目录的二进制格式中的起始标记位置之后,根据文件目录的起始标记位置遍历查找所有用于指示文件的文件头标识,根据所有查找到的文件头标识生成文件列表,通过分析文件列表中的每个文件头标识来识别文件头标识指示的文件。完成分析文件头标识的过程后,在开机或安装应用程序时,即可初始化应用程序。
作为一种可实施的方式,文件头标识的位置可位于安装文件的二进制格式中0x04034b50处的位置。
采用本发明实施例,在开机或安装应用程序时,先获取安装文件,获取所述安装文件的文件目录的结束标记位置,根据所述文件目录的结束标记位置确定所述文件目录的起始标记位置,最后根据所述文件目录的起始标记位置查找所述文件目录中的文件头标识,通过分析所述文件头标识识别所述文件头标识指示的文件,可减少解压安装文件中所有文件的过程,减少开机或安装应用程序前对安装文件中所有文件的扫描时间,提高开机或安装应用程序的效率。
请参阅图2,图2是本发明实施例的一种识别文件的方法的另一实施例的流程示意图。其中,移动终端例如可以是手机、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(MID,mobile internet device)、可穿戴设备(例如智能手表(如iwatch等)、智能手环、计步器等)或其他终端设备。
如图2所示,本发明实施例的一种识别文件的方法的另一实施例可以包括以下步骤。
S200,获取安装文件,获取所述安装文件的文件目录的结束标记位置。
具体实现中,在开机或安装应用程序时,需要获取应用程序的安装文件,并通过提取安装文件的格式中文件目录的结构实现部分扫描。文件目录中指示应用程序的各个文件,通过对文件目录中用于指示各个文件的文件头标识进行扫描识别各个文件,能够减少解压安装文件中所有文件并识别出native(原生)库文件和RenderScript(渲染脚本)文件的步骤。安装文件本身是一个zip包,因此可获取zip包的文件目录的结束标记位置。
作为一种可实施的方式,zip包的文件目录的结束标记位置可位于安装文件的二进制格式中0x06054b50处的位置。
S201,获取所述文件目录占用所述安装文件的容量,根据所述文件目录的结束标记位置以及所述文件目录占用所述安装文件的容量确定所述文件目录相对所述安装文件的起始位置的距离。
具体实现中,移动终端在确定文件目录的结束标记位置后,可获取该文件目录占用安装文件的容量(例如字节数),再根据文件目录的结束标记位置以及该文件目录占用安装文件的字节数确定文件目录相对安装文件的起始位置的距离。
S202,根据所述文件目录相对所述安装文件的起始位置的距离确定所述文件目录的起始标记位置。
具体实现中,移动终端确定出文件目录相对安装文件的起始位置的距离之后,即可确定文件目录的起始标记位置。例如,文件目录占用安装文件的字节数为12个字节,通过确定文件目录的结束标记位置与文件目录占用安装文件的字节数为12个字节确定文件目录相对安装文件的起始位置的偏移为16个字节。由此可确定,文件目录的起始标记位置在安装文件的起始位置的偏移16个字节开始,其容量为12个字节。
S203,根据所述文件目录的起始标记位置查找所述文件目录中的文件头标识,通过分析所述文件头标识识别所述文件头标识指示的文件。
具体实现中,在确定文件目录的二进制格式中的起始标记位置之后,根据文件目录的起始标记位置遍历查找所有用于指示文件的文件头标识,根据所有查找到的文件头标识生成文件列表,通过分析文件列表中的每个文件头标识来识别文件头标识指示的文件。完成分析文件头标识的过程后,在开机或安装应用程序时,即可初始化应用程序。
作为一种可实施的方式,文件头标识的位置可位于安装文件的二进制格式中0x04034b50处的位置。
采用本发明实施例,在开机或安装应用程序时,先获取安装文件,获取所述安装文件的文件目录的结束标记位置,根据所述文件目录的结束标记位置确定所述文件目录的起始标记位置,最后根据所述文件目录的起始标记位置查找所述文件目录中的文件头标识,通过分析所述文件头标识识别所述文件头标识指示的文件,可减少解压安装文件中所有文件的过程,减少开机或安装应用程序前对安装文件中所有文件的扫描时间,提高开机或安装应用程序的效率。
请参阅图3,图3是本发明实施例的一种识别文件的方法的另一实施例的流程示意图。其中,移动终端例如可以是手机、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(MID,mobile internet device)、可穿戴设备(例如智能手表(如iwatch等)、智能手环、计步器等)或其他终端设备。
如图3所示,本发明实施例的一种识别文件的方法的另一实施例可以包括以下步骤。
S300,获取安装文件,获取所述安装文件的文件目录的结束标记位置。
具体实现中,在开机或安装应用程序时,需要获取应用程序的安装文件,并通过提取安装文件的格式中文件目录的结构实现部分扫描。文件目录中指示应用程序的各个文件,通过对文件目录中用于指示各个文件的文件头标识进行扫描识别各个文件,能够减少解压安装文件中所有文件并识别出native(原生)库文件和RenderScript(渲染脚本)文件的步骤。安装文件本身是一个zip包,因此可获取zip包的文件目录的结束标记位置。
作为一种可实施的方式,zip包的文件目录的结束标记位置可位于安装文件的二进制格式中0x06054b50处的位置。
S301,获取所述文件目录占用所述安装文件的容量,根据所述文件目录的结束标记位置以及所述文件目录占用所述安装文件的容量确定所述文件目录相对所述安装文件的起始位置的距离。
具体实现中,移动终端在确定文件目录的结束标记位置后,可获取该文件目录占用安装文件的容量(例如字节数),再根据文件目录的结束标记位置以及该文件目录占用安装文件的字节数确定文件目录相对安装文件的起始位置的距离。
S302,根据所述文件目录相对所述安装文件的起始位置的距离确定所述文件目录的起始标记位置。
具体实现中,移动终端确定出文件目录相对安装文件的起始位置的距离之后,即可确定文件目录的起始标记位置。例如,文件目录占用安装文件的字节数为12个字节,通过确定文件目录的结束标记位置与文件目录占用安装文件的字节数为12个字节确定文件目录相对安装文件的起始位置的偏移为16个字节。由此可确定,文件目录的起始标记位置在安装文件的起始位置的偏移16个字节开始,其容量为12个字节。
S303,根据所述文件目录的起始标记位置查找所述文件目录中的文件头标识,判断所述文件头标识是否包含用于指示渲染脚本文件的第一标识。
具体实现中,在确定文件目录的二进制格式中的起始标记位置之后,根据文件目录的起始标记位置遍历查找所有用于指示文件的文件头标识,根据所有查找到的文件头标识生成文件列表,通过分析文件列表中的每个文件头标识来识别文件头标识指示的文件。其中,可判断文件头标识是否包含第一标识,第一标识可为.bc,用于指示RenderScript(渲染脚本)文件。移动终端通过判断文件头标识是否包含第一标识确定是否存在RenderScript文件。若判断为是则执行步骤S304,若判断为否则执行S313,扫描流程结束。
S304,若判断为是,则识别出所述文件头标识指示的文件为渲染脚本文件。
具体实现中,当步骤S303的判断结果为是时,则识别出该文件头标识指示的文件为RenderScript文件,则通知系统存在RenderScript文件,完成对该文件的识别。
S305,根据所述文件目录的起始标记位置查找所述文件目录中的文件头标识,从所述文件目录中获取Lib库目录。
具体实现中,移动终端通过确定文件目录中的文件头标识,生成文件列表,并判断文件目录中是否存在Lib库目录,若判断为是,则获取Lib目录。
S306,从所述Lib目录中获取包含第二标识的文件头标识,所述第二标识用于指示动态链接库文件。
具体实现中,Lib目录包含文件头标识,移动终端可从Lib目录中获取包含第二标识的文件头标识,第二标识可为.so(Shared Object),用于指示动态链接库文件。
S307,识别出所述包含第二标识的文件头标识指示的文件为动态链接库文件。
具体实现中,当移动终端确定文件头标识包含第二标识时,则识别出该文件头标识指示的文件为.so文件。
S308,确定所述包含第二标识的文件头标识指示的文件所属的Lib目录的子目录支持应用程序接口。
具体实现中,当移动终端识别出.so文件时,获取该.so文件所属的Lib目录的子目录,并确定该子目录能够匹配到abi(Application Binary Interface,应用程序接口),其中子目录可匹配到abi下的arm64-v8a、armeabi-v7a、armeabi的任意一种。如果.so文件所属的Lib目录的子目录支持arm64-v8a、armeabi-v7a、armeabi的任意一种,则确定.so文件所属的Lib目录的子目录支持abi。
S309,根据所述文件目录的起始标记位置查找所述文件目录中的文件头标识,通过分析所述文件头标识识别所述文件头标识指示的文件。
具体实现中,步骤S309-S312是对native库文件的识别、查找以及拷贝的流程。移动终端通过确定文件目录中的文件头标识,生成文件列表,并通过分析文件头标识识别文件头标识指示的文件。
S310,获取所述文件头标识指示的文件的容量、所述文件头标识指示的文件的距离当前时间最近的修改时间以及所述文件头标识指示的文件的校验值。
具体实现中,可获取文件头标识指示的文件的容量,文件头标识指示的文件的距离当前时间最近的修改时间以及所述文件头标识指示的文件的校验值。可选的,文件头标识指示的文件的容量可为解压后的大小。具体地,可从文件头标识的起始位置开始,在偏移文件头标识的起始位置的第22个字节的位置获取文件头标识指示的文件解压后的大小,在偏移文件头标识的起始位置的第10个字节的位置获取文件头标识指示的文件的距离当前时间最近的修改时间,在偏移文件头标识的起始位置的第14个字节的位置获取文件头标识指示的文件的校验值。
可选的,文件头标识指示的文件的校验值可为CRC(Cyclic Redundancy Check,循环冗余校验码)的校验值。
S311,根据所述文件头标识指示的文件的容量、所述文件头标识指示的文件的距离当前时间最近的修改时间以及所述文件头标识指示的文件的校验值,判断所述文件头标识指示的文件是否与Lib库目录包括的动态链接库文件相同。
具体实现中,可通过文件头标识指示的文件的容量、所述文件头标识指示的文件的距离当前时间最近的修改时间以及所述文件头标识指示的文件的校验值,与Lib库目录包括的动态链接库文件(.so文件)的容量、.so文件的距离当前时间最近的修改时间以及.so文件的校验值进行比较,判断文件头标识指示的文件是否与Lib库目录包括的.so文件相同。也可由此判断Lib目录中对应的.so文件是否被修改或者不存在,如果确定文件头标识指示的文件与Lib目录包括的.so文件不相同,则确定Lib目录中对应的.so文件被修改或者不存在,则执行步骤S312;如果确定文件头标识指示的文件与Lib库目录包括的.so文件相同,则执行步骤S313,扫描过程结束。
可选的,.so文件不仅可包括在Lib目录中,也可包括在data(数据)的目录、app(应用程序)的目录和/或应用包名的目录中。
S312,若判断为否,则解压所述文件头标识指示的文件到所述Lib目录中。
具体实现中,当移动终端确定文件头标识指示的文件与Lib库目录包括的.so文件不相同时,则确定Lib库目录中对应的.so文件被修改或者不存在,因此可将该文件头标识指示的文件进行解压,并保存在Lib目录中。
可选的,该文件头标识指示的文件也可解压到data(数据)的目录、app(应用程序)的目录和/或应用包名的目录中。
S313,结束。
值得注意的是,步骤S303-S304和S313、步骤S305-S308、步骤S309-S313可并行执行,本实施例不作限定。
采用本发明实施例,在开机或安装应用程序时,先获取安装文件,获取所述安装文件的文件目录的结束标记位置,根据所述文件目录的结束标记位置确定所述文件目录的起始标记位置,最后根据所述文件目录的起始标记位置查找所述文件目录中的文件头标识,通过分析所述文件头标识识别所述文件头标识指示的文件,可减少解压安装文件中所有文件的过程,减少开机或安装应用程序前对安装文件中所有文件的扫描时间,提高开机或安装应用程序的效率。
请参阅图4,图4是本发明实施例的一种移动终端的结构示意图。实施例图4所示的移动终端执行实施例图1至图3所示的一种识别文件的方法,本实施例则不再赘述。如图4所示的移动终端包括获取模块400、确定模块401以及识别模块402。
获取模块400,用于获取安装文件,获取所述安装文件的文件目录的结束标记位置;
确定模块401,用于根据所述获取模块400获取的文件目录的结束标记位置确定所述文件目录的起始标记位置;
识别模块402,用于根据所述确定模块401确定的文件目录的起始标记位置查找所述文件目录中的文件头标识,通过分析所述文件头标识识别所述文件头标识指示的文件。
具体实现中,在开机或安装应用程序时,需要获取应用程序的安装文件,并通过提取安装文件的格式中文件目录的结构实现部分扫描。文件目录中指示应用程序的各个文件,通过对文件目录中用于指示各个文件的文件头标识进行扫描识别各个文件,能够减少解压安装文件中所有文件并识别出native(原生)库文件和RenderScript(渲染脚本)文件的步骤。安装文件本身是一个zip包,因此可获取zip包的文件目录的结束标记位置。
具体实现中,移动终端可根据文件目录的结束标记位置,确定文件目录的起始标记位置,以确定文件目录在安装文件的二进制格式中的位置范围以及文件目录的二进制的起始标记位置。
具体实现中,在确定文件目录在安装文件的二进制格式中的位置范围以及文件目录的二进制格式中的起始标记位置之后,根据文件目录的起始标记位置遍历查找所有用于指示文件的文件头标识,根据所有查找到的文件头标识生成文件列表,通过分析文件列表中的每个文件头标识来识别文件头标识指示的文件。完成分析文件头标识的过程后,在开机或安装应用程序时,即可初始化应用程序。
可选的,如图5所示,所述确定模块401,包括获取单元4011、确定单元4012。
获取单元4011,用于获取所述文件目录占用所述安装文件的容量,根据所述文件目录的结束标记位置以及所述文件目录占用所述安装文件的容量确定所述文件目录相对所述安装文件的起始位置的距离;
确定单元4012,根据所述文件目录相对所述安装文件的起始位置的距离确定所述文件目录的起始标记位置。
可选的,如图5所示,所述识别模块402包括判断单元4021、第一识别单元4022。
判断单元4021,用于判断所述文件头标识是否包含用于指示渲染脚本文件的第一标识;
第一识别单元4022,用于当所述第一判断单元的判断结果为是时,则识别出所述文件头标识指示的文件为渲染脚本文件。
可选的,所述获取模块400还用于:
从所述文件目录中获取Lib库目录;
如图5所示,所述识别模块402包括获取单元4023、第二识别单元4024。
获取单元4023,用于从所述Lib目录中获取包含第二标识的文件头标识,所述第二标识用于指示动态链接库文件;
第二识别单元4024,用于识别出所述包含第二标识的文件头标识指示的文件为动态链接库文件;
所述确定模块401还用于:
确定所述包含第二标识的文件头标识指示的文件所属的Lib目录的子目录支持应用程序接口。
可选的,所述获取模块400还用于:
获取所述文件头标识指示的文件的容量、所述文件头标识指示的文件的距离当前时间最近的修改时间以及所述文件头标识指示的文件的校验值;
如图5所示,所述移动终端还包括判断模块403、解压模块404。
判断模块403,用于根据所述文件头标识指示的文件的容量、所述文件头标识指示的文件的距离当前时间最近的修改时间以及所述文件头标识指示的文件的校验值,判断所述文件头标识指示的文件是否与Lib库目录包括的动态链接库文件相同;
解压模块404,用于当所述判断模块的判断结果为否时,则解压所述文件头标识指示的文件到所述Lib目录中。
采用本发明实施例,在开机或安装应用程序时,先获取安装文件,获取所述安装文件的文件目录的结束标记位置,根据所述文件目录的结束标记位置确定所述文件目录的起始标记位置,最后根据所述文件目录的起始标记位置查找所述文件目录中的文件头标识,通过分析所述文件头标识识别所述文件头标识指示的文件,可减少解压安装文件中所有文件的过程,减少开机或安装应用程序前对安装文件中所有文件的扫描时间,提高开机或安装应用程序的效率。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本发明实施例装置中的模块或单元可以根据实际需要进行合并、划分和删减。
本发明实施例的模块或模块,可以以通用集成电路(如中央处理器CPU),或以专用集成电路(ASIC)来实现。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
以上所述的实施方式,并不构成对该技术方案保护范围的限定。任何在上述实施方式的精神和原则之内所作的修改、等同替换和改进等,均应包含在该技术方案的保护范围之内。