一种数据处理方法、装置、设备及存储介质与流程

文档序号:17357082发布日期:2019-04-09 21:46阅读:155来源:国知局
一种数据处理方法、装置、设备及存储介质与流程

本公开实施例涉及计算机软件应用技术领域,尤其涉及一种数据处理方法、装置、设备及存储介质。



背景技术:

对于安卓系统来说,通过apk(androidpackage,android安装包)来安装应用是一种常用的应用安装手段。通过apk安装应用时,解压apk后在解压文件中都会存在androidmanifest.xml文件。androidmanifest.xml是android开发中非常重要的一个文件,其中记录向系统声明的权限和组件等。androidmanifest.xml在编译打包过程中,被编译成特殊的二进制格式,而非明文,这种格式被称作axml(androidbinaryxml),既可以减少文件体积,又会加快io(input/output,输入/输出)速度。

当需要对编译好的apk进行修改并重新打包时,现有修改androidmanifest的常规思路是逆向编译,修改之后再编译回去。这种修改方式不仅会浪费大量时间,而且在对androidmanifest文件编译时会依赖相关资源,从而引发资源引用问题。



技术实现要素:

本公开实施例提供一种数据处理方法、装置、设备及存储介质,实现在不修改其他资源的前提下,提高安装包的修改打包效率,从而加强安装包修改打包的通用性。

第一方面,本公开实施例提供了一种数据处理方法,包括:

获取与源码文件关联的数据变更信息,其中,所述源码文件为二进制文件;

根据所述数据变更信息的数据变更类型,生成与所述数据变更信息匹配的数据处理程序;

调用所述数据处理程序对所述源码文件进行处理,形成与所述数据变更信息匹配的新的源码文件。

可选的,根据所述数据变更信息的数据变更类型,生成与所述数据变更信息匹配的数据处理程序,包括:

获取用于更改源码文件的数据处理基础代码,其中,在所述数据处理基础代码中包括至少一个与数据变更类型匹配的空白区域;

在所述数据处理基础代码中,搜索与所述数据变更信息的数据变更类型对应的空白区域;

在所述空白区域中对应填充所述数据变更信息,以生成与所述数据变更信息匹配的数据处理程序。

可选的,所述源码文件包括:基于android系统的androidmanifest.xml配置文件;

其中,所述androidmanifest.xml配置文件包括:头部、字符串区、资源标识区以及xml文件区。

可选的,所述数据变更信息的数据变更类型包括:在所述源码文件中注入的新的服务;

调用所述数据处理程序对所述源码文件处理,形成与所述数据变更信息匹配的新的源码文件,包括:

调用所述数据处理程序,将所述服务的服务名称写入所述源码文件中的字符串区,并记录与所述服务对应的索引值;

在所述源码文件的xml文件区中搜索与所述服务关联的根节点;

建立与所述服务对应的服务节点,并根据与所述服务对应的索引值以及所述服务的属性信息,更新所述服务节点;

在所述xml文件区中将所述服务节点添加为所述根节点的子节点,以形成与所述数据变更信息匹配的新的源码文件。

可选的,所述数据变更信息的数据变更类型包括:将所述源码文件中的目标类修改为新的类名;

调用所述数据处理程序对所述源码文件处理,形成与所述数据变更信息匹配的新的源码文件,包括:

调用所述数据处理程序,在所述源码文件的xml文件区中遍历各个类节点查找与所述目标类对应的目标节点,并将查找到的所述目标节点的类名修改为所述新的类名;

在所述目标节点中获取与所述目标类的类名匹配的索引值;

判断所述源码文件的字符串区中是否包括所述索引值:若是,则将字符串区中与所述搜索值关联的类名修改为所述新的类名;否则,在所述字符串区中写入所述索引值与所述新的类名之间的对应关系。

可选的,在调用所述数据处理程序对所述源码文件处理,形成与所述数据变更信息匹配的新的源码文件,之前,还包括:

按照第一读取策略,对所述源码文件中的二进制数据进行实时读取,并写入内存中;

如果检测到读取至所述源码文件中的编码方式指示字段,则根据所述编码方式指示字段的字段值确定第二读取策略;

使用所述第二读取策略继续对所述源码文件中的内容进行实时读取,直至将所述源码文件中的内容全部写入内存中;

