一种代码操作方法及装置与流程

文档序号:15930931发布日期:2018-11-14 01:37阅读:203来源:国知局

本申请涉及软件开发技术领域,特别涉及一种代码操作方法及装置。

背景技术

随着社会的发展,用户对各种功能应用的需求日益增长,应用的代码开发也随之千变万化。例如,在基于java实现的应用代码中,包含多个java类文件,用以实现该应用代码的功能服务。在应用代码开发完成之后,如果有需求需要在每一个java类中添加一行代码,比如用于打印日志,或者需要加密某一个类中的某些字段等等。

现有技术中通常需要开发人员手动开发完成的应用代码中的合适位置进行代码操作,如在每个java类中添加一行代码,或者加密某个类中的某些字段等等。

由此,在源代码数量较大时,开发人员手动进行代码操作就容易造成代码操作效率较低的情况。



技术实现要素:

有鉴于此,本申请的目的在于提供一种代码操作方法及装置,用以解决现有技术中代码操作效率较低的技术问题。

本申请提供了一种代码操作方法,包括:

判断待处理的应用安装包中的目标代码文件是否满足预设的操作规则,得到判断结果;

基于所述判断结果,利用预设的操作转换接口对所述目标代码文件执行相应的操作。

上述方法,优选地,基于所述判断结果,利用预设的操作转换接口对所述目标代码文件执行相应的操作,包括:

如果所述判断结果表明所述目标代码文件满足所述操作规则,利用预设的操作转换接口对所述目标代码文件执行第一操作;

如果所述判断结果表明所述目标代码文件不满足所述操作规则,执行第二操作。

上述方法,优选地,所述操作规则包括:代码匹配规则和代码操作规则,其中:

所述代码匹配规则,用于判断所述目标代码文件是否需要执行相应的操作;

所述代码操作规则,用于表明对所述目标代码文件执行的操作内容。

上述方法,优选地,所述代码匹配规则包括:文件名称与预设的目标名称至少近似一致、文件中有成员变量名与预设的目标成员变量名至少近似一致、文件中有构造方法名与预设的目标构造方法名至少近似一致以及文件中有成员方法名与预设的目标成员方法名至少近似一致中的一种或多种子规则。

上述方法,优选地,所述代码操作规则至少包括:删除操作和增加操作中的一种或多种。

上述方法,优选地,判断所述目标代码文件是否需要执行相应的操作;

依次判断所述目标代码文件是否满足所述代码匹配规则中的每个子规则。

上述方法,优选地,利用预设的操作转换接口对所述目标代码文件执行相应的操作,包括:

确定所述目标代码文件中与所述代码匹配规则相对应的代码段;

利用预设的操作转换接口,对确定的代码段执行与所述代码操作规则相对应的操作。

上述方法,优选地,判断待处理的应用安装包中的目标代码文件是否满足预设的操作规则,得到判断结果,包括:

遍历得到待处理的应用安装包中的至少一个目标代码文件;

分别针对每个所述目标代码文件,判断其是否满足预设的操作规则,得到每个所述目标代码文件的判断结果。

本申请还提供了一种代码操作装置,包括:

文件判断单元,用于判断待处理的应用安装包中的目标代码文件是否满足预设的操作规则,得到判断结果;

操作执行单元,用于基于所述判断结果,利用预设的操作转换接口对所述目标代码文件执行相应的操作。

上述装置,优选地,所述操作规则包括:代码匹配规则和代码操作规则,其中:

所述操作执行单元具体用于:确定所述目标代码文件中与所述代码匹配规则相对应的代码段,利用预设的操作转换接口,对确定的代码段执行与所述代码操作规则相对应的操作。

上述装置,优选地,所述文件判断单元具体用于:遍历得到待处理的应用安装包中的至少一个目标代码文件;分别针对每个所述目标代码文件,判断其是否满足预设的操作规则,得到每个所述目标代码文件的判断结果。

本申请还提供了一种存储介质,所述存储介质包括存储的程序,其中,所述程序执行上述任意一项所述的代码操作方法。

本申请还提供了一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行上述任意一项所述的代码操作方法。

本申请还提供了一种电子设备,包括:

存储器,用于存储应用程序及应用程序运行所产生的数据;

处理器,用于执行所述应用程序,以实现功能:判断待处理的应用安装包中的目标代码文件是否满足预设的操作规则,得到判断结果;基于所述判断结果,利用预设的操作转换接口对所述目标代码文件执行相应的操作。

