CN107239298B - 应用程序调试方法及装置 - Google Patents

应用程序调试方法及装置 Download PDF

Info

Publication number
CN107239298B
CN107239298B CN201710294281.XA CN201710294281A CN107239298B CN 107239298 B CN107239298 B CN 107239298B CN 201710294281 A CN201710294281 A CN 201710294281A CN 107239298 B CN107239298 B CN 107239298B
Authority
CN
China
Prior art keywords
public
lib library
jar
jar package
lib
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.)
Active
Application number
CN201710294281.XA
Other languages
English (en)
Other versions
CN107239298A (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.)
Beijing 58 Information Technology Co Ltd
Original Assignee
Beijing 58 Information 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 Beijing 58 Information Technology Co Ltd filed Critical Beijing 58 Information Technology Co Ltd
Priority to CN201710294281.XA priority Critical patent/CN107239298B/zh
Publication of CN107239298A publication Critical patent/CN107239298A/zh
Application granted granted Critical
Publication of CN107239298B publication Critical patent/CN107239298B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例提供一种应用程序调试方法及装置,该方法包括:获取对第一lib库进行调用的调用指令,所述第一lib库为应用程序中的任意一个lib库;根据所述调用指令,确定第一lib库对应的私有jar包;根据预设依赖关系,在托管平台中确定所述第一lib库对应的公共jar包,所述托管平台中包括至少一个公共jar包,所述公共jar包为所述应用从程序中至少两个lib库对应的jar包,所述预设依赖关系用于指示所述应用程序中的lib库与所述托管平台中的公共jar包的对应关系;根据所述私有jar包和所述第一lib库对应的公共jar包,运行所述第一lib库。用于提高应用程序的调试效率。

Description