调用所述数据处理程序对所述源码文件处理,形成与所述数据变更信息匹配的新的源码文件,具体包括:

调用所述数据处理程序对内存中与所述源码文件对应的数据内容进行处理,并将处理后的数据内容重新写回至文件,以形成与所述数据变更信息匹配的新的源码文件。

可选的,在获取与源码文件关联的数据变更信息之前,还包括:

对原始源代码进行编译,生成与所述原始源代码对应的原始数据包;

对所述原始数据包进行解压缩处理,得到解压缩结果,其中,所述解压缩结果中包括所述源码文件;

在调用所述数据处理程序对所述源码文件处理,形成与所述数据变更信息匹配的新的源码文件之后,还包括:

使用所述新的源码文件替换所述解压缩结果中的源码文件后,对所述解压缩结果进行重新打包,得到与所述数据变更信息匹配的新的数据包。

第二方面,本公开实施例还提供了一种数据处理装置,包括:

信息获取模块,用于获取与源码文件关联的数据变更信息,其中,所述源码文件为二进制文件;

程序生成模块,用于根据所述数据变更信息的数据变更类型,生成与所述数据变更信息匹配的数据处理程序;

文件形成模块,用于调用所述数据处理程序对所述源码文件进行处理,形成与所述数据变更信息匹配的新的源码文件。

可选的,程序生成模块,具体用于获取用于更改源码文件的数据处理基础代码,其中,在所述数据处理基础代码中包括至少一个与数据变更类型匹配的空白区域;在所述数据处理基础代码中,搜索与所述数据变更信息的数据变更类型对应的空白区域;在所述空白区域中对应填充所述数据变更信息,以生成与所述数据变更信息匹配的数据处理程序。

可选的,所述源码文件包括:基于android系统的androidmanifest.xml配置文件;其中,所述androidmanifest.xml配置文件包括:头部、字符串区、资源标识区以及xml文件区。

可选的,所述数据变更信息的数据变更类型包括:在所述源码文件中注入的新的服务;文件形成模块,具体用于调用所述数据处理程序,将所述服务的服务名称写入所述源码文件中的字符串区,并记录与所述服务对应的索引值;在所述源码文件的xml文件区中搜索与所述服务关联的根节点;建立与所述服务对应的服务节点,并根据与所述服务对应的索引值以及所述服务的属性信息,更新所述服务节点;在所述xml文件区中将所述服务节点添加为所述根节点的子节点,以形成与所述数据变更信息匹配的新的源码文件。

可选的,所述数据变更信息的数据变更类型包括:将所述源码文件中的目标类修改为新的类名;文件形成模块,具体用于调用所述数据处理程序,在所述源码文件的xml文件区中遍历各个类节点查找与所述目标类对应的目标节点,并将查找到的所述目标节点的类名修改为所述新的类名;在所述目标节点中获取与所述目标类的类名匹配的索引值;判断所述源码文件的字符串区中是否包括所述索引值:若是,则将字符串区中与所述搜索值关联的类名修改为所述新的类名;否则,在所述字符串区中写入所述索引值与所述新的类名之间的对应关系。

可选的,所述装置还包括:数据写入模块,用于按照第一读取策略,对所述源码文件中的二进制数据进行实时读取,并写入内存中;策略确定模块,用于如果检测到读取至所述源码文件中的编码方式指示字段,则根据所述编码方式指示字段的字段值确定第二读取策略;内容写入模块,用于使用所述第二读取策略继续对所述源码文件中的内容进行实时读取,直至将所述源码文件中的内容全部写入内存中;文件形成模块,具体用于调用所述数据处理程序对内存中与所述源码文件对应的数据内容进行处理,并将处理后的数据内容重新写回至文件,以形成与所述数据变更信息匹配的新的源码文件。

可选的,所述装置还包括:数据包生成模块,用于对原始源代码进行编译,生成与所述原始源代码对应的原始数据包;解压模块,用于对所述原始数据包进行解压缩处理,得到解压缩结果,其中,所述解压缩结果中包括所述源码文件;数据打包模块,用于使用所述新的源码文件替换所述解压缩结果中的源码文件后,对所述解压缩结果进行重新打包,得到与所述数据变更信息匹配的新的数据包。

第三方面,本公开实施例还提供了一种计算机设备,所述计算机设备包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本公开任意实施例所提供的数据处理方法。