由以上方案可知,本申请提供的一种代码操作方法及装置,通过在应用安装包中匹配目标代码文件和预先设置的操作规则,从而利用预设的操作转换接口对匹配的目标代码文件执行相应的操作。本申请中整个过程对开发透明,并且无需手动进行代码操作,而是自动进行代码文件匹配及操作,从而节省代码操作的时间,由此提高代码操作效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例一提供的一种代码操作方法的实现流程图;

图2为本申请实施例一的部分流程图;

图3为本申请实施例一的另一部分流程图;

图4为本申请实施例二提供的一种代码操作装置的结构示意图;

图5为本申请实施例三提供的一种电子设备的结构示意图;

图6为本申请实施例三的应用示例图;

图7示出了本申请实施例提供的一种存储介质的结构示意图;

图8示出了本申请实施例提供的一种处理器的结构示意图。

具体实施方式

在目前的应用开发中,应用代码开发完成之后,可能需要进行代码操作,如在一个应用的每个java类中的构造方法中添加一行日志。而从java源码的角度操作,就需要手动在每个java类中的构造方法中添加这行代码。

当应用的源码量比较大时,会有大量重复性工作,这无疑是一种成本高、效率低的做法。而且当需求变更想要移除这行日志时,那么需要重新手动移除每个java类中的这一行代码。

为解决以上效率低的技术问题,本申请提出以下方案:

编译androidapk的过程,包括把.java(android应用的源代码文件)文件编译成.class文件再编译成.dex文件的步骤,而其中在这个过程中开放有transformapi,该api允许插入一些逻辑来操作.class文件,因此,在本申请中可以在这个过程即.class文件编译成.dex文件的过程中,使用可以操作java字节码的第三方库插入一些自定义的逻辑来修改.class文件。

具体的,这些操作java字节码的第三方库可以操作的目标有类字段、类构造方法、类方法,本申请中通过提供规则给开发人员根据需求进行预先配置,从而在遍历所有.class文件的过程中,一旦有匹配上的目标类字段、类方法、类构造方法等,就根据配置的规则对.class文件进行相应的操作。

其中,操作java字节码的第三方库可以使用其他同样能够操作java字节码的第三方库代替。

而当需要实现其他的需求时,只需配置指定规则即可。该过程完全自动化,而且对代码无侵入性。除了能够操作java类的构造方法外,还可以操作java类的字段、方法,对其进行增、删、改、替换的操作。比如说操作字段,就可以加密静态字符串字段,以保证代码安全。

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

参考图1,为本申请实施例一提供的一种代码操作方法的实现流程图,适用于能够对代码进行操作的设备中,如具有应用开发功能的计算机中。

在本实施例中,该方法可以包括以下步骤:

步骤101:判断待处理的应用安装包中的目标代码文件是否满足预设的操作规则,得到判断结果。

其中,待处理的应用安装包可以为android应用安装包,能够实现相应的功能,如游戏、聊天或支付等。

需要说明的是,待处理的应用安装包可以为:处于编译过程中的应用安装包,应用安装包的编译过程可以包括有:将安装包中的.java(java源码格式)文件编译成.class(java字节码格式)文件的过程,和将.class文件编译成.dex(虚拟机执行格式)文件的过程。

其中,本实施例中的目标代码文件可以为应用安装包的编译过程中的.class文件,即java字节码文件,java字节码文件中可以包含有多种结构对象,如成员变量对象、成员方法对象及构造方法对象等,这些对象被执行时能够实现相应的对象功能。

在一种实现方式中,操作规则可以为开发人员根据需求所预先设置的规则,用以表明目标代码文件是否需要进行操作。

其中,应用安装包中的目标代码文件可以为预设类型的代码文件,如.class文件。另外,目标代码文件可以为一个或者多个,本实施例中会分别对这些目标代码文件是否满足操作规则进行判断,从而得到判断结果。

步骤102:基于判断结果,利用预设的操作转换接口对目标代码文件执行相应的操作。

其中,操作转换接口可以为运行插入逻辑代码来操作相应类型代码文件的接口,如transformapi接口允许插入逻辑代码来操作.class文件。

例如,如果判断结果表明目标代码文件满足操作规则,则利用transformapi对目标代码文件执行第一操作,如果判断结果表明目标代码文件不满足操作规则,则执行第二操作,其中,第二操作与第一操作不同,第二操作可以为空操作。也就是说,如果判断结果表明目标代码文件满足操作规则,则对目标代码文件执行第一操作,否则可以直接跳过,不再对目标代码文件执行任何操作。