应用程序调试方法及装置
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种应用程序调试方法及装置。
背景技术
目前,在应用程序上市之前,研发人员需要对应用程序进行调试,以确定应用程序的正确性。
在应用程序中包括多个lib库,该lib库中存储着应用程序的运行代码。在lib库中的代码运行的过程中,可能需要调用第三方jar包,以实现相应的功能。一个应用程序中的每一个lib库可能依赖(需要调用)多个第三方jar包,不同lib库依赖的第三方jar包可能相同,也可能不同。在现有技术中,通常将两个或两个以上的lib库对应的所有jar包存放在公共lib库中,并建立lib库之间的依赖关系,在一个lib库运行的过程中,通过调用公共lib库,以实现完成相应的功能。在一个lib库调用公共lib库时,需要对公共lib库中的所有jar包进行编译。例如,假设lib库1依赖jar包1和jar包2,lib库2依赖jar包2和jar包3,lib库3依赖jar包2和jar包4,则将lib库1和lib库2共同依赖的jar包2、以及lib库2和lib库3共同依赖的jar包2存放在公共lib库中,当lib库1调用公共lib库时,需要对公共lib库中的jar包2和jar包3进行编译,但是,lib库1并不依赖jar包3,导致lib库1对jar包3进行了多余的编译。
由上可知,在lib库调用公共lib库时,由于lib库需要编译公共lib库中的所有jar包,而公共lib库中的部分jar包非该lib库依赖的jar包,使得lib库需要编译多余的jar包,导致应用程序的调试效率低下。
发明内容
本发明实施例提供一种应用程序调试方法及装置,提高了应用程序的调试效率。
第一方面,本发明实施例提供一种应用程序调试方法,包括:
获取对第一lib库进行调用的调用指令,所述第一lib库为应用程序中的任意一个lib库;
根据所述调用指令,确定第一lib库对应的私有jar包;
根据预设依赖关系,在托管平台中确定所述第一lib库对应的公共jar包,所述托管平台中包括至少一个公共jar包,所述公共jar包为所述应用从程序中至少两个lib库对应的jar包,所述预设依赖关系用于指示所述应用程序中的lib库与所述托管平台中的公共jar包的对应关系;
在所述第一lib库中编译所述私有jar包,得到第一编译文件;
获取所述第一lib库对应的公共jar包的编译状态;
根据所述第一lib库对应的公共jar包的编译状态,获取第二编译文件;
根据所述第一编译文件和所述第二编译文件,运行所述第一lib库。
根据所述第一lib库对应的公共jar包的编译状态,获取第二编译文件,包括:
若第一lib库对应的公共jar包的状态为未编译状态,则调用编译器对所述公共jar包进行编译,得到所述第二编译文件;
若第一lib库对应的公共jar包的状态为已编译状态,则在公共编译文件存储区获取所述第二编译文件,所述公共编译文件存储区用于存储所述托管平台中已编译的jar包的编译文件。
在一种可能的实施方式中,调用编译器对所述公共jar包进行编译,得到所述第二编译文件之后,还包括:
将所述第二编译文件存储至所述公共编译文件存储区。
在另一种可能的实施方式中,获取对第一lib库进行调用的调用指令之前,还包括:
获取所述应用程序对应的jar包集合;
在所述jar包集合中确定公共jar包根据各所述公共jar包对应的lib库,确定所述预设依赖关系;
将各所述公共jar包存储至所述托管平台。
第二方面,本发明实施例提供一种应用程序调试装置,包括第一获取模块、第一确定模块、第二确定模块及运行模块,其中,
所述第一获取模块用于,获取对第一lib库进行调用的调用指令,所述第一lib库为应用程序中的任意一个lib库;
所述第一确定模块用于,根据所述调用指令,确定第一lib库对应的私有jar包;
所述第二确定模块用于,根据预设依赖关系,在托管平台中确定所述第一lib库对应的公共jar包,所述托管平台中包括至少一个公共jar包,所述公共jar包为所述应用从程序中至少两个lib库对应的jar包,所述预设依赖关系用于指示所述应用程序中的lib库与所述托管平台中的公共jar包的对应关系;
所述运行模块用于,
在所述第一lib库中编译所述私有jar包,得到第一编译文件;
获取所述第一lib库对应的公共jar包的编译状态;
根据所述第一lib库对应的公共jar包的编译状态,获取第二编译文件;
根据所述第一编译文件和所述第二编译文件,运行所述第一lib库。
所述运行模块具体用于:
若第一lib库对应的公共jar包的状态为未编译状态,则调用编译器对所述公共jar包进行编译,得到所述第二编译文件;
若第一lib库对应的公共jar包的状态为已编译状态,则在公共编译文件存储区获取所述第二编译文件,所述公共编译文件存储区用于存储所述托管平台中已编译的jar包的编译文件。
在一种可能的实施方式中,所述装置还包括第一存储模块,其中,
所述第一存储模块用于,在所述第二确定模块调用编译器对所述公共jar包进行编译,得到所述第二编译文件之后,将所述第二编译文件存储至所述公共编译文件存储区。
在另一种可能的实施方式中,所述装置还包括第二获取模块、第三确定模块、第四确定模块和第二存储模块,其中,
所述第二获取模块用于,在所述第一获取模块获取对第一lib库进行调用的调用指令之前,获取所述应用程序对应的jar包集合;
所述第三确定模块用于,在所述jar包集合中确定公共jar包;
所述第四确定模块用于,根据各所述公共jar包对应的lib库,确定所述预设依赖关系;
所述第二存储模块用于,将各所述公共jar包存储至所述托管平台。
本发明实施例提供的应用程序调试方法及装置,在获取到对第一lib库进行调用的调用指令之后,根据调用指令,确定第一lib库对应的私有jar包;根据预设依赖关系,在托管平台中确定第一lib库对应的公共jar包,并根据私有jar包和第一lib库对应的公共jar包,运行第一lib库。在上述过程中,通过预设依赖关系可以指示第一lib库对应的公共jar包,这样,在第一lib运行的过程中,只需要编译第一lib对应的公共jar包即可,无需对托管平台中其它公共jar包进行编译,提高了lib库的运行效率,进而提高了应用程序的调试效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的应用程序调试方法的应用场景示意图;
图2为本发明实施例提供的应用程序调试方法的流程示意图;
图3为本发明实施例提供的确定预设依赖关系及公共jar包方法的流程示意图;
图4为本发明实施例提供的应用程序调试装置的结构示意图一;
图5为本发明实施例提供的应用程序调试装置的结构示意图二。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的应用程序调试方法的应用场景示意图。请参见图1,在终端设备中设置有应用程序101、托管平台102、及预设依赖关系表103。用户可以在终端设备中对应用程序101进行调试,在应用程序101中包括多个lib库(分别记为lib库1至lib库N),lib库对应有私有jar包,该私有jar包通常为第三方jar包,当然,部分lib库也可能不对应有私有jar包。托管平台102中包括多个公共jar包,当然,托管平台102还可以设置在远端服务器中。预设依赖关系表103中包括应用程序中每一个lib库的标识、及各lib库的标识对应的公共jar包,当然,该预设依赖关系表103还可以设置在远端服务器中。
在本申请中,当需要运行lib库时,可以根据预设依赖关系表,在托管平台中确定对应的公共jar包,并根据本地的私有jar包和托管平台中对应的公共jar包运行lib,避免了对lib库不依赖的jar包进行编译,提高了lib库的运行效率,进而提高了应用程序的调试效率。
下面,通过具体实施例对本申请所示的技术方案进行详细说明。需要说明的是,下面几个具体实施例可以相互结合,对于相同或相似的内容在不同的实施例中不再进行赘述。
图2为本发明实施例提供的应用程序调试方法的流程示意图。请参见图2,包括:
S201、获取对第一lib库进行调用的调用指令,第一lib库为应用程序中的任意一个lib库。
本发明实施例的执行主体可以为应用程序调试装置(下文简称调试装置),该调试装置可以通过软件和/或硬件实现。该调试装置可以设置在终端设备中。可选的,该终端设备可以为电脑等设备。
在终端设备中对应用程序进行调试的过程中,应用程序中的多个lib库按照预设顺序运行。其中,应用程序中的任意一个lib库均可以通过图2实施例所示的方法运行,下面,以应用程序中的任意一个第一lib库的运行过程为例,对图2实施例所示的方法进行详细说明。
在实际应用过程中,应用程序中的各个lib库通过按照一定的顺序执行,当一个lib库运行完成之后,可以对另一个lib库进行调用,以保证应用程序可以顺序执行。在本发明实施例中,对第一lib库的调用指令可能是应用程序中其它lib库对第一lib库进行调用时产生的。
S202、根据调用指令,确定第一lib库对应的私有jar包。
可选的,第一lib库对应的私有jar包是指仅第一lib库可以使用的jar包。可选的,第一lib库对应的私有jar包可以存储在第一lib库中,也可以存储在该应用程序的其它文件中。
S203、根据预设依赖关系,在托管平台中确定第一lib库对应的公共jar包。
其中,托管平台中包括至少一个公共jar包,公共jar包为应用从程序中至少两个lib库对应的jar包,预设依赖关系用于指示应用程序中的lib库与托管平台中的公共jar包的对应关系。
在本发明实施例中,公共jar包是指应用程序中至少两个lib库对应的jar包。例如,假设应用程序中包括lib库1、lib库2和lib库3,其中,lib库1对应jar包1和jar包2,lib库2对应jar包2和jar包3,lib库3对应jar包3和jar包4,由于lib库1和lib库2均对应jar包2,因此jar包2为公共jar包,由于lib库2和lib库3均对应jar包3,因此,jar包3也为公共jar包。即,该应用程序中的公共jar包可以包括jar包2和jar包3。
预设依赖关系是指应用程序中的lib库与托管平台中的公共jar包之间的对应关系。可选的,该预设依赖关系可以存储在应用程序的build.gradle文件中。可选的,一个lib库可以对应多个公共jar包,一个公共jar包也可以对应多个lib库。可选的,可以通过表格表示该预设依赖关系。例如,该预设依赖关系可以如表1所示:
表1
Figure GDA0002764314950000061
Figure GDA0002764314950000071
可选的,可以通过查询该预设依赖关系表,确定第一lib库对应的公共jar包。
S204、根据私有jar包和第一lib库对应的公共jar包,运行第一lib库。
在确定得到第一lib库对应的私有jar包和公共jar包之后,可以根据如下可行的实现方式运行第一lib库:在第一lib库中编译私有jar包,得到第一编译文件,获取第一lib库对应的公共jar包的编译状态,根据第一lib库对应的公共jar包的编译状态,获取第二编译文件,根据第一编译文件和第二编译文件,运行第一lib库。
可选的,可以通过如下可行的实现方式根据第一lib库对应的公共jar包的编译状态,获取第二编译文件:若第一lib库对应的公共jar包的状态为未编译状态,则调用编译器对公共jar包进行编译,得到第二编译文件,并将第二编译文件存储至公共编译文件存储区;若第一lib库对应的公共jar包的状态为已编译状态,则在公共编译文件存储区获取第二编译文件,公共编译文件存储区用于存储托管平台中已编译的jar包的编译文件。
需要说明的是,由于应用程序中的多个lib库可能对应同一公共jar包,在应用程序的调试过程中,当一个lib库调用一个公共jar包时,需要调用编译器对该公共jar包进行编译,得到编译文件,并将编译文件存储至公共编译文件存储区。这样,当其它lib库也需要调用该公共jar包时,直接在公共编译文件存储区获取该公共jar包的编译文件即可,无需对该公共jar包进行再次编译。
本发明实施例提供的应用程序调试方法,在获取到对第一lib库进行调用的调用指令之后,根据调用指令,确定第一lib库对应的私有jar包;根据预设依赖关系,在托管平台中确定第一lib库对应的公共jar包,并根据私有jar包和第一lib库对应的公共jar包,运行第一lib库。在上述过程中,通过预设依赖关系可以指示第一lib库对应的公共jar包,这样,在第一lib运行的过程中,只需要编译第一lib对应的公共jar包即可,无需对托管平台中其它公共jar包进行编译,提高了lib库的运行效率,进而提高了应用程序的调试效率。
在实际应用过程中,在执行图2所示的实施例之前,需要先确定应用程序中的公共jar包、以及预设依赖关系。具体的,可以通过图3所示的实施例实现。
图3为本发明实施例提供的确定预设依赖关系及公共jar包方法的流程示意图。请参见图3,该方法可以包括:
S301、获取应用程序对应的jar包集合。
可选的,当需要获取应用程序丢应的jar包集合时,可以先获取应用程序中每一lib库对应jar包,由于不同lib库可能对应相同的jar包,因此,可以对每一个lib库对应的jar进行去重处理,得到应用程序对应的jar包集合。
S302、在jar包集合中确定公共jar包,公共jar包为应用从程序中至少两个lib库对应的jar包。
在获取得到jar包集合中,根据jar包集合中每一个jar包对应的lib库的个数,确定公共jar包。具体的,若jar包对应的lib库的个数大于或等于2,则将该jar包确定为公共jar包。
S303、根据各公共jar包对应的lib,确定预设依赖关系。
在确定得到公共jar包之后,根据每一个jar包对应的lib库,确定该预设依赖关系。
需要说明的是,该预设依赖关系可以如表1所示,本发明实施例对预设依赖关系不再进行赘述。
S304、将各公共jar包存储至托管平台。
在确定得到公共jar包之后,将公共jar包存储至托管平台。
需要说明的是,应用程序中的各个lib库中的代码相互独立,便于后期维护。在实际应用过程中,当应用程序中的lib库对应的jar包发生变化时,只需要对预设依赖关系和托管平台中的jar包进行更新即可,进一步简化了对应用程序的后期维护过程。
下面,通过具体示例,对上述方法实施例所示的技术方案进行详细说明。
示例性的,假设应用程序1中包括5个lib库,分别记为lib库1-lib库5,各lib库对应的jar包可以如表2所示:
表2
Figure GDA0002764314950000081
Figure GDA0002764314950000091
调试装置根据表2,确定应用程序1对应的jar包集合,该jar包集合中包括7个jar包,分别为jar包1-jar包7。并在jar包1-jar包7中确定公共jar包,公共jar包为:jar包1、jar包2、jar包6,并将该jar包1、jar包2、jar包6存储至托管平台。调试装置根据各个jar包对应的lib库,确定表3所示的预设依赖关系:
表3
jar包的标识 lib库的标识
jar包1 lib库1、lib库3
jar包2 lib库1、lib库2
jar包6 lib库3、lib库4、lib库5
在对应用程序1调试的过程中,当获取到对lib库3的调用指令之后,确定lib库3对应的私有jar包为jar包5,根据表3所述的预设依赖关系,确定lib库3对应的公共jar包为jar包1和jar包6。
调试装置调用编译装置对jar1包5进行编译,得到编译文件5。调试装置判断公共编译文件存储区是否包括jar包1和jar包6的编译文件,假设公共编译文件存储区包括jar包1的编译文件1,则调试装置在公共编译文件存储区获取编译文件1。假设公共编译文件存储区不包括jar包6的编译文件6,则调试装置调用编译器对jar包6进行编译,得到jar包6的编译文件6,并将编译文件6存储在公共编译文件存储区。
在调试装置获取得到编译文件1、编译文件5、以及编译文件6之后,调试装置根据编译文件1、编译文件5、以及编译文件6运行lib库3。
图4为本发明实施例提供的应用程序调试装置的结构示意图一。请参见图4,该装置可以包括第一获取模块11、第一确定模块12、第二确定模块13及运行模块14,其中,
所述第一获取模块11用于,获取对第一lib库进行调用的调用指令,所述第一lib库为应用程序中的任意一个lib库;
所述第一确定模块12用于,根据所述调用指令,确定第一lib库对应的私有jar包;
所述第二确定模块13用于,根据预设依赖关系,在托管平台中确定所述第一lib库对应的公共jar包,所述托管平台中包括至少一个公共jar包,所述公共jar包为所述应用从程序中至少两个lib库对应的jar包,所述预设依赖关系用于指示所述应用程序中的lib库与所述托管平台中的公共jar包的对应关系;
所述运行模块14用于,根据所述私有jar包和所述第一lib库对应的公共jar包,运行所述第一lib库。
本发明实施例提供的应用程序调试装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
在一种可能的实施方式中,所述运行模块14具体用于:
在所述第一lib库中编译所述私有jar包,得到第一编译文件;
获取所述第一lib库对应的公共jar包的编译状态;
根据所述第一lib库对应的公共jar包的编译状态,获取第二编译文件;
根据所述第一编译文件和所述第二编译文件,运行所述第一lib库。
在另一种可能的实施方式中,所述第二确定模块13具体用于:
若第一lib库对应的公共jar包的状态为未编译状态,则调用编译器对所述公共jar包进行编译,得到所述第二编译文件;
若第一lib库对应的公共jar包的状态为已编译状态,则在公共编译文件存储区获取所述第二编译文件,所述公共编译文件存储区用于存储所述托管平台中已编译的jar包的编译文件。
图5为本发明实施例提供的应用程序调试装置的结构示意图二。在图4所示实施例的基础上,请参见图5,所述装置还包括第一存储模块15,其中,
所述第一存储模块15用于,在所述第二确定模块13调用编译器对所述公共jar包进行编译,得到所述第二编译文件之后,将所述第二编译文件存储至所述公共编译文件存储区。
在另一种可能的实施方式中,所述装置还包括第二获取模块16、第三确定模块17、第四确定模块18和第二存储模块19,其中,
所述第二获取模块16用于,在所述第一获取模块获取对第一lib库进行调用的调用指令之前,获取所述应用程序对应的jar包集合;
所述第三确定模块17用于,在所述jar包集合中确定公共jar包,所述公共jar包为所述应用从程序中至少两个lib库对应的jar包;
所述第四确定模块18用于,根据各所述公共jar包对应的lib库,确定所述预设依赖关系;
所述第二存储模块19用于,将各所述公共jar包存储至所述托管平台。
本发明实施例提供的应用程序调试装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明实施例的技术方案,而非对其限制;尽管参照前述各实施例对本发明实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例方案的范围。