第四方面,本公开实施例还提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现本公开任意实施例所提供的数据处理方法。

本公开实施例通过获取与源码文件关联的数据变更信息,根据数据变更信息的数据变更类型,生成与数据变更信息匹配的数据处理程序;从而调用数据处理程序对源码文件进行处理,形成与数据变更信息匹配的新的源码文件,解决了现有安装包修改打包过程中存在的资源引用和修改打包效率低等问题,实现在不修改其他资源的前提下,提高安装包的修改打包效率,从而加强安装包修改打包的通用性。

附图说明

图1是本公开实施例一提供的一种数据处理方法的流程图;

图2是本公开实施例二提供的一种数据处理方法的流程图;

图3是本公开实施例三提供的一种数据处理方法的流程图;

图4是本公开实施例四提供的一种数据处理装置的示意图;

图5为本公开实施例五提供的一种计算机设备的结构示意图。

具体实施方式

下面结合附图和实施例对本公开作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本公开,而非对本公开的限定。

另外还需要说明的是,为了便于描述,附图中仅示出了与本公开相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。

实施例一

图1是本公开实施例一提供的一种数据处理方法的流程图,本实施例可适用于修改打包安装包的情况,该方法可以由数据处理装置来执行,该装置可以由软件和/或硬件的方式来实现,并一般可集成在计算机设备中。相应的,如图1所示,该方法包括如下操作:

s110、获取与源码文件关联的数据变更信息,其中,所述源码文件为二进制文件。

其中,源码文件是指源代码的集合,源代码则是一组具有特定意义的可以实现特定功能的字符。在本公开实施例中,源码文件可以是由二进制代码形成的文件。数据变更信息可以是源码文件中相关数据的变更信息或需求,例如,数据变更信息可以是对源码文件中的指定数据进行修改,或者,数据变更信息还可以是在源码文件中增加或删除服务等,任何可以对源码文件的数据造成变更的信息均可以作为数据变更信息,本公开实施例对此并不进行限制。

在本公开实施例中,在对源文件中的数据进行修改之前,首先需要获取与源码文件关联的数据变更信息,以根据数据变更信息对源码文件进行修改。

在本公开的一个可选实施例中,所述源码文件可以包括:基于android系统的androidmanifest.xml配置文件;其中,所述androidmanifest.xml配置文件包括:头部、字符串区、资源标识区以及xml(extensiblemarkuplanguage,可扩展标记语言)文件区。

其中,androidmanifest.xml是每个安卓程序中必须的文件,位于整个apk的根目录,描述了apk中暴露的组件信息。

在本公开实施例中,可选的,源码文件可以是基于android系统的androidmanifest.xml配置文件。androidmanifest.xml配置文件根据功能划分大致可以划分为四个区,即头部、字符串区、资源标识区以及xml文件区,并且引入chunk(区块)的概念。头部主要包含两个字段,分别是魔数(0x00080003)和文件尺寸,两个字段均为四个字节。字符串区主要存储字符串池,字符串池中的字符串,就是androidmanifest.xml配置文件中所有的字符串信息,在多个地方使用相同字符串时,就可以复用,从而节省空间,加快io速度。字符串区通常采用4字节标识,如chunktype、chunksize或stringcount等,然后可以分别标识每个字符串的偏移量,从而获取到字符串池的内容。资源标识区主要存储了多个resourceid(资源标识)的值,结构简单,读取方式也相对容易。xml文件区是androidmanifest.xml配置文件整体的核心部分。包含了命名空间、tag(标签)相关信息以及整体xml树形层次结构信息等。xml文件区可以划分为startnamespacechunk(开始命名空间区块)、endnamespacechunk(结束命名空间区块)、starttagchunk(开始标记区块)、endtagchunk(结束标记区块)以及textchunk(文本块)。其中,namespace中包含多个tag,每个tag中包含一个名字和不定数量的属性,同时也可能包含多个下层tag,从而形成树形结构。而整个androidmanifest.xml配置文件的根节点tag就是manifest文件。androidmanifest.xml配置文件的数据结构采用现有技术的特定格式,本公开实施例不再详述。

s120、根据所述数据变更信息的数据变更类型,生成与所述数据变更信息匹配的数据处理程序。