另外,第二操作还可以为区别于第一操作的其他操作类型,如第一操作可以为删除操作等,相应的第二操作可以为区别于第一操作的增加操作等等。第一操作与第二操作相关联,但并不相同。

由以上方案可知,本申请实施例一提供的一种代码操作方法,通过在应用安装包中匹配目标代码文件和预先设置的操作规则,从而利用预设的操作转换接口对匹配的目标代码文件执行相应的操作。本实施例中整个过程对开发透明,并且无需手动进行代码操作,而是自动进行代码文件匹配及操作,从而节省代码操作的时间,由此提高代码操作效率。

在一种实现方式中,预设的操作规则中可以包括两种规则:代码匹配规则和代码操作规则,其中:

代码匹配规则可以作为判断依据,用于判断目标代码文件是否需要执行相应的操作。例如,对目标代码文件是否满足代码匹配规则进行判断,得到判断结果,进而基于判断结果,即在目标代码文件满足代码匹配规则时,利用操作转换接口对目标代码文件执行相应的操作。其中,代码匹配规则中可以包括有一个或多个子规则,本实施例中在基于代码匹配规则判断目标代码文件是否需要执行相应的操作时,具体可以通过依次判断目标代码文件是否代码匹配规则中的每个子规则来实现,即为:分别针对代码匹配规则中的每个子规则,判断目标代码文件是否满足这些子规则,进而判断出目标代码文件是否满足操作规则即目标代码文件是否需要执行相应的操作。

而代码操作规则是在目标代码文件满足代码匹配规则时,可以作为对目标代码文件执行操作的依据,具体用于表明对目标代码文件执行的操作内容或类型,如在目标代码文件满足代码匹配规则时,对目标代码文件执行与代码操作规则对应的操作,如增加操作、删除操作或修改操作等等。

具体的,代码匹配规则可以包括有:文件名称与预设的目标名称至少近似一致、文件中有成员变量名与预设的目标成员变量名至少近似一致、文件中有构造方法名与预设的目标构造方法名至少近似一致以及文件中有成员方法名与预设的目标成员方法名至少近似一致中的一种或多种。相应的,目标代码文件需要执行相应的操作是指:目标代码文件满足代码匹配规则中的子规则。例如,目标代码文件满足代码匹配规则或目标代码文件需要执行相应的操作可以为:目标代码文件的文件名称与预设的目标名称相同;或者,目标代码文件中有成员变量名与预设的目标成员变量名相同且目标代码文件中有构造方法名与预设的目标构造方法名近似一致;或者目标代码文件中有成员方法名与预设的目标成员方法名相同、且目标代码文件中有代码段与预设的目标代码段相一致、且目标代码文件的文件类型为预设的目标类型如.class文件;等等。

而代码操作规则至少包括:删除操作、增加操作和修改操作中的一种或多种。例如,在目标代码文件中有代码段与预设的目标代码段相一致时,对该代码段执行与代码操作规则中的修改操作相一致的操作,即对代码段进行修改操作处理;或者,在目标代码文件中有成员变量名与预设的目标成员变量名相同,那么,对该成员变量名对应的成员变量执行与代码操作规则中的删除操作相一致的操作,即对成员变量进行删除操作。

在一种实现方式中,步骤102具体可以通过以下步骤实现,如图2中所示:

步骤121:确定目标代码文件中与代码匹配规则相对应的代码段。

其中,代码段可以为目标代码文件中与代码匹配规则相对应的成员变量对象代码段、成员方法对象代码段或构造方法对象代码段等,例如,确定目标代码文件中超链接字段对象的代码段等。

步骤122:利用预设的操作转换接口,对确定的代码段执行与代码操作规则相对应的操作。

例如,利用transformapi对确定的与代码匹配规则对应的代码段执行与代码操作规则相对应的操作,如对代码段进行删除操作或修改操作。

在一种实现方式中,步骤101具体可以通过以下步骤实现,如图3中所示:

步骤111:遍历得到待处理的应用安装包中的至少一个目标代码文件。

步骤112:分别针对每个所述目标代码文件,判断其是否满足预设的操作规则,得到每个所述目标代码文件的判断结果。

也就是说,本实施例中通过遍历应用安装包中的目标代码文件,以依次对每个目标代码文件进行规则判断及操作执行处理,直到应用安装包中的目标代码文件均被遍历及处理。

参考图4,为本申请提供的一种代码操作装置的结构示意图,该装置可以设置在能够代码进行操作的设备中,如具有应用开发功能的计算机中。

