[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN110765008A - 一种数据处理方法及装置 - Google Patents

一种数据处理方法及装置 Download PDF

Info

Publication number
CN110765008A
CN110765008A CN201910952784.0A CN201910952784A CN110765008A CN 110765008 A CN110765008 A CN 110765008A CN 201910952784 A CN201910952784 A CN 201910952784A CN 110765008 A CN110765008 A CN 110765008A
Authority
CN
China
Prior art keywords
data packet
return
preset
application program
annotation
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.)
Granted
Application number
CN201910952784.0A
Other languages
English (en)
Other versions
CN110765008B (zh
Inventor
梁少泽
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wangsu Science and Technology Co Ltd
Original Assignee
Wangsu Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wangsu Science and Technology Co Ltd filed Critical Wangsu Science and Technology Co Ltd
Priority to CN201910952784.0A priority Critical patent/CN110765008B/zh
Publication of CN110765008A publication Critical patent/CN110765008A/zh
Application granted granted Critical
Publication of CN110765008B publication Critical patent/CN110765008B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例公开了一种数据处理方法及装置,通过在开发应用程序数据包时在调试方法上标注预设注解,并在将应用程序数据包应用在线上环境之前,将标注有预设注解的方法删除,可以使得应用在线上环境的应用程序数据包中只包含应用方法而不包含调试方法,实现了真正意义的开发环境与线上环境的隔离,在保证调试方法的安全性的基础上,可以减少应用程序数据包所占用用户设备的数据量大小,并减小运行时所占用的用户设备的内存,提高用户的体验。

Description

一种数据处理方法及装置
技术领域
本发明涉及数据处理领域,尤其涉及一种数据处理方法及装置。
背景技术
Java语言是一种常用的APP开发语言,使用Java语言开发的APP数据包中包括应用方法和调试方法,应用方法用于执行APP的线上功能,调试方法用于对应用方法进行调试。通常情况下,调试方法中可以包含开发人员在调试应用方法时所使用的模拟数据、模拟方法以及日志信息,而这些模拟数据、模拟方法和日志信息中可能会具有较多的内部隐私数据或内部程序,因此,在将APP数据包应用到线上环境之前,应该尽可能地隐藏其中的调试方法,否则不仅会影响用户的使用体验,还无法保证调试方法中隐私数据的安全。
在一种现有的实现方式中,开发人员在开发APP数据包时,可以在每个调试方法中设置判断语句,判断语句的判断变量由全局变量来标识,若判断变量为第一变量,则不执行调试方法,若判断变量为第二变量,则执行调试方法。相应地,当APP数据包编译完成后,若该APP数据包应用于线上环境,则开发人员可以设置全局变量为第一变量,若该APP数据包应用于开发环境,则开发人员可以设置全局变量为第二变量;如此,在将APP数据包投放到线上环境之后,由于全局变量默认为第一变量,因此使用APP数据包时不会执行其中的调试方法。由此可知,采用该种方式,投放到线上环境的APP数据包中仍然同时包含应用方法和调试方法,只是在使用APP数据包时不执行调试方法,因此该种方法并未在真正意义上隔离开发环境与线上环境,其投放到线上环境的APP数据包的数据量较大,会占用用户设备较多的内存,从而导致用户的体验不好,且用户可以通过逆向修改的方式修改APP数据包中的调试方法,也可以通过修改判断变量更改APP数据包的执行过程,而这些修改都会影响APP数据包的正常使用,APP数据包的安全性得不到保障。
综上,目前亟需一种数据处理方法,用以解决现有技术采用全局变量和判断语句隔离开发环境与线上环境所导致的安全性低、用户的体验不好的技术问题。
发明内容
本发明实施例提供一种数据处理方法及装置,用以解决现有技术采用全局变量和判断语句隔离开发环境与线上环境所导致的安全性低、用户的体验不好的技术问题。
第一方面,本发明实施例提供的一种数据处理方法,包括:
确定应用程序数据包的应用环境,所述应用程序数据包由Java开发语言编写,若确定所述应用程序数据包应用于线上环境,则从所述应用程序数据包中确定出标注有预设注解的方法,并将标注有预设注解的方法从所述应用程序数据包中删除;所述预设注解为用户在开发所述应用程序数据包时标记在所述应用程序数据包中的调试方法上的注解。
在上述设计中,通过在开发应用程序数据包时在调试方法上标注预设注解,并在将应用程序数据包应用在线上环境之前,将标注有预设注解的方法删除,可以使得应用在线上环境的应用程序数据包中只包含应用方法而不包含调试方法,实现了真正意义的开发环境与线上环境的隔离,在保证调试方法的安全性的基础上,可以减少应用程序数据包所占用用户设备的数据量大小,并可以减小运行时所占用的用户设备的内存,提高用户的体验。
在一种可能的设计中,所述确定所述应用程序数据包的应用环境,包括:获取用户输入的环境参数,若所述环境参数包含Release字段,则确定所述应用程序数据包应用于所述线上环境,若所述环境参数包含Debug字段,则确定所述应用程序数据包应用于开发环境。
在上述设计中,应用程序数据包的应用场景可以由用户通过接口进行设置,如此,可以基于用户设置的应用场景来确定是否删除应用程序数据包中的调试方法,该种设计更加满足实际需要,用户的体验较好。
在一种可能的设计中,所述从所述应用程序数据包中确定出标注有预设注解的方法,包括:针对所述应用程序数据包中的任一个类,获取所述类中每个方法的注解信息,若所述类中存在某一方法的注解信息包括所述预设注解,则确定所述方法为标注有所述预设注解的方法。
在上述设计中,通过遍历应用程序数据包中的每个类以及每个类中的每个方法,可以准确获取应用程序数据包中每个方法的注解信息,并能够准确地确定出标注有预设注解的方法,以便于应用程度数据包应用至线上环境之前将其中的调试方法全部删除,从而可以提高数据处理的准确性。
在一种可能的设计中,所述将标注有预设注解的方法从所述应用程序数据包中删除,包括:根据所述标注有预设注解的方法的定义字节码,确定所述标注有预设注解的方法的返回值类型,若所述标注有预设注解的方法不存在返回值类型,则删除所述标注有预设注解的方法的内容字节码;若所述标注有预设注解的方法的返回值类型为数字类型,则使用第一返回字节码替换所述标注有预设注解的方法的内容字节码,所述第一返回字节码用于指示返回预设数值;若所述标注有预设注解的方法的返回值类型为布尔类型,则使用第二返回字节码替换所述标注有预设注解的方法的内容字节码,所述第二返回字节码用于指示返回预设布尔值;若所述标注有预设注解的方法的返回值类型为字符类型,或者,所述标注有预设注解的方法的返回值类型为除数字类型、字符类型和布尔类型以外的类型,则使用第三返回字节码替换所述标注有预设注解的方法的内容字节码,所述第三返回字节码用于指示返回预设字符。
在上述设计中,仅删除调试方法的内容字节码而不删除其定义字节码,并为删除内容字节码的调试方法设置返回值,可以使得应用方法能够顺利引用到调试方法,避免应用程序数据包在执行时发生引用卡顿的情况,保证应用程序数据包在线上环境的顺序运行。
第二方面,本发明实施例提供的一种数据处理装置,所述装置包括:
确定模块,用于确定应用程序数据包的应用环境;所述应用程序数据包由Java开发语言编写;以及,若确定所述应用程序数据包应用于线上环境,则从所述应用程序数据包中确定出标注有预设注解的方法;所述预设注解为用户在开发所述应用程序数据包时标记在所述应用程序数据包中的调试方法上的注解;
处理模块,用于将标注有预设注解的方法从所述应用程序数据包中删除。
在一种可能的设计中,所述确定模块具体用于:获取用户输入的环境参数,若所述环境参数包含Release字段,则确定所述应用程序数据包应用于所述线上环境,若所述环境参数包含Debug字段,则确定所述应用程序数据包应用于开发环境。
在一种可能的设计中,所述确定模块具体用于:针对所述应用程序数据包中的任一个类,获取所述类中每个方法的注解信息,若所述类中存在某一方法的注解信息包括所述预设注解,则确定所述方法为标注有所述预设注解的方法。
在一种可能的设计中,所述处理模块具体用于:根据所述标注有预设注解的方法的定义字节码,确定所述标注有预设注解的方法的返回值类型,若所述标注有预设注解的方法不存在返回值类型,则删除所述标注有预设注解的方法的内容字节码;若所述标注有预设注解的方法的返回值类型为数字类型,则使用第一返回字节码替换所述标注有预设注解的方法的内容字节码,所述第一返回字节码用于指示返回预设数值;若所述标注有预设注解的方法的返回值类型为布尔类型,则使用第二返回字节码替换所述标注有预设注解的方法的内容字节码,所述第二返回字节码用于指示返回预设布尔值;若所述标注有预设注解的方法的返回值类型为字符类型,或者,所述标注有预设注解的方法的返回值类型为除数字类型、字符类型和布尔类型以外的类型,则使用第三返回字节码替换所述标注有预设注解的方法的内容字节码,所述第三返回字节码用于指示返回预设字符。
第三方面,本发明实施例提供的一种计算设备,包括至少一个处理单元以及至少一个存储单元,其中,所述存储单元存储有计算机程序,当所述程序被所述处理单元执行时,使得所述处理单元执行上述第一方面任意所述的数据处理方法。
第四方面,本发明实施例提供的一种计算机可读存储介质,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行上述第一方面任意所述的数据处理方法。
本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种可能的应用场景示意图;
图2为本发明实施例提供的一种数据处理方法对应的流程示意图;
图3为本发明实施例提供的一种数据处理方法的应用流程示意图;
图4为本发明实施例提供的一种数据处理装置的结构示意图;
图5为本发明实施例提供的一种计算设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种可能的应用场景示意图,如图1所示,开发应用程序的过程可以依次经过开发阶段、编译阶段和应用阶段,开发阶段和编译阶段在开发环境中执行,而应用阶段在应用环境中执行。具体实施中,在开发阶段,开发人员可以使用Java字节码编写应用程序数据包,应用程序数据包中包括应用方法和调试方法,应用方法包括实现应用程序的各个功能的功能算法,而调试方法包括调试任意应用方法时所编写的调试算法、使用的调试数据以及得到的调试结果(比如所打印的日志信息);进一步地,本发明实施例预先设置了数据处理装置,在编译阶段,数据处理装置可以根据应用场景对开发阶段生成的应用程序数据包进行数据处理,比如,若确定应用程序数据包仍应用于开发环境(比如用于版本升级、故障修复等),则可以直接将应用程序数据包重新投放到开发阶段,若确定应用程序数据包用于应用环境(比如用于安装在用户设备上),则可以先对应用程序数据包进行数据处理,然后将处理后的应用程序数据包投放到应用阶段。
本发明实施例中,数据处理装置可以为硬件设备,比如数据处理服务器,或者也可以为软件设备,比如插件、框架、依赖库等;相应地,数据处理装置可以设置在开发环境的内部,或者也可以设置在开发环境的外部,具体不作限定。
需要说明的是,本发明实施例中,调试方法可以是指不希望发布到线上环境的任意方法,而不限定为以上所述的调试算法、调试数据以及调试结果,调试方法可以由本领域技术人员自行设置,不作限定。
基于图1所示意的应用场景,图2为本发明实施例提供的一种数据处理方法对应的流程示意图,该方法应用于数据处理装置,该方法包括:
步骤201,确定应用程序数据包的应用环境。
本发明实施例中,开发人员在开发阶段编写应用程序数据包时,每编写一个调试方法,即可在该调试方法上标注预设注解;其中,预设注解的格式以及预设注解标注的位置可以由本领域技术人员根据经验进行设置,具体不作限定。举例来说,若预设注解为@Debug,调试方法为testMethod,则可以按照如下方式标注预设注解:
Figure BDA0002226296680000071
如此,当开发阶段的应用程序数据包编写完成后,应用程序数据包中的每个调试方法均可以标注有预设注解,应用程序的开发过程从开发阶段进入到调试阶段。
在一种可能的实现方式中,调试阶段启动时可以自动触发数据处理装置,如此,数据处理装置检测到进入调试阶段后,可以先提示开发人员输入环境参数;其中,提示的方式可以有多种,比如可以通过命令行提示,或者也可以通过文本框提示,或者还可以通过语音提示,具体不作限定。进一步地,数据处理装置可以通过当前编译任务的接口获取用户输入的环境参数,若环境参数包含Release字段,例如transformClassesWithMUFPluginForRelease,则可以确定应用程序数据包应用于线上环境,若环境参数包含Debug字段,例如transformClassesWithMUFPluginForDebug,则可以确定应用程序数据包应用于开发环境。
在上述实现方式中,应用程序数据包的应用场景可以由用户通过接口进行设置,如此,可以基于用户设置的应用场景来确定是否删除应用程序数据包中的调试方法,该种设计更加满足实际需要,用户的体验较好。
在一个示例中,数据处理装置获取用户输入的环境参数后,可以仅分析环境参数的末端字段,若末端字段包含Release,则可以确定应用程序数据包应用于线上环境,若末端字段包含Debug,则可以确定应用程序数据包应用于开发环境。在该示例中,通过分析末端字段,可以降低数据处理装置的数据处理量,提高数据处理效率。
步骤202,若确定应用程序数据包应用于线上环境,则从应用程序数据包中确定出标注有预设注解的方法。
本发明实施例中,数据处理装置可以为基于自动存储管理(Automatic StorageManagement,ASM)技术开发的Gradle插件,由于ASM技术为Java字节码的操纵框架,因此数据处理装置可以读取Java字节码中的类,并可以改变类在Java字节码中的行为,以及分析类的Java字节码信息,还可以生成自定义的新类。
基于此,在一种可能的实现方式中,若确定应用程序数据包应用于线上环境,则数据处理装置可以遍历应用程序数据包中的每个类,并获取每个类中每个方法的注解信息,若某一个类中存在某一方法(比如第一方法)的注解信息包括预设注解,则可以确定第一方法为一个标注有预设注解的方法。其中,每个方法的注解信息可以以数组的形式表示,或者也可以以其它形式表示,具体不作限定。
在该种实现方式中,通过遍历应用程序数据包中的每个类以及每个类中的每个方法,可以准确获取应用程序数据包中每个方法的注解信息,并能够准确地确定出标注有预设注解的方法,以便于应用程度数据包应用至线上环境之前将其中的调试方法全部删除,从而可以提高数据处理的准确性。
步骤203,将标注有预设注解的方法从应用程序数据包中删除。
本发明实施例中,针对于标注有预设注解的任一方法,可以直接将该方法的定义字节码和内容字节码都删除,或者也可以仅删除该方法的内容字节码,保留该方法的定义字节码,具体不作限定。其中,方法的定义字节码是指定义方法名称的那部分代码,而方法的内容字节码是指实现方法功能的那部分代码。
比如,若某一方法的字节码为:
public void testMethod(){……}
则该方法的定义字节码为“public void testMethod(){}”,该方法的内容字节码为“……”。
本发明实施例中,若仅删除方法的内容字节码,则还需要设置方法的返回值,否则在其它方法调用该方法时会由于没有获取到返回值而导致其它方法运行出错,从而影响应用程序的运行。具体实施中,数据处理装置可以先根据方法的定义字节码确定方法的返回值类型,然后根据方法的返回值类型设置对应的内容字节码,使用该内容字节码更新方法中的原内容字节码;其中,方法的返回值类型可以包括无返回值类型、数字类型、字符类型、布尔类型和其它类型这五种情形,下面分别描述每种情形的执行方式:
情形一
在情形一中,若方法不具有返回值类型,则可以直接删除方法中的内容字节码,且可以不设置方法的返回值。
举例来说,某一方法的字节码为:
public void testMethod(){……}
根据该方法的定义字节码“public void testMethod(){}”可以确定该方法的返回值类型为“void”,说明该方法不具有返回值类型,因此可以直接删除该方法中的内容字节码“……”,如此,该方法更新为:
public void testMethod(){}
情形二
在情形二中,若方法的返回值类型为数字类型,则可以使用第一返回字节码来替换方法中的内容字节码,第一返回字节码用于指示返回预设数值。其中,数字类型可以为字节类型byte、短整型short、整型int、长整型long、浮点型float、双精度浮点型double中的任意一种。
举例来说,在预设数值为0时,若某一方法的字节码为:
则根据该方法的定义字节码“public int testMethod(){}”可以确定该方法的返回值类型为“int”,说明该方法的返回值类型为数字类型,因此可以设置第一返回字节码“Return 0”,并可以使用第一返回字节码“Return 0”来替换该方法中的“……;Return……”,如此,该方法更新为:
Figure BDA0002226296680000101
情形三
在情形三中,若方法的返回值类型为布尔类型,则可以使用第二返回字节码替换方法的内容字节码,第二返回字节码用于指示返回预设布尔值;其中,布尔类型可以为布尔型boolean。
举例来说,在预设布尔值为false时,若某一方法的字节码为:
Figure BDA0002226296680000102
则根据该方法的定义字节码“public boolean testMethod(){}”可以确定该方法的返回值类型为“boolean”,说明该方法的返回值类型为布尔类型,因此可以设置第二返回字节码“Return false”,并可以使用第二返回字节码“Return false”来替换该方法中的“……;Return……”,如此,该方法更新为:
Figure BDA0002226296680000103
情形四
在情形四中,若方法的返回值类型为字符类型,则可以使用第三返回字节码替换方法的内容字节码,第三返回字节码用于指示返回预设字符;其中,字符类型可以为字符型char。
举例来说,在预设布尔值为null时,若某一方法的字节码为:
Figure BDA0002226296680000111
则根据该方法的定义字节码“public char testMethod(){}”可以确定该方法的返回值类型为“char”,说明该方法的返回值类型为字符类型,因此可以设置第三返回字节码“Return null”,并可以使用第三返回字节码“Return null”来替换该方法中的“……;Return……”,如此,该方法更新为:
Figure BDA0002226296680000112
情形五
在情形五中,若方法的返回值类型为除数字类型、字符类型和布尔类型以外的其它类型,则可以使用第三返回字节码替换方法的内容字节码,第三返回字节码用于指示返回预设字符。其中,其它类型可以是指类、方法中的任意一项,情形五可以参照情形四进行具体实施,此处不再赘述。
本发明实施例中,通过仅删除调试方法的内容字节码而不删除其定义字节码,并为删除内容字节码的调试方法设置返回值,可以使得应用方法能够顺利引用到调试方法,避免应用程序数据包在执行时发生引用卡顿的情况,保证应用程序数据包在线上环境的顺序运行。
本发明实施例中,数据处理装置可以是指基于ASM技术开发的Gradle插件,下面从流程实施的角度来描述图2所示意的数据处理方法。
图3为本发明实施例提供的一种数据处理方法的流程实现示意图,图3所示意的方法可以应用于安卓应用程序或软件开发包(Software Development Kit,SDK)的开发、内测以及版本发布中,为应用提供安全的代码隔离环境。如图3所示,该方法包括:
步骤301,准备阶段,在项目工程中引入插件。
具体实施中,可以先将插件的Jar数据包拷贝到需要实施的项目工程中,然后在Gradle插件中通过添加“apply plugin:'插件名称'”来引入本发明实施例中的插件;比如,若本发明实施例中的插件名称为S,则可以通过添加“apply plugin:'S'”在项目工程中引入本发明实施例中的插件S。
步骤302,在开发阶段,编写应用程序中的各应用方法和各调试方法,得到应用程序数据包。
步骤303,针对于所编写的任一方法,确定该方法是否属于不想发布到线上环境的调试方法,若是,则执行步骤304,若否,则执行步骤305。
步骤304,对不想发布到线上环境的调试方法添加预设注解。
步骤305,不处理。
步骤306,在编译阶段,当应用程序数据包中的各调试方法均添加预设注解后,自动触发插件。
步骤307,插件遍历应用程序数据包中的每个类的所有方法,并获取每个方法的注解信息。
步骤308,针对于任一方法,确定该方法的注解信息中是否包括预设注解,若是,说明该方法应用于线上环境,因此执行步骤309,若否,说明该方法应用于开发环境,因此执行步骤310。
步骤309,根据该方法的定义字节码确定该方法的返回值类型,若存在返回值类型,则根据返回值类型设置对应的返回字节码,使用返回字节码替换方法的内容字节码,若不存在返回值类型,则删除该方法的内容字节码。
步骤310,不处理。
本发明的上述实施例中,确定应用程序数据包的应用环境,所述应用程序数据包由Java开发语言编写,若确定所述应用程序数据包应用于线上环境,则从所述应用程序数据包中确定出标注有预设注解的方法,并将标注有预设注解的方法从所述应用程序数据包中删除;所述预设注解为用户在开发所述应用程序数据包时标记在所述应用程序数据包中的调试方法上的注解。本发明实施例中,通过在开发应用程序数据包时在调试方法上标注预设注解,并在将应用程序数据包应用在线上环境之前,将标注有预设注解的方法删除,可以使得应用在线上环境的应用程序数据包中只包含应用方法而不包含调试方法,实现了真正意义的开发环境与线上环境的隔离,在保证调试方法的安全性的基础上,可以减少应用程序数据包所占用用户设备的数据量大小,并减小运行时所占用的用户设备的内存,提高用户的体验。
针对上述方法流程,本发明实施例还提供一种数据处理装置,该装置的具体内容可以参照上述方法实施。
图4为本发明实施例提供的一种数据处理装置的结构示意图,包括:
确定模块401,用于确定应用程序数据包的应用环境;所述应用程序数据包由Java开发语言编写;以及,若确定所述应用程序数据包应用于线上环境,则从所述应用程序数据包中确定出标注有预设注解的方法;所述预设注解为用户在开发所述应用程序数据包时标记在所述应用程序数据包中的调试方法上的注解;
处理模块402,用于将标注有预设注解的方法从所述应用程序数据包中删除。
可选地,所述确定模块401具体用于:
获取用户输入的环境参数;
若所述环境参数包含Release字段,例如transformClassesWithMUFPluginForRelease,则确定所述应用程序数据包应用于所述线上环境,若所述环境参数包含Debug字段,例如transformClassesWithMUFPluginForDebug,则确定所述应用程序数据包应用于开发环境。
可选地,所述确定模块401具体用于:
针对所述应用程序数据包中的任一个类,获取所述类中每个方法的注解信息,若所述类中存在某一方法的注解信息包括所述预设注解,则确定所述方法为标注有所述预设注解的方法。
可选地,所述处理模块402具体用于:
根据所述标注有预设注解的方法的定义字节码,确定所述标注有预设注解的方法的返回值类型;
若所述标注有预设注解的方法不存在返回值类型,则删除所述标注有预设注解的方法的内容字节码;若所述标注有预设注解的方法的返回值类型为数字类型,则使用第一返回字节码替换所述标注有预设注解的方法的内容字节码,所述第一返回字节码用于指示返回预设数值;若所述标注有预设注解的方法的返回值类型为布尔类型,则使用第二返回字节码替换所述标注有预设注解的方法的内容字节码,所述第二返回字节码用于指示返回预设布尔值;若所述标注有预设注解的方法的返回值类型为字符类型,或者,所述标注有预设注解的方法的返回值类型为除数字类型、字符类型和布尔类型以外的类型,则使用第三返回字节码替换所述标注有预设注解的方法的内容字节码,所述第三返回字节码用于指示返回预设字符。
从上述内容可以看出:本发明的上述实施例中,确定应用程序数据包的应用环境,所述应用程序数据包由Java开发语言编写,若确定所述应用程序数据包应用于线上环境,则从所述应用程序数据包中确定出标注有预设注解的方法,并将标注有预设注解的方法从所述应用程序数据包中删除;所述预设注解为用户在开发所述应用程序数据包时标记在所述应用程序数据包中的调试方法上的注解。本发明实施例中,通过在开发应用程序数据包时在调试方法上标注预设注解,并在将应用程序数据包应用在线上环境之前,将标注有预设注解的方法删除,可以使得应用在线上环境的应用程序数据包中只包含应用方法而不包含调试方法,实现了真正意义的开发环境与线上环境的隔离,在保证调试方法的安全性的基础上,可以减少应用程序数据包所占用用户设备的数据量大小,并减小运行时所占用的用户设备的内存,提高用户的体验。
基于同一发明构思,本发明实施例还提供了一种计算设备,如图5所示,该计算设备包括至少一个处理器501,以及与至少一个处理器连接的存储器502,本发明实施例中不限定处理器501与存储器502之间的具体连接介质,图5中处理器501和存储器502之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。
在本发明实施例中,存储器502存储有可被至少一个处理器501执行的指令,至少一个处理器501通过执行存储器502存储的指令,可以执行前述的数据处理方法中所包括的步骤。
其中,处理器501是计算设备的控制中心,可以利用各种接口和线路连接计算设备的各个部分,通过运行或执行存储在存储器502内的指令以及调用存储在存储器502内的数据,从而实现数据处理。可选的,处理器501可包括一个或多个处理单元,处理器501可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理下发指令。可以理解的是,上述调制解调处理器也可以不集成到处理器501中。在一些实施例中,处理器501和存储器502可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器501可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本发明实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合数据处理实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器502作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器502可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器502是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本发明实施例中的存储器502还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
需要说明的是,图5所示意的计算设备可以为终端设备,或者也可以为后端设备,或者还可以为其它设备,不作限定。
基于同一发明构思,本发明实施例还提供了一种计算机可读存储介质,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行图2或图3任意所述的数据处理方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种数据处理方法,其特征在于,所述方法包括:
确定应用程序数据包的应用环境;所述应用程序数据包由Java开发语言编写;
若确定所述应用程序数据包应用于线上环境,则从所述应用程序数据包中确定出标注有预设注解的方法;所述预设注解为用户在开发所述应用程序数据包时标记在所述应用程序数据包中的调试方法上的注解;
将标注有预设注解的方法从所述应用程序数据包中删除。
2.根据权利要求1所述的方法,其特征在于,所述确定所述应用程序数据包的应用环境,包括:
获取用户输入的环境参数;
若所述环境参数包含Release字段,则确定所述应用程序数据包应用于所述线上环境,若所述环境参数包含Debug字段,则确定所述应用程序数据包应用于开发环境。
3.根据权利要求1所述的方法,其特征在于,所述从所述应用程序数据包中确定出标注有预设注解的方法,包括:
针对所述应用程序数据包中的任一个类,获取所述类中每个方法的注解信息,若所述类中存在某一方法的注解信息包括所述预设注解,则确定所述方法为标注有所述预设注解的方法。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述将标注有预设注解的方法从所述应用程序数据包中删除,包括:
根据所述标注有预设注解的方法的定义字节码,确定所述标注有预设注解的方法的返回值类型;
若所述标注有预设注解的方法不存在返回值类型,则删除所述标注有预设注解的方法的内容字节码;若所述标注有预设注解的方法的返回值类型为数字类型,则使用第一返回字节码替换所述标注有预设注解的方法的内容字节码,所述第一返回字节码用于指示返回预设数值;若所述标注有预设注解的方法的返回值类型为布尔类型,则使用第二返回字节码替换所述标注有预设注解的方法的内容字节码,所述第二返回字节码用于指示返回预设布尔值;若所述标注有预设注解的方法的返回值类型为字符类型,或者,所述标注有预设注解的方法的返回值类型为除数字类型、字符类型和布尔类型以外的类型,则使用第三返回字节码替换所述标注有预设注解的方法的内容字节码,所述第三返回字节码用于指示返回预设字符。
5.一种数据处理装置,其特征在于,所述装置包括:
确定模块,用于确定应用程序数据包的应用环境;所述应用程序数据包由Java开发语言编写;以及,若确定所述应用程序数据包应用于线上环境,则从所述应用程序数据包中确定出标注有预设注解的方法;所述预设注解为用户在开发所述应用程序数据包时标记在所述应用程序数据包中的调试方法上的注解;
处理模块,用于将标注有预设注解的方法从所述应用程序数据包中删除。
6.根据权利要求5所述的装置,其特征在于,所述确定模块具体用于:
获取用户输入的环境参数;
若所述环境参数包含Release字段,则确定所述应用程序数据包应用于所述线上环境,若所述环境参数包含Debug字段,则确定所述应用程序数据包应用于开发环境。
7.根据权利要求5所述的装置,其特征在于,所述确定模块具体用于:
针对所述应用程序数据包中的任一个类,获取所述类中每个方法的注解信息,若所述类中存在某一方法的注解信息包括所述预设注解,则确定所述方法为标注有所述预设注解的方法。
8.根据权利要求5至7任一项所述的装置,其特征在于,所述处理模块具体用于:
根据所述标注有预设注解的方法的定义字节码,确定所述标注有预设注解的方法的返回值类型;
若所述标注有预设注解的方法不存在返回值类型,则删除所述标注有预设注解的方法的内容字节码;若所述标注有预设注解的方法的返回值类型为数字类型,则使用第一返回字节码替换所述标注有预设注解的方法的内容字节码,所述第一返回字节码用于指示返回预设数值;若所述标注有预设注解的方法的返回值类型为布尔类型,则使用第二返回字节码替换所述标注有预设注解的方法的内容字节码,所述第二返回字节码用于指示返回预设布尔值;若所述标注有预设注解的方法的返回值类型为字符类型,或者,所述标注有预设注解的方法的返回值类型为除数字类型、字符类型和布尔类型以外的类型,则使用第三返回字节码替换所述标注有预设注解的方法的内容字节码,所述第三返回字节码用于指示返回预设字符。
9.一种计算设备,其特征在于,包括至少一个处理单元以及至少一个存储单元,其中,所述存储单元存储有计算机程序,当所述程序被所述处理单元执行时,使得所述处理单元执行权利要求1~4任一权利要求所述的方法。
10.一种计算机可读存储介质,其特征在于,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行权利要求1~4任一权利要求所述的方法。
CN201910952784.0A 2019-10-09 2019-10-09 一种数据处理方法及装置 Active CN110765008B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910952784.0A CN110765008B (zh) 2019-10-09 2019-10-09 一种数据处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910952784.0A CN110765008B (zh) 2019-10-09 2019-10-09 一种数据处理方法及装置

Publications (2)

Publication Number Publication Date
CN110765008A true CN110765008A (zh) 2020-02-07
CN110765008B CN110765008B (zh) 2023-08-18

Family

ID=69331010

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910952784.0A Active CN110765008B (zh) 2019-10-09 2019-10-09 一种数据处理方法及装置

Country Status (1)

Country Link
CN (1) CN110765008B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112667481A (zh) * 2020-12-31 2021-04-16 中国建设银行股份有限公司 数据采集工具包、方法及设备
CN116225576A (zh) * 2023-05-08 2023-06-06 成都赛力斯科技有限公司 应用程序的数据环境切换方法、装置、电子设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6675375B1 (en) * 2000-04-28 2004-01-06 Sun Microsystems, Inc. Method and apparatus for optimized multiprocessing in a safe language
US20060294502A1 (en) * 2005-06-22 2006-12-28 Microsoft Corporation Programmable annotation inference
CN109508249A (zh) * 2018-11-15 2019-03-22 厦门美图之家科技有限公司 崩溃处理方法、装置及电子设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6675375B1 (en) * 2000-04-28 2004-01-06 Sun Microsystems, Inc. Method and apparatus for optimized multiprocessing in a safe language
US20060294502A1 (en) * 2005-06-22 2006-12-28 Microsoft Corporation Programmable annotation inference
CN109508249A (zh) * 2018-11-15 2019-03-22 厦门美图之家科技有限公司 崩溃处理方法、装置及电子设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
马玉英: "嵌入式系统开发工具及RTOS平台" *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112667481A (zh) * 2020-12-31 2021-04-16 中国建设银行股份有限公司 数据采集工具包、方法及设备
CN112667481B (zh) * 2020-12-31 2024-05-10 中国建设银行股份有限公司 数据采集工具包、方法及设备
CN116225576A (zh) * 2023-05-08 2023-06-06 成都赛力斯科技有限公司 应用程序的数据环境切换方法、装置、电子设备及介质

Also Published As

Publication number Publication date
CN110765008B (zh) 2023-08-18

Similar Documents

Publication Publication Date Title
US5202889A (en) Dynamic process for the generation of biased pseudo-random test patterns for the functional verification of hardware designs
CN111796831B (zh) 一种多芯片兼容的编译方法和装置
CN107643893B (zh) 一种程序检测方法及装置
US9639343B2 (en) Method for altering execution of a program, debugger, and computer-readable medium
US9129137B2 (en) Method, computer program and device for providing security for intermediate programming code for its execution by a virtual machine
CN111625225A (zh) 一种程序指定数据输出方法和装置
CN109032612B (zh) 混合型应用的接口调用方法、装置及计算机可读存储介质
CN110765008B (zh) 一种数据处理方法及装置
CN103365772B (zh) 软件测试自动评价装置以及方法
CN115617687A (zh) 程序插桩方法、装置、设备和存储介质
CN114428642A (zh) 一种基于新型处理器架构的随机指令生成环境
CN110688320B (zh) 全局变量的检测方法、装置及终端设备
CN110688198B (zh) 系统调用方法、装置和电子设备
US9436587B2 (en) Test context generation
CN117215558A (zh) 安卓的基于可视化的软件开发方法、装置、设备及介质
CN111209135A (zh) 一种日志处理方法及装置
US11200126B2 (en) Utilizing translation tables for testing processors
CN111444456B (zh) 一种样式编辑方法、装置及电子设备
CN112527657B (zh) 单元测试中自动插桩的方法及设备
CN113791767B (zh) 一种字节码修改方法及装置
CN113031956A (zh) 程序编译方法和装置以及程序运行方法和装置
CN114138588B (zh) 一种控制器的调试信息导出方法、系统、设备以及介质
CN115470151B (zh) 一种应用运行分析方法、计算设备及存储介质
US9830174B2 (en) Dynamic host code generation from architecture description for fast simulation
CN112631904A (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
GR01 Patent grant
GR01 Patent grant