其中,数据变更类型指的是源文件的修改类型,如修改数据、增加服务或删减服务等。数据处理程序是用于对源码文件中的数据进行修改的,且独立于源码文件的程序。需要说明的是,数据处理程序可以根据实际需求进行设计,本公开实施例并不对数据处理程序的具体内容进行限定。

在本公开实施例中,在对源码文件中的数据进行修改时,不需要直接对源码文件中的数据进行查找和修改,而是通过一个数据处理程序自动完成对源码文件的修改。数据处理程序可以根据数据变更信息的数据变更类型生成。需要说明的是,一个数据处理程序可以针对不同的数据变更类型完成多种类型的源码文件的数据修改,也可以只针对一种类型的数据变更类型完成源码文件的数据修改。也即,一种数据变更类型可以对应生成一种数据处理程序,也可以由多种数据变更类型对应生成一种数据处理程序。

s130、调用所述数据处理程序对所述源码文件进行处理,形成与所述数据变更信息匹配的新的源码文件。

在本公开实施例中,根据数据变更类型以及数据变更信息生成对应的数据处理程序后,即可调用生成的数据处理程序对源码文件中的数据进行处理。需要说明的是,一个源码文件可以使用一个数据处理程序,也可以使用多个数据处理程序,本公开实施例对此并不进行限制。采用数据处理程序对源码文件中的数据处理完毕后,原始的源码文件结合修改后的数据信息变形成与数据变更信息匹配的新的源码文件。

本公开实施例通过获取与源码文件关联的数据变更信息,根据数据变更信息的数据变更类型,生成与数据变更信息匹配的数据处理程序;从而调用数据处理程序对源码文件进行处理,形成与数据变更信息匹配的新的源码文件,解决了现有安装包修改打包过程中存在的资源引用和修改打包效率低等问题,实现在不修改其他资源的前提下,提高安装包的修改打包效率,从而加强安装包修改打包的通用性。

实施例二

图2是本公开实施例二提供的一种数据处理方法的流程图,本实施例以上述实施例中各个可选方案为基础进行具体化,在本实施例中,给出了根据所述数据变更信息的数据变更类型,生成与所述数据变更信息匹配的数据处理程序的具体实现方式,同时,针对在所述源码文件中注入的新的服务的数据变更类型,给出了调用所述数据处理程序对所述源码文件处理,形成与所述数据变更信息匹配的新的源码文件的具体实现方式。相应的,如图2所示,本实施例的方法可以包括:

s210、获取与源码文件关联的数据变更信息,其中,所述源码文件为二进制文件。

在本公开的一个可选实施例中,在获取与源码文件关联的数据变更信息之前,还可以包括:对原始源代码进行编译,生成与所述原始源代码对应的原始数据包;对所述原始数据包进行解压缩处理,得到解压缩结果,其中,所述解压缩结果中包括所述源码文件。

其中,原始源代码可以是采用汇编语言或高级语言编写的,用于生成安装包的代码程序。原始数据包即为原始源代码编写完成后,经过编译运行所生成的安装包。

在本公开实施例中,生成原始的安装包时,可以对原始的安装包对应的原始源代码程序进行编译,从而得到压缩文件形式的原始的安装包。原始的安装包可以通过解压缩的方式来安装相关应用,且原始的安装包解压缩后,得到的根目录中可以包括源码文件,即androidmanifest.xml配置文件。

s220、根据所述数据变更信息的数据变更类型,生成与所述数据变更信息匹配的数据处理程序。

可选的,在一种实施方式中,s220可以包括下述操作:

s221、获取用于更改源码文件的数据处理基础代码,其中,在所述数据处理基础代码中包括至少一个与数据变更类型匹配的空白区域。

其中,数据处理基础代码可以是用于对源码文件进行数据修改的模板文件。

在本公开实施例中,数据处理基础代码具有修改源码文件(也即androidmanifest.xml配置文件)数据的基本功能,为了使数据处理程序具备更好的通用性,可以在数据处理程序中先编辑好用于修改源码文件的基础功能,并在数据处理基础代码中设定相应的空白区域,用于根据修改需求填写相应的数据。

s222、在所述数据处理基础代码中,搜索与所述数据变更信息的数据变更类型对应的空白区域。

s223、在所述空白区域中对应填充所述数据变更信息,以生成与所述数据变更信息匹配的数据处理程序。

相应的,当需要对源码文件进行修改时,只需要在数据处理基础代码中的空白区域部分填写需要变更的数据变更信息。然后,运行数据处理基础代码即可生成满足变更需求的数据处理程序。