Claims (6)

1.一种应用程序调试方法,其特征在于,包括:
获取对第一lib库进行调用的调用指令,所述第一lib库为应用程序中的任意一个lib库;
根据所述调用指令,确定第一lib库对应的私有jar包;
根据预设依赖关系,在托管平台中确定所述第一lib库对应的公共jar包,所述托管平台中包括至少一个公共jar包,所述公共jar包为所述应用程序中至少两个lib库对应的jar包,所述预设依赖关系用于指示所述应用程序中的lib库与所述托管平台中的公共jar包的对应关系;
在所述第一lib库中编译所述私有jar包,得到第一编译文件;
获取所述第一lib库对应的公共jar包的编译状态;
根据所述第一lib库对应的公共jar包的编译状态,获取第二编译文件;
根据所述第一编译文件和所述第二编译文件,运行所述第一lib库;
根据所述第一lib库对应的公共jar包的编译状态,获取第二编译文件,包括:
若第一lib库对应的公共jar包的状态为未编译状态,则调用编译器对所述公共jar包进行编译,得到所述第二编译文件;
若第一lib库对应的公共jar包的状态为已编译状态,则在公共编译文件存储区获取所述第二编译文件,所述公共编译文件存储区用于存储所述托管平台中已编译的jar包的编译文件。
2.根据权利要求1所述的方法,其特征在于,调用编译器对所述公共jar包进行编译,得到所述第二编译文件之后,还包括:
将所述第二编译文件存储至所述公共编译文件存储区。
3.根据权利要求1-2任一项所述的方法,其特征在于,获取对第一lib库进行调用的调用指令之前,还包括:
获取所述应用程序对应的jar包集合;
在所述jar包集合中确定公共jar包;
根据各所述公共jar包对应的lib库,确定所述预设依赖关系;
将各所述公共jar包存储至所述托管平台。
4.一种应用程序调试装置,其特征在于,包括第一获取模块、第一确定模块、第二确定模块及运行模块,其中,
所述第一获取模块用于,获取对第一lib库进行调用的调用指令,所述第一lib库为应用程序中的任意一个lib库;
所述第一确定模块用于,根据所述调用指令,确定第一lib库对应的私有jar包;
所述第二确定模块用于,根据预设依赖关系,在托管平台中确定所述第一lib库对应的公共jar包,所述托管平台中包括至少一个公共jar包,所述公共jar包为所述应用程序中至少两个lib库对应的jar包,所述预设依赖关系用于指示所述应用程序中的lib库与所述托管平台中的公共jar包的对应关系;
所述运行模块用于,在所述第一lib库中编译所述私有jar包,得到第一编译文件;
获取所述第一lib库对应的公共jar包的编译状态;
根据所述第一lib库对应的公共jar包的编译状态,获取第二编译文件;
根据所述第一编译文件和所述第二编译文件,运行所述第一lib库;
所述运行模块具体用于:
若第一lib库对应的公共jar包的状态为未编译状态,则调用编译器对所述公共jar包进行编译,得到所述第二编译文件;
若第一lib库对应的公共jar包的状态为已编译状态,则在公共编译文件存储区获取所述第二编译文件,所述公共编译文件存储区用于存储所述托管平台中已编译的jar包的编译文件。
5.根据权利要求4所述的装置,其特征在于,所述装置还包括第一存储模块,其中,
所述第一存储模块用于,在所述第二确定模块调用编译器对所述公共jar包进行编译,得到所述第二编译文件之后,将所述第二编译文件存储至所述公共编译文件存储区。
6.根据权利要求4-5任一项所述的装置,其特征在于,所述装置还包括第二获取模块、第三确定模块、第四确定模块和第二存储模块,其中,
所述第二获取模块用于,在所述第一获取模块获取对第一lib库进行调用的调用指令之前,获取所述应用程序对应的jar包集合;
所述第三确定模块用于,在所述jar包集合中确定公共jar包;
所述第四确定模块用于,根据各所述公共jar包对应的lib库,确定所述预设依赖关系;
所述第二存储模块用于,将各所述公共jar包存储至所述托管平台。
CN201710294281.XA 2017-04-28 2017-04-28 应用程序调试方法及装置 Active CN107239298B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710294281.XA CN107239298B (zh) 2017-04-28 2017-04-28 应用程序调试方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710294281.XA CN107239298B (zh) 2017-04-28 2017-04-28 应用程序调试方法及装置