在本实施例中,该装置可以包括以下结构:

文件判断单元401,用于判断待处理的应用安装包中的目标代码文件是否满足预设的操作规则,得到判断结果。

其中,待处理的应用安装包可以为android应用安装包,能够实现相应的功能,如游戏、聊天或支付等。

需要说明的是,待处理的应用安装包可以为:处于编译过程中的应用安装包,应用安装包的编译过程可以包括有:将安装包中的.java(java源码格式)文件编译成.class(java字节码格式)文件的过程,和将.class文件编译成.dex(虚拟机执行格式)文件的过程。

其中,本实施例中的目标代码文件可以为应用安装包的编译过程中的文件,如.class文件编译成.dex文件过程中的文件,目标代码文件中可以包含有多种结构对象,如成员变量对象、成员方法对象及构造方法对象等,这些对象被执行时能够实现相应的对象功能。

在一种实现方式中,操作规则可以为开发人员根据需求所预先设置的规则,用以表明目标代码文件是否需要进行操作。

其中,应用安装包中的目标代码文件可以为预设类型的代码文件,如.class文件即java字节码文件。另外,目标代码文件可以为一个或者多个,本实施例中会分别对这些目标代码文件是否满足操作规则进行判断,从而得到判断结果。

操作执行单元402,用于基于所述判断结果,利用预设的操作转换接口对所述目标代码文件执行相应的操作。

其中,操作转换接口可以为运行插入逻辑代码来操作相应类型代码文件的接口,如transformapi接口允许插入逻辑代码来操作.class文件。

例如,如果判断结果表明目标代码文件满足操作规则,则利用transformapi对目标代码文件执行第一操作,如果判断结果表明目标代码文件不满足操作规则,则执行第二操作,其中,第二操作与第一操作不同,第二操作可以为空操作。也就是说,如果判断结果表明目标代码文件满足操作规则,则对目标代码文件执行第一操作,否则可以直接跳过,不再对目标代码文件执行任何操作。

另外,第二操作还可以为区别于第一操作的其他操作类型,如第一操作可以为删除操作操作等,相应的第二操作可以为增加操作等等。第一操作与第二操作相关联,但并不相同。

由以上方案可知,本申请实施例二提供的一种代码操作装置,通过在应用安装包中匹配目标代码文件和预先设置的操作规则,从而利用预设的操作转换接口对匹配的目标代码文件执行相应的操作。本实施例中整个过程对开发透明,并且无需手动进行代码操作,而是自动进行代码文件匹配及操作,从而节省代码操作的时间,由此提高代码操作效率。

在一种实现方式中,预设的操作规则中可以包括两种规则:代码匹配规则和代码操作规则,其中:

代码匹配规则可以作为判断依据,用于判断目标代码文件是否需要执行相应的操作。例如,对目标代码文件是否满足代码匹配规则进行判断,得到判断结果,进而基于判断结果,即在目标代码文件满足代码匹配规则时,利用操作转换接口对目标代码文件执行相应的操作。其中,代码匹配规则中可以包括有一个或多个子规则,本实施例中在基于代码匹配规则判断目标代码文件是否需要执行相应的操作时,具体可以通过依次判断目标代码文件是否代码匹配规则中的每个子规则来实现,即为:分别针对代码匹配规则中的每个子规则,判断目标代码文件是否满足这些子规则,进而判断出目标代码文件是否满足操作规则即目标代码文件是否需要执行相应的操作。

而代码操作规则是在目标代码文件满足代码匹配规则时,可以作为对目标代码文件执行操作的依据,具体用于表明对目标代码文件执行的操作内容或类型,如在目标代码文件满足代码匹配规则时,对目标代码文件执行与代码操作规则对应的操作,如增加操作、删除操作或修改操作等等。

具体的,代码匹配规则可以包括有:文件名称与预设的目标名称至少近似一致、文件中有成员变量名与预设的目标成员变量名至少近似一致、文件中有构造方法名与预设的目标构造方法名至少近似一致以及文件中有成员方法名与预设的目标成员方法名至少近似一致中的一种或多种。相应的,目标代码文件需要执行相应的操作是指:目标代码文件满足代码匹配规则中的子规则。例如,目标代码文件满足代码匹配规则或目标代码文件需要执行相应的操作可以为:目标代码文件的文件名称与预设的目标名称相同;或者,目标代码文件中有成员变量名与预设的目标成员变量名相同且目标代码文件中有构造方法名与预设的目标构造方法名近似一致;或者目标代码文件中有成员方法名与预设的目标成员方法名相同、且目标代码文件中有代码段与预设的目标代码段相一致、且目标代码文件的文件类型为预设的目标类型如.class文件;等等。