示例性的,假设数据处理基础代码包括“android:name=“””的基础代码段。该基础代码段的意思是可以修改androidmanifest.xml配置文件中对应的应用的名称。如果需要修改源码文件中的应用名称,可以直接在该基础代码段中添加需要修改的名称即可。如,在该基础代码段的空白区域处添加数据变更信息“某某宝”,则生成的数据处理程序中对应的“android:name=“某某宝””数据代码段即可将应用的名称修改为“某某宝”。

s230、调用所述数据处理程序对所述源码文件进行处理,形成与所述数据变更信息匹配的新的源码文件。

其中,所述数据变更信息的数据变更类型可以具体包括:在所述源码文件中注入的新的服务。

可选的,在一种实施方式中,s230可以包括下述操作:

s231、调用所述数据处理程序,将所述服务的服务名称写入所述源码文件中的字符串区,并记录与所述服务对应的索引值。

具体的,如果数据变更信息的数据变更类型为在androidmanifest.xml配置文件中注入新的服务,则可以通过数据处理程序直接将新增服务的服务名称写入androidmanifest.xml配置文件中的字符串区,同时还需要记录新增服务对应的索引值。

s232、在所述源码文件的xml文件区中搜索与所述服务关联的根节点。

相应的,对androidmanifest.xml配置文件的字符串区完成数据处理后,还需要在androidmanifest.xml配置文件对应的xml文件区中搜索与新增服务关联的根节点。

s233、建立与所述服务对应的服务节点,并根据与所述服务对应的索引值以及所述服务的属性信息,更新所述服务节点。

同时,新增服务在androidmanifest.xml配置文件中需要配置相应的节点,因此,要在androidmanifest.xml配置文件中建立新增服务对应的服务节点,并依据新增服务对应的索引值以及相关的属性信息等内容对新增的服务节点进行更新。

s234、在所述xml文件区中将所述服务节点添加为所述根节点的子节点,以形成与所述数据变更信息匹配的新的源码文件。

最后,还需要建立新增服务节点与androidmanifest.xml配置文件根节点之间的联系。具体的,可以在androidmanifest.xml配置文件的xml文件区中将新增服务节点添加为根节点的子节点,从而建立新增服务节点和根节点直接的联系,最终形成与数据变更信息匹配的新的androidmanifest.xml配置文件。

本公开实施例通过获取与源码文件关联的数据变更信息,根据数据变更信息的数据变更类型:在源码文件中注入的新的服务,生成与其数据变更信息匹配的数据处理程序;从而调用数据处理程序对源码文件进行处理,形成与数据变更信息匹配的新的源码文件,解决了现有安装包修改打包过程中存在的资源引用和修改打包效率低等问题,实现在不修改其他资源的前提下,提高安装包的修改打包效率,从而加强安装包修改打包的通用性。

实施例三

图3是本公开实施例三提供的一种数据处理方法的流程图,本实施例以上述实施例中各个可选方案为基础进行具体化,在本实施例中,针对将所述源码文件中的目标类修改为新的类名的数据变更类型,给出了调用所述数据处理程序对所述源码文件处理,形成与所述数据变更信息匹配的新的源码文件的具体实现方式。相应的,如图3所示,本实施例的方法可以包括:

s310、获取与源码文件关联的数据变更信息,其中,所述源码文件为二进制文件。

s320、根据所述数据变更信息的数据变更类型,生成与所述数据变更信息匹配的数据处理程序。

可选的,在一种实施方式中,s320可以包括下述操作:

s321、获取用于更改源码文件的数据处理基础代码,其中,在所述数据处理基础代码中包括至少一个与数据变更类型匹配的空白区域。

s322、在所述数据处理基础代码中,搜索与所述数据变更信息的数据变更类型对应的空白区域。

s323、在所述空白区域中对应填充所述数据变更信息,以生成与所述数据变更信息匹配的数据处理程序。

s330、调用所述数据处理程序对所述源码文件进行处理,形成与所述数据变更信息匹配的新的源码文件。

其中,所述数据变更信息的数据变更类型可以具体包括:将所述源码文件中的目标类修改为新的类名。

可选的,在一种实施方式中,s330可以包括下述操作:

s331、调用所述数据处理程序,在所述源码文件的xml文件区中遍历各个类节点查找与所述目标类对应的目标节点,并将查找到的所述目标节点的类名修改为所述新的类名。

其中,目标类可以是xml文件区中存在的,需要进行相关数据修改的类。

具体的,如果数据变更信息的数据变更类型为将androidmanifest.xml配置文件中的目标类修改为新的类名,可以先对androidmanifest.xml配置文件中的xml文件区进行修改,然后再回溯到字符串区中进行修改。修改xml文件区时,可以调用所述数据处理程序在androidmanifest.xml配置文件的xml文件区中遍历各个类节点查找与目标类对应的目标节点,并将查找到的目标节点的类名直接修改为新的类名。

s332、在所述目标节点中获取与所述目标类的类名匹配的索引值。

同样的,修改类名时也需要在目标结点中获取与目标类的类名匹配的索引值。

s333、判断所述源码文件的字符串区中是否包括所述索引值:若是,则执行s334;否则,执行s335。

s334、将字符串区中与所述搜索值关联的类名修改为所述新的类名。

s335、在所述字符串区中写入所述索引值与所述新的类名之间的对应关系。

最后,需要判断androidmanifest.xml配置文件的字符串区中是否包括与目标类的类名匹配的索引值。如果androidmanifest.xml配置文件的字符串区中包括与目标类的类名匹配的索引值,则将字符串区中与搜索值关联的类名修改为新的类名;否则,在字符串区中写入与目标类的类名匹配的索引值与新的类名之间的对应关系,从而建立索引值与类名直接的联系。

在本公开的一个可选实施例中,在调用所述数据处理程序对所述源码文件处理,形成与所述数据变更信息匹配的新的源码文件,之前,还可以包括:按照第一读取策略,对所述源码文件中的二进制数据进行实时读取,并写入内存中;如果检测到读取至所述源码文件中的编码方式指示字段,则根据所述编码方式指示字段的字段值确定第二读取策略;使用所述第二读取策略继续对所述源码文件中的内容进行实时读取,直至将所述源码文件中的内容全部写入内存中。相应的,调用所述数据处理程序对所述源码文件处理,形成与所述数据变更信息匹配的新的源码文件,具体可以包括:调用所述数据处理程序对内存中与所述源码文件对应的数据内容进行处理,并将处理后的数据内容重新写回至文件,以形成与所述数据变更信息匹配的新的源码文件。

其中,第一读取策略可以是任意类型的读取策略,如一次读取2字节或4字节等。第二读取策略可以是针对源码文件中的编码方式所设定的针对性的读取策略。例如,如果源码文件中的编码方式指示字段指示源码文件采用ascii(americanstandardcodeforinformationinterchange,美国标准信息交换代码)的方式,由于ascii码是7位编码,则可以将第二读取策略设定为每次读取7字节。

在本公开实施例中,可以首先将源码文件写入内存中,并调用数据处理程序对内存中与源码文件对应的数据内容处理。处理完成后,再将内存中存储的处理后的数据内容重新写回至源码文件,从而形成与数据变更信息匹配的新的源码文件。也即,在修改源码文件中的数据时,不在源码文件上直接修改,而是可以将源码文件中的主要数据复制到内存中进行修改。需要说明的是,由于不同的源码文件可以采用不同的编码方式,如果对所有的源码文件均采用同一种数据读取方式,当数据读取方式与编码方式不匹配时,会造成读取内容有误的问题。因此,针对不同编码方式的源码文件,需要采用对应的数据读取策略,以避免数据读取有误的问题。

具体的,首先可以采用第一读取策略实时读取源码文件中的二进制数据并写入内存中。因为在源码文件中都会存在编码方式对应的指示字段,且在编码方式对应的指示字段之前的内容是一些无关紧要的内容,即使数据读取出错也不会对源码文件造成较大的影响。因此,可以采用第一读取策略实时读取数据以检测到编码方式指示字段。当检测到编码方式指示字段后,即可根据编码方式指示字段中的字段值来确定匹配的第二读取策略。使用第二读取策略继续实时读取源码文件中的剩余内容,并将读取到的内容写入到内存中。

在本公开的一个可选实施例中,在调用所述数据处理程序对所述源码文件处理,形成与所述数据变更信息匹配的新的源码文件之后,还可以包括:使用所述新的源码文件替换所述解压缩结果中的源码文件后,对所述解压缩结果进行重新打包,得到与所述数据变更信息匹配的新的数据包。