Publications (2)

Publication Number Publication Date
CN107239298A CN107239298A (zh) 2017-10-10
CN107239298B true CN107239298B (zh) 2021-02-19

Family

ID=59985573

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710294281.XA Active CN107239298B (zh) 2017-04-28 2017-04-28 应用程序调试方法及装置

Country Status (1)

Country Link
CN (1) CN107239298B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107704246A (zh) * 2017-10-12 2018-02-16 北京元心科技有限公司 终端、编译的方法及装置
CN109857405A (zh) * 2019-02-02 2019-06-07 Oppo广东移动通信有限公司 应用程序安装包的编译方法、装置、存储介质及终端
CN111158741B (zh) * 2019-12-23 2024-04-12 北京五八信息技术有限公司 监控业务模块对第三方类库依赖关系变化的方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104077160A (zh) * 2014-05-12 2014-10-01 联动优势电子商务有限公司 一种升级安卓软件的方法、设备和系统
CN104714812A (zh) * 2013-12-13 2015-06-17 中国电信股份有限公司 在云环境中快速部署和加载Java应用的方法和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015147690A1 (en) * 2014-03-28 2015-10-01 Oracle International Corporation System and method for determination of code coverage for software applications in a network environment

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104714812A (zh) * 2013-12-13 2015-06-17 中国电信股份有限公司 在云环境中快速部署和加载Java应用的方法和系统
CN104077160A (zh) * 2014-05-12 2014-10-01 联动优势电子商务有限公司 一种升级安卓软件的方法、设备和系统