而代码操作规则至少包括:删除操作、增加操作和修改操作中的一种或多种。例如,在目标代码文件中有代码段与预设的目标代码段相一致时,对该代码段执行与代码操作规则中的修改操作相一致的操作,即对代码段进行修改操作处理;或者,在目标代码文件中有成员变量名与预设的目标成员变量名相同,那么,对该成员变量名对应的成员变量执行与代码操作规则中的删除操作相一致的操作,即对成员变量进行删除操作。

相应的,所述操作执行单元402具体用于:确定所述目标代码文件中与所述代码匹配规则相对应的代码段,利用预设的操作转换接口,对确定的代码段执行与所述代码操作规则相对应的操作。

其中,代码段可以为目标代码文件中与代码匹配规则相对应的成员变量对象代码段、成员方法对象代码段或构造方法对象代码段等,例如,确定目标代码文件中超链接字段对象的代码段等,再利用transformapi对确定的与代码匹配规则对应的代码段执行与代码操作规则相对应的操作,如对代码段进行删除操作或修改操作。

在一种实现方式中,所述文件判断单元401具体可以用于:遍历得到待处理的应用安装包中的至少一个目标代码文件;分别针对每个所述目标代码文件,判断其是否满足预设的操作规则,得到每个所述目标代码文件的判断结果。

也就是说,本实施例中文件判断单元401可以通过遍历应用安装包中的目标代码文件,以依次对每个目标代码文件进行规则判断及操作执行处理,直到应用安装包中的目标代码文件均被遍历及处理。

参考图5,为本申请实施例三提供的一种电子设备的结构示意图,该电子设备可以为部署有应用开发环境具有应用开发功能的服务器等设备。

在本实施例中,该电子设备可以包括有:

存储器501,用于存储应用程序及应用程序运行所产生的数据。

其中,存储器501可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram),存储器包括至少一个存储芯片。

处理器502,用于执行所述应用程序,以实现功能:判断待处理的应用安装包中的目标代码文件是否满足预设的操作规则,得到判断结果;基于所述判断结果,利用预设的操作转换接口对所述目标代码文件执行相应的操作。

具体的,处理器502中包含内核,由内核去存储器中调取相应的程序单元,内核可以设置一个或多个,通过调整内核参数来判断待处理的应用安装包中的目标代码文件是否满足预设的操作规则,得到判断结果;基于所述判断结果,利用预设的操作转换接口对所述目标代码文件执行相应的操作。

由以上方案可知,本申请实施例三提供的一种电子设备,通过在应用安装包中匹配目标代码文件和预先设置的操作规则,从而利用预设的操作转换接口对匹配的目标代码文件执行相应的操作。本实施例中整个过程对开发透明,并且无需手动进行代码操作,而是自动进行代码文件匹配及操作,从而节省代码操作的时间,由此提高代码操作效率。

以下对本实施例中的服务器在进行android应用安装包apk(androidpackage)编译过程中的.class文件操作为例进行说明:

如图6中所示,用户即开发人员预先配置规则,如代码匹配规则及代码操作规则等,之后,开始遍历所有的.class文件,如下:

取出一个.class文件,并取出一条规则,判断.class文件是否与规则成功匹配,如果成功匹配,那么执行规则对应的操作,如果不成功匹配则返回取下一个.class文件,直到遍历每个.class文件。

由此,本实施例中通过制定规则自动修改匹配的java字节码文件,从而达到大批量自动化进行java字节码文件的操作处理,由此提高代码操作效率。

本发明实施例提供了一种存储介质,如图7中所示,该存储介质处于设备上,如图5所示的电子设备上,而该存储介质上存储有程序,该程序运行时控制该存储介质所在的设备执行图1至图3中所描述或展示的代码操作方法。

本发明实施例提供了一种处理器,如图8中所示,该处理器用于运行程序,该程序可以为图7所示的存储介质中存储的程序,由此,处理器通过运行程序执行图1至图3中所描述或展示的代码操作方法。

本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:判断待处理的应用安装包中的目标代码文件是否满足预设的操作规则,得到判断结果;基于所述判断结果,利用预设的操作转换接口对所述目标代码文件执行相应的操作。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本发明所提供的一种一种代码操作方法、装置及电子设备进行了详细介绍,对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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