相应的,可以调用数据处理程序对写入内存中的源码文件的数据内容进行处理,并将处理后的数据内容重新写回至文件,以形成与数据变更信息匹配的新的源码文件。

本公开实施例通过获取与源码文件关联的数据变更信息,根据数据变更信息的数据变更类型:将源码文件中的目标类修改为新的类名,生成与其数据变更信息匹配的数据处理程序;从而调用数据处理程序对源码文件进行处理,形成与数据变更信息匹配的新的源码文件,解决了现有安装包修改打包过程中存在的资源引用和修改打包效率低等问题,实现在不修改其他资源的前提下,提高安装包的修改打包效率,从而加强安装包修改打包的通用性。

需要说明的是,以上各实施例中各技术特征之间的任意排列组合也属于本公开的保护范围。

实施例四

图4是本公开实施例四提供的一种数据处理装置的示意图,如图4所示,所述装置包括:信息获取模块410、程序生成模块420以及文件形成模块430,其中:

信息获取模块410,用于获取与源码文件关联的数据变更信息,其中,所述源码文件为二进制文件;

程序生成模块420,用于根据所述数据变更信息的数据变更类型,生成与所述数据变更信息匹配的数据处理程序;

文件形成模块430,用于调用所述数据处理程序对所述源码文件进行处理,形成与所述数据变更信息匹配的新的源码文件。

本公开实施例通过获取与源码文件关联的数据变更信息,根据数据变更信息的数据变更类型,生成与数据变更信息匹配的数据处理程序;从而调用数据处理程序对源码文件进行处理,形成与数据变更信息匹配的新的源码文件,解决了现有安装包修改打包过程中存在的资源引用和修改打包效率低等问题,实现在不修改其他资源的前提下,提高安装包的修改打包效率,从而加强安装包修改打包的通用性。

可选的,程序生成模块420,具体用于获取用于更改源码文件的数据处理基础代码,其中,在所述数据处理基础代码中包括至少一个与数据变更类型匹配的空白区域;在所述数据处理基础代码中,搜索与所述数据变更信息的数据变更类型对应的空白区域;在所述空白区域中对应填充所述数据变更信息,以生成与所述数据变更信息匹配的数据处理程序。

可选的,所述源码文件包括:基于android系统的androidmanifest.xml配置文件;其中,所述androidmanifest.xml配置文件包括:头部、字符串区、资源标识区以及xml文件区。

可选的,所述数据变更信息的数据变更类型包括:在所述源码文件中注入的新的服务;文件形成模块430,具体用于调用所述数据处理程序,将所述服务的服务名称写入所述源码文件中的字符串区,并记录与所述服务对应的索引值;在所述源码文件的xml文件区中搜索与所述服务关联的根节点;建立与所述服务对应的服务节点,并根据与所述服务对应的索引值以及所述服务的属性信息,更新所述服务节点;在所述xml文件区中将所述服务节点添加为所述根节点的子节点,以形成与所述数据变更信息匹配的新的源码文件。

可选的,所述数据变更信息的数据变更类型包括:将所述源码文件中的目标类修改为新的类名;文件形成模块430,具体用于调用所述数据处理程序,在所述源码文件的xml文件区中遍历各个类节点查找与所述目标类对应的目标节点,并将查找到的所述目标节点的类名修改为所述新的类名;在所述目标节点中获取与所述目标类的类名匹配的索引值;判断所述源码文件的字符串区中是否包括所述索引值:若是,则将字符串区中与所述搜索值关联的类名修改为所述新的类名;否则,在所述字符串区中写入所述索引值与所述新的类名之间的对应关系。

可选的,所述装置还包括:数据写入模块,用于按照第一读取策略,对所述源码文件中的二进制数据进行实时读取,并写入内存中;策略确定模块,用于如果检测到读取至所述源码文件中的编码方式指示字段,则根据所述编码方式指示字段的字段值确定第二读取策略;内容写入模块,用于使用所述第二读取策略继续对所述源码文件中的内容进行实时读取,直至将所述源码文件中的内容全部写入内存中;文件形成模块430,具体用于调用所述数据处理程序对内存中与所述源码文件对应的数据内容进行处理,并将处理后的数据内容重新写回至文件,以形成与所述数据变更信息匹配的新的源码文件。