Also Published As

Publication number Publication date
CN107239298A (zh) 2017-10-10

Similar Documents

Publication Publication Date Title
US9176842B2 (en) Control flow analysis utilizing function dominator trees
CN106547520B (zh) 一种代码路径分析方法及装置
CN107239298B (zh) 应用程序调试方法及装置
US20110154299A1 (en) Apparatus and method for executing instrumentation code
CN104866293B (zh) 一种对Android应用程序扩展功能的方法及装置
CN105095367B (zh) 一种客户端数据的采集方法和装置
CN106648755B (zh) 一种在安卓art环境中动态加载dex的方法及装置
CN110659031A (zh) 应用程序的编译方法、装置、电子设备及存储介质
CN111736913B (zh) 类加载方法和装置
CN109491664B (zh) iOS应用程序的生成方法、装置、设备及存储介质
CN112769706B (zh) 组件化路由方法及系统
CN111124480A (zh) 应用程序包的生成方法、装置、电子设备及存储介质
CN111596920A (zh) 文件编译方法、装置、编译设备及存储介质
US8645920B2 (en) Data parallelism aware debugging
CN113138768A (zh) 应用程序包生成方法、装置、电子设备以及可读存储介质
WO2023197851A9 (zh) 异常组件的识别方法、装置、设备、存储介质及程序产品
CN106484375B (zh) 一种指令块加载方法、软交换设备及系统
CN110826074A (zh) 一种应用漏洞检测方法、装置和计算机可读存储介质
CN110688320A (zh) 全局变量的检测方法、装置及终端设备
CN113312073B (zh) 一种安装包文件处理方法和相关装置
CN107704279B (zh) 一种数据加载方法以及装置
US8561027B2 (en) Reflection capability in static programming languages
CN110928779A (zh) 文件处理方法、应用程序运行故障定位方法和设备
CN112068814A (zh) 可执行文件的生成方法、装置、系统及介质
CN110084005A (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