可选的,所述装置还包括:数据包生成模块,用于对原始源代码进行编译,生成与所述原始源代码对应的原始数据包;解压模块,用于对所述原始数据包进行解压缩处理,得到解压缩结果,其中,所述解压缩结果中包括所述源码文件;数据打包模块,用于使用所述新的源码文件替换所述解压缩结果中的源码文件后,对所述解压缩结果进行重新打包,得到与所述数据变更信息匹配的新的数据包。

上述数据处理装置可执行本公开任意实施例所提供的数据处理方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本公开任意实施例提供的数据处理方法。

实施例五

图5是图示根据本公开实施例的计算机设备的硬件结构示意图。计算机设备可以以各种形式来实施,本公开中的计算机设备可以包括但不限于诸如移动电话、智能电话、笔记本电脑、数字广播接收器、pda(个人数字助理)、pad(平板电脑)、pmp(便携式多媒体播放器)、导航装置、车载终端设备、车载显示终端、车载电子后视镜等等的移动计算机设备以及诸如数字tv、台式计算机等等的固定计算机设备。

如图5所示,计算机设备0可以包括无线通信单元51、a/v(音频/视频)输入单元52、用户输入单元53、感测单元54、输出单元55、存储器56、接口单元57、处理器58和电源单元59等等。图5示出了具有各种组件的计算机设备0,但是应理解的是,并不要求实施所有示出的组件。可以替代地实施更多或更少的组件。

其中,无线通信单元51允许计算机设备0与无线通信系统或网络之间的无线电通信。a/v输入单元52用于接收音频或视频信号。用户输入单元53可以根据用户输入的命令生成键输入数据以控制计算机设备0的各种操作。感测单元54检测计算机设备0的当前状态、计算机设备0的位置、用户对于计算机设备0的触摸输入的有无、计算机设备0的取向、计算机设备0的加速或减速移动和方向等等,并且生成用于控制计算机设备0的操作的命令或信号。接口单元57用作至少一个外部装置与计算机设备0连接可以通过的接口。输出单元55被构造为以视觉、音频和/或触觉方式提供输出信号。存储器56可以存储由处理器58执行的处理和控制操作的软件程序等等,或者可以暂时地存储己经输出或将要输出的数据。存储器56可以包括至少一种类型的存储介质。而且,计算机设备0可以与通过网络连接执行存储器56的存储功能的网络存储装置协作。处理器58通常控制计算机设备0的总体操作。另外,处理器58可以包括用于再现或回放多媒体数据的多媒体模块。处理器58可以执行模式识别处理,以将在触摸屏上执行的手写输入或者图片绘制输入识别为字符或图像。电源单元59在处理器58的控制下接收外部电力或内部电力并且提供操作各元件和组件所需的适当的电力。

处理器58通过运行存储在存储器56中的程序,从而执行各种功能应用以及数据处理,例如实现本公开实施例所提供的一种数据处理方法,包括:

获取与源码文件关联的数据变更信息,其中,所述源码文件为二进制文件;

根据所述数据变更信息的数据变更类型,生成与所述数据变更信息匹配的数据处理程序;

调用所述数据处理程序对所述源码文件进行处理,形成与所述数据变更信息匹配的新的源码文件。

实施例六

本公开实施例六还提供一种存储计算机程序的计算机存储介质,所述计算机程序在由计算机处理器执行时用于执行本公开上述实施例任一所述的数据处理方法:获取与源码文件关联的数据变更信息,其中,所述源码文件为二进制文件;根据所述数据变更信息的数据变更类型,生成与所述数据变更信息匹配的数据处理程序;调用所述数据处理程序对所述源码文件进行处理,形成与所述数据变更信息匹配的新的源码文件。

本公开实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(readonlymemory,rom)、可擦式可编程只读存储器((erasableprogrammablereadonlymemory,eprom)或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、射频(radiofrequency,rf)等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本公开操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言——诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

注意,上述仅为本公开的较佳实施例及所运用技术原理。本领域技术人员会理解,本公开不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本公开的保护范围。因此,虽然通过以上实施例对本公开进行了较为详细的说明,但是本公开不仅仅限于以上实施例,在不脱离本公开构思的情况下,还可以包括更多其他等效实施例,而本公开的范围由所附的权利要求范围决定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1