CN116701234B - 应用程序的调试方法、装置、计算机设备和存储介质 - Google Patents
应用程序的调试方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN116701234B CN116701234B CN202310975594.7A CN202310975594A CN116701234B CN 116701234 B CN116701234 B CN 116701234B CN 202310975594 A CN202310975594 A CN 202310975594A CN 116701234 B CN116701234 B CN 116701234B
- Authority
- CN
- China
- Prior art keywords
- plug
- program
- sub
- compiling
- service
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 107
- 238000004590 computer program Methods 0.000 claims abstract description 23
- 230000008569 process Effects 0.000 claims description 51
- 238000009434 installation Methods 0.000 claims description 20
- 230000006870 function Effects 0.000 description 39
- 238000010586 diagram Methods 0.000 description 14
- 238000007726 management method Methods 0.000 description 14
- 238000012795 verification Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 9
- 230000004048 modification Effects 0.000 description 7
- 238000012986 modification Methods 0.000 description 7
- 238000013475 authorization Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3628—Software debugging of optimised code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及一种应用程序的调试法、装置、计算机设备、存储介质和计算机程序产品。该方法可以应用于计算机软件领域,比如应用于对车载软件或电子地图进行调试的场景,该方法包括:对应用程序的更新包进行插件拆分,得到程序插件;依据业务调试频率对程序插件进行业务划分,得到目标业务子插件和目标程序插件;对目标业务子插件和目标程序插件进行编译,得到子插件编译包和程序插件编译包;基于子插件编译包和程序插件编译包对应用程序进行插件更新,得到更新后应用程序;通过更新后应用程序,依次显示子插件编译包和程序插件编译包的业务页面;基于依次显示的业务页面对更新后应用程序进行调试。采用本方法能够提升应用程序的调试效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种应用程序的调试方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
在应用程序开发过程,通常需要对开发出来的应用程序进行频繁的调试,只有在调试成功后才会进行发布。相关技术中,在调试时需要先对应用程序进行整包编译和安装,在整包编译和安装阶段花费的时间都比较长,导致应用程序的调试效率低。
发明内容
基于此,有必要针对上述技术问题,提供一种应用程序的调试方法、装置、计算机设备、计算机可读存储介质和计算机程序产品,能够提升应用程序的调试效率。
第一方面,本申请提供了一种应用程序的调试方法。所述方法包括:
对应用程序的更新包进行插件拆分,得到对应的程序插件;依据业务调试频率对程序插件中的业务子插件进行业务划分,得到目标业务子插件和目标程序插件;目标程序插件是由程序插件中业务调试频率未达到频率条件的业务子插件所组成的;分别对目标业务子插件和目标程序插件进行编译,得到目标业务子插件对应的子插件编译包和目标程序插件对应的程序插件编译包;基于子插件编译包和程序插件编译包对应用程序进行插件更新,得到更新后应用程序;通过更新后应用程序,依次显示子插件编译包对应的业务页面和程序插件编译包对应的业务页面;基于依次显示的业务页面对更新后应用程序进行调试。
第二方面,本申请还提供了一种应用程序的调试装置。所述装置包括:
第一插件拆分模块、第二插件拆分模块、编译模块、插件更新模块、页面显示模块和调试模块,其中:
第一插件拆分模块,用于对应用程序的更新包进行插件拆分,得到对应的程序插件;
第二插件拆分模块,用于依据业务调试频率对程序插件中的业务子插件进行业务划分,得到目标业务子插件和目标程序插件;目标程序插件是由程序插件中业务调试频率未达到频率条件的业务子插件所组成的;
编译模块,用于分别对目标业务子插件和目标程序插件进行编译,得到目标业务子插件对应的子插件编译包和目标程序插件对应的程序插件编译包;
插件更新模块,用于基于子插件编译包和程序插件编译包对应用程序进行插件更新,得到更新后应用程序;
页面显示模块,用于通过更新后应用程序,依次显示子插件编译包对应的业务页面和程序插件编译包对应的业务页面;
调试模块,用于基于依次显示的业务页面对更新后应用程序进行调试。
在一些实施例中,第一插件拆分模块,还用于将应用程序的更新包拆分为各业务子插件;对各业务子插件进行分类,并基于属于同一类别的业务子插件确定对应的程序插件。
在一些实施例中,第二插件拆分模块包括:频率划分单元,用于按照业务调试频率将程序插件中的业务子插件划分为高频业务子插件和低频业务子插件;高频业务子插件的业务调试频率达到频率条件,低频业务子插件的调试频率未达到频率条件;目标业务子插件划分单元,用于基于高频业务子插件,确定目标业务子插件;目标程序插件划分单元,用于基于低频业务子插件,确定目标程序插件。
在一些实施例中,目标业务子插件划分单元,还用于获取高频业务子插件所属的业务页面;高频业务子插件的数量为至少两个;依据属于同一业务页面的高频业务子插件,确定目标业务子插件。
在一些实施例中,编译模块,用于创建目标业务子插件的编译线程和目标程序插件的编译线程;通过目标业务子插件的编译线程,对目标业务子插件进行增量编译,得到目标业务子插件对应的子插件编译包;通过目标程序插件的编译线程,对目标程序插件进行增量编译,得到目标程序插件对应的程序插件编译包。
在一些实施例中,编译模块包括:第一编译单元,用于当目标业务子插件为本地插件时,基于应用程序的基础包对目标业务子插件进行编译,得到目标业务子插件对应的子插件编译包;当目标业务子插件为外部插件时,建立目标业务子插件与新建的第一本地模块之间的依赖关系,基于基础包对与目标业务子插件建立了依赖关系的第一本地模块进行编译,得到目标业务子插件对应的子插件编译包;第二编译单元,用于对目标程序插件进行编译,得到目标程序插件对应的程序插件编译包。
在一些实施例中,第二编译单元,还用于当目标程序插件为本地插件时,基于应用程序的基础包对目标程序插件进行编译,得到目标程序插件对应的程序插件编译包;当目标程序插件为外部插件时,建立目标程序插件与新建的第二本地模块之间的依赖关系,基于基础包对与目标程序插件建立了依赖关系的第二本地模块进行编译,得到目标程序插件对应的程序插件编译包。
在一些实施例中,应用程序的调试装置还包括:插件分类模块,用于当目标业务子插件的代码与基础包的代码属于同一版本控制库时,确定目标业务子插件为本地插件;当目标业务子插件的代码属于外部库时,确定目标业务子插件为外部插件。
在一些实施例中,插件更新模块,还用于将子插件编译包和程序插件编译包存储到安装目录;根据应用程序的基础包、安装目录中的子插件编译包和程序插件编译包,得到更新后应用程序。
在一些实施例中,页面显示模块包括:第一显示单元,用于当子插件编译包中包括动态链接库或程序插件编译包中包括动态链接库时,重新创建应用进程;通过应用进程启动更新后应用程序;通过启动的更新后应用程序,依次显示子插件编译包对应的业务页面和程序插件编译包对应的业务页面。
在一些实施例中,页面显示模块还包括:第二显示单元,用于当子插件编译包中不包括动态链接库且程序插件编译包中不包括动态链接库时,通过后台的应用进程,依次加载子插件编译包和程序插件编译包;依次显示子插件编译包对应的业务页面和程序插件编译包对应的业务页面。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
对应用程序的更新包进行插件拆分,得到对应的程序插件;依据业务调试频率对程序插件中的业务子插件进行业务划分,得到目标业务子插件和目标程序插件;目标程序插件是由程序插件中业务调试频率未达到频率条件的业务子插件所组成的;分别对目标业务子插件和目标程序插件进行编译,得到目标业务子插件对应的子插件编译包和目标程序插件对应的程序插件编译包;基于子插件编译包和程序插件编译包对应用程序进行插件更新,得到更新后应用程序;通过更新后应用程序,依次显示子插件编译包对应的业务页面和程序插件编译包对应的业务页面;基于依次显示的业务页面对更新后应用程序进行调试。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
对应用程序的更新包进行插件拆分,得到对应的程序插件;依据业务调试频率对程序插件中的业务子插件进行业务划分,得到目标业务子插件和目标程序插件;目标程序插件是由程序插件中业务调试频率未达到频率条件的业务子插件所组成的;分别对目标业务子插件和目标程序插件进行编译,得到目标业务子插件对应的子插件编译包和目标程序插件对应的程序插件编译包;基于子插件编译包和程序插件编译包对应用程序进行插件更新,得到更新后应用程序;通过更新后应用程序,依次显示子插件编译包对应的业务页面和程序插件编译包对应的业务页面;基于依次显示的业务页面对更新后应用程序进行调试。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
对应用程序的更新包进行插件拆分,得到对应的程序插件;依据业务调试频率对程序插件中的业务子插件进行业务划分,得到目标业务子插件和目标程序插件;目标程序插件是由程序插件中业务调试频率未达到频率条件的业务子插件所组成的;分别对目标业务子插件和目标程序插件进行编译,得到目标业务子插件对应的子插件编译包和目标程序插件对应的程序插件编译包;基于子插件编译包和程序插件编译包对应用程序进行插件更新,得到更新后应用程序;通过更新后应用程序,依次显示子插件编译包对应的业务页面和程序插件编译包对应的业务页面;基于依次显示的业务页面对更新后应用程序进行调试。
上述应用程序的调试方法、装置、计算机设备、存储介质和计算机程序产品,将应用程序的更新包拆分为程序插件,再根据业务调试频率对程序插件中的业务子插件进行业务划分,得到目标业务子插件和目标程序插件,分别对目标业务子插件和目标程序插件进行编译,得到子插件编译包和程序插件编译包,编译所得的子插件编译包和程序插件编译包无需安装,相较于对整包进行相较于对应用程序的整包进行编译和耗时,会极大地节省编译和安装耗时,提升了调试效率;并且在调试时,只对子插件编译包对应的业务页面和程序插件编译包对应的业务页面进行调试,更新后应用程序中的其他代码更改不会影响对子插件编译包和程序插件编译包的调试,缩小了调试所涉及的范围,提升了调试效率。
附图说明
图1为一个实施例中应用程序的调试方法的应用环境图;
图2为一个实施例中应用程序的调试方法的流程示意图;
图3为另一个实施例中,应用程序的调试方法的示意图;
图4为一个实施例中,对应用程序的更新包进行插件拆分的示意图;
图5为一个实施例中,对支付应用进行插件拆分的示意图;
图6为一个实施例中,根据业务页面拆分得到目标业务子插件的示意图;
图7为一个实施例中,对目标业务子插件和目标程序插件进行编译的示意图;
图8为一个实施例中通过编译线程进行编译的示意图;
图9为一个实施例中,目标业务子插件为本地插件时,编译过程的示意图;
图10为一个实施例中,目标业务子插件为外部插件时,编译过程的示意图;
图11为一个实施例中,显示子插件编译包对应的业务页面和程序插件编译包对应的业务页面的示意图;
图12为一个实施例中,对更新后应用程序进行冷启动或热启动,以根据业务页面进行调试的流程示意图;
图13为另一个实施例中,应用程序的调试方法的示意图;
图14为一个实施例中应用程序的调试装置的结构框图;
图15为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的应用程序的调试方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上;应用程序的调试方法可以通过终端102或服务器104执行,也可以通过终端102和服务器104协同执行。
以应用程序的调试方法通过终端102执行为例;终端102可以对应用程序的更新包进行插件拆分,得到对应的程序插件;终端102可以依据业务调试频率对程序插件中的业务子插件进行业务划分,得到目标业务子插件和目标程序插件;目标程序插件是由程序插件中业务调试频率未达到频率条件的业务子插件所组成的;终端102可以分别对目标业务子插件和目标程序插件进行编译,得到目标业务子插件对应的子插件编译包和目标程序插件对应的程序插件编译包;终端102可以基于子插件编译包和程序插件编译包对应用程序进行插件更新,得到更新后应用程序;终端102可以通过更新后应用程序,依次显示子插件编译包对应的业务页面和程序插件编译包对应的业务页面;终端102还可以基于依次显示的业务页面对更新后应用程序进行调试。
其中,终端102可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调和智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。
服务器104可以是独立的物理服务器,也可以是区块链系统中的服务节点,该区块链系统中的各服务节点之间形成组成点对点网络。
此外,服务器104还可以是多个物理服务器构成的服务器集群,可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
终端102与服务器104之间可以通过蓝牙、USB(Universal Serial Bus,通用串行总线)或者网络等通讯连接方式进行连接,本申请在此不做限制。
在一些实施例中,如图2所示,提供了一种应用程序的调试方法,该方法由图1中的服务器或终端执行,也可以由图1中的服务器和终端协同执行,以该方法由图1中的终端执行为例进行说明,包括以下步骤:
步骤202,对应用程序的更新包进行插件拆分,得到对应的程序插件。
其中,应用程序的更新包,是对应用程序进行更新后所产生的代码包,对应用程序进行更新,可以是对应用程序的代码进行修改。
示例性地,对V1版本的应用程序的部分代码进行修改,得到V2版本的应用程序,更新包也就是V2版本的应用程序的代码包。
程序插件用于实现应用程序的某个功能,应用程序可以包括多个程序插件,分别用于实现不同的功能;程序插件可以独立发布,并且终端获取到应用程序的程序插件后,不需要安装程序插件,在运行时可以通过应用程序的基础包调用程序插件,以实现其功能;应用程序包括的多个程序插件之间不存在依赖关系,使得每个程序插件均可以被单独调用。需要说明的是,在相关技术中,基础包也可以是宿主包。
示例性地,应用程序包括程序插件1、程序插件2和程序插件3,其中,程序插件1可以用于实现扫码功能,程序插件2可以实现识图功能,程序插件3可以实现支付功能。
程序插件可以包括应用程序的一个或多个功能模块,功能模块是应用程序中可以独立发布的最小单元的模块,用于实现应用程序的某个功能。
在一些实施例中,终端获取应用程序的更新包,对更新包中的代码进行拆分,得到主框架和功能模块,基于功能模块进行插件拆分,得到程序插件。
需要说明的是,应用程序可以是基于插件化方式开发所得的应用程序,进而在应用程序更新后,可以将应用程序拆分为主框架和各功能模块的代码。
主框架是应用程序的基础包所包括的代码,在实际应用中,主框架在应用程序最初的开发阶段便会调试稳定,在后续对应用程序进行更新的过程中,几乎不会对主框架进行修改,因此也不需要对主框架进行调试。
主框架可以包括但不限于:实现启动初始化的模块、显示应用程序首页的模块、进行路由转发的模块、加载插件的模块、进行插件版本管理的模块和进行插件通信管理的模块;功能模块包括各功能模块的代码,每一功能模块均可以生成独立插件。
在一些实施例中,基于功能模块进行插件拆分,得到程序插件,可以是将各功能模块合并为一个整体的插件,得到程序插件;示例性地,应用程序的更新包拆分得到的功能模块包括:功能模块1、功能模块2、功能模块3和功能模块4,可以将功能模块1、功能模块2、功能模块3和功能模块4合并为一个程序插件。
基于功能模块进行插件拆分,得到程序插件,也可以是按照实现功能对各功能模块进行分类,将属于同一功能类别的功能模块合并为该类别对应的程序插件;示例性地,对于功能模块1、功能模块2、功能模块3和功能模块4,假设功能模块1和功能模块3属于同一功能类别,则将功能模块1和功能模块3合并为程序插件1,将功能模块2和功能模块4属于同一功能类别,则将功能模块2和功能模块4合并为程序插件2。
基于功能模块进行插件拆分,得到程序插件,还可以是按照业务调试频率对各功能模块进行分类,将属于同一频率区间的功能模块合并为该类别对应的程序插件;示例性地,假设功能模块1、功能模块2、功能模块3和功能模块4均属于同一频率区间,则将功能模块1、功能模块2、功能模块3和功能模块4合并为一个程序插件。
基于功能模块进行插件拆分,得到程序插件,还可以是在各功能模块中确定更新包中更新代码所属的各目标功能模块,将各目标功能模块分别作为程序插件,并且将不存在更新代码的功能模块合并为程序插件;示例性地,假设功能模块1、功能模块2和功能模块3存在更新代码,则将功能模块1、功能模块2和功能模块3合并为程序插件1,功能模块4不存在更新代码,则将功能模块4作为程序插件2。
上述基于功能模块进行插件拆分得到程序插件的方式,仅作为示例,可以理解的是,根据实际需求可以对功能模块进行不同的组合,得到程序插件。
步骤204,依据业务调试频率对程序插件中的业务子插件进行业务划分,得到目标业务子插件和目标程序插件;目标程序插件是由程序插件中业务调试频率未达到频率条件的业务子插件所组成的。
其中,程序插件包括至少两个业务子插件。
在一些实施例中,终端基于功能模块进行插件拆分,得到程序插件,可以是将每一功能模块均作为业务子插件,基于业务子插件进行插件拆分,得到程序插件;也就是说,业务子插件即功能模块。
其中,业务调试频率可以反映对业务子插件进行代码修改的频繁程度;业务调试频率越高,则代码修改越频繁,业务调试频率越低,则代码修改越不频繁;在实际应用中,可以获取业务子插件在应用程序发布之后的代码修改次数,依据代码修改次数确定业务调试频率。
其中,频率条件可以是业务调试频率属于频率区间,频率区间可以根据实际情况设定,本申请实施例不对频率区间的具体取值进行限定;需要说明的是,达到频率条件的业务调试频率,大于未达到频率条件的业务调试频率。
在一些实施例中,终端获取程序插件中各业务子插件的业务调试频率,依据业务调试频率,确定满足频率条的业务子插件,以及不满足频率条件的业务子插件,根据满足频率条件的业务子插件确定目标业务子插件,根据不满足频率条件的业务子插件,确定目标程序插件。
在一些实施例中,终端可以在对照表中获取各业务子插件的业务调试频率;针对应用程序的业务子插件的每次更新,均可以记录在对照表中,以便于后续可以根据对照表获取业务子插件的业务调试频率。
在一些实施例中,终端根据满足频率条件的业务子插件确定目标业务子插件,可以是将每一频率条件的业务子插件均作为目标业务子插件;也可以是按照业务功能对满足频率条件的业务子插件进行分类,根据属于同一类别的、满足频率条件的业务子插件确定目标业务子插件;还可以是按照子频率区间,对频率条件的业务子插件进行进一步的划分,根据每一子频率区间对应的业务子插件确定目标业务子插件,子频率区间是频率区间的部分区间。
示例性地,业务子插件1、业务子插件2和业务子插件3的业务调试频率满足频率条件,可以将业务子插件1、业务子插件2和业务子插件3分别作为目标业务子插件,即得到目标业务子插件1、目标业务子插件2和目标业务子插件3。
示例性地,假设业务子插件1和业务子插件2属于支付功能,业务子插件3属于直播功能,则可以根据业务子插件1和业务子插件2确定目标业务子插件4,将业务子插件3作为目标业务子插件5。
示例性地,假设业务子插件1的调试频率属于第一子频率区间,业务子插件2和业务子插件3属于第二子频率区间,则可以将业务子插件1作为目标业务子插件6,可以根据业务子插件2和业务子插件3确定目标业务子插件7。
在一些实施例中,终端根据不满足频率条件的业务子插件,确定目标程序插件,可以是将不满足频率条件的业务子插件,合并为目标程序插件;由于不满足频率条件的业务子插件的业务调试频率较低,应用程序的更新包中,包括对不满足频率条件的业务子插件进行修改所得的代码的概率也较低,因此将不满足频率条件的业务子插件,合并为目标程序插件,可能也不会影响后续的编译效率。
示例性地,业务子插件4、业务子插件5和业务子插件6的业务调试频率不满足频率条件,可以将业务子插件4、业务子插件5和业务子插件6合并为目标程序插件。
步骤206,分别对目标业务子插件和目标程序插件进行编译,得到目标业务子插件对应的子插件编译包和目标程序插件对应的程序插件编译包。
其中,子插件编译包,是对目标业务子插件进行编译所得的,程序插件编译包,是对目标程序插件进行编译所得的。
在一些实施例中,终端对目标业务子插件进行全量编译,得到子插件编译包,对目标程序插件进行全量编译,得到程序插件编译包。
在一些实施例中,终端可以通过编译线程,依次对目标业务子插件和目标程序插件进行全量编译,得到子插件编译包和程序插件编译包;也可以根据目标业务子插件和目标程序插件的数量创建多个编译进程,根据多个编译进程,同步对目标业务子插件和目标程序插件进行全量编译,得到子插件编译包和程序插件编译包。
在一些实施例中,终端对目标业务子插件进行增量编译,得到子插件编译包,对目标程序插件进行增量编译,得到程序插件编译包。
在一些实施例中,终端可以通过编译线程,依次对目标业务子插件和目标程序插件进行增量编译,得到子插件编译包和程序插件编译包;也可以根据目标业务子插件和目标程序插件的数量创建多个编译进程,根据多个编译进程,同步对目标业务子插件和目标程序插件进行增量编译,得到子插件编译包和程序插件编译包。
步骤208,基于子插件编译包和程序插件编译包对应用程序进行插件更新,得到更新后应用程序。
其中,更新后应用程序包括基础包、子插件编译包和程序插件编译包。
在一些实施例中,步骤208包括:将子插件编译包和程序插件编译包存储到安装目录;根据应用程序的基础包、安装目录中的子插件编译包和程序插件编译包,得到更新后应用程序。
其中,安装目录是基础包所在文件夹的地址;更新后应用程序包括:基础包、子插件编译包和程序插件编译包;在实际应用中,基础包也是宿主包。
在一些实施例中,对于编译得到的子插件编译包和程序插件编译包,终端可以通过adb push命令将子插件编译包和程序插件编译包存储到安装目录,在实际应用中,安装目录可以是SDcard,通过adb push命令将子插件编译包和程序插件编译包保存到SDcard;adb push命令用于将文件push到指定目录,SDcard是终端的外部存储,基础包存储于SDcard中。
需要说明的是,更新后应用程序包括安装目录中的基础包、子插件编译包和程序插件编译包;安装目录中还包括更新之前的应用程序的各插件编译包。
在上述实施例中,将子插件编译包和程序插件编译包保存至安装目录,使得子插件编译包和程序插件编译包与基础包处于同一文件夹下,以便于基础包可以直接调用子插件编译包和程序插件编译包,不需要安装更新后应用程序的完整安装包,也不需要安装子插件编译包和程序插件编译包,提升了调试效率。
步骤210,通过更新后应用程序,依次显示子插件编译包对应的业务页面和程序插件编译包对应的业务页面。
为了便于说明,将子插件编译包对应的业务页面记为第一业务页面,将程序插件编译包对应的业务页面记为第二业务页面;第一业务页面,是基础包调用子插件编译包时显示的页面,第二业务页面,是基础包调用程序插件编译包时显示的页面。
基础包对应的页面,是更新后应用程序的主页面,第一业务页面和第二业务页面可以是更新后应用程序的二级页面;示例性地,更新后应用程序是办事服务应用程序,终端运行基础包可以显示办事服务应用程序的主页面,主页面上的第一业务控件被触发时,基础包调用第一业务控件对应的子插件编译包,以显示第一业务页面,主页面上的第二业务控件被触发时,基础包调用第二业务控件对应的程序插件编译包,以显示第二业务页面。
在一些实施例中,终端响应于针对更新后应用程序的触发操作,根据安装目录中的基础包、子插件编译包和程序插件编译包,启动更新后应用程序,通过基础包调用子插件编译包,以显示第一业务页面,基于第一业务页面进行调试;终端通过基础包调用程序插件编译包,以显示第二业务页面,基于第二业务页面进行调试。
步骤212,基于依次显示的业务页面对更新后应用程序进行调试。
在一些实施例中,终端通过依次显示的业务页面进行交互,根据业务页面的响应情况对业务页面对应子插件编译包或程序插件编译包的代码逻辑进行调试。
示例性地,更新后应用程序是即时通信应用程序,子插件编译包对应的业务功能是交通出行服务,程序插件编译包对应的业务功能是生活缴费服务;终端运行基础包,以显示即时通信应用程序的主页面;终端响应于针对主页面上的第一业务控件的触发操作,通过基础包调用第一业务控件对应的子插件编译包,以显示交通出行服务页面,在交通出行服务页面上进行交互,以调试交通出现服务对应的子插件编译包;终端响应于针对主页面上的第二业务控件的触发操作,通过基础包调用第二业务控件对应的程序插件编译包,以显示生活缴费服务页面,在生活缴费服务页面上进行交互,以调试生活缴费服务对应的程序插件编译包。
示例性地,如图3所示,对应用程序的更新包进行插件拆分,得到程序插件,程序插件包括:业务子插件1、业务子插件2、业务子插件3、业务子插件4、业务子插件5和业务子插件6,依据业务调试频率对各业务子插件进行业务划分,得到目标业务子插件1、目标业务子插件2、目标业务子插件3和目标程序插件,分别对目标业务子插件和目标程序插件进行编译,得到子插件编译包1、子插件编译包2、子插件编译包3和程序插件编译包,根据各子插件编译包和程序插件编译包,确定更新后应用程序;运行更新后应用程序,以依次显示子插件编译包1的业务页面1、子插件编译包2的业务页面2、子插件编译包3的业务页面3和程序插件编译包的业务页面4;根据业务页面1、业务页面2、业务页面3和业务页面4对更新后应用程序进行调试。
在上述应用程序的调试方法中,将应用程序的更新包拆分为程序插件,再根据业务调试频率对程序插件中的业务子插件进行业务划分,得到目标业务子插件和目标程序插件,分别对目标业务子插件和目标程序插件进行编译,得到子插件编译包和程序插件编译包,编译所得的子插件编译包和程序插件编译包无需安装,相较于对整包进行相较于对应用程序的整包进行编译和耗时,会极大地节省编译和安装耗时,提升了调试效率;并且在调试时,只对子插件编译包对应的业务页面和程序插件编译包对应的业务页面进行调试,更新后应用程序中的其他代码更改不会影响对子插件编译包和程序插件编译包的调试,缩小了调试所涉及的范围,提升了调试效率。
在一些实施例中,如图4所示,对应用程序的更新包进行插件拆分,得到对应的程序插件,包括:步骤401,将应用程序的更新包拆分为各业务子插件;步骤402,对各业务子插件进行分类,并基于属于同一类别的业务子插件确定对应的程序插件。
其中,类别是根据业务子插件所实现的功能所确定的,类别可以包括但不限于:应用业务类别、公共业务类别和基础类别。
在一些实施例中,终端获取应用程序的更新包,对更新包中的代码进行拆分,得到主框架和各功能模块,将各功能模块均作为业务子插件,获取各业务子插件各自对应的类别,依据各业务子插件各自对应的类别对各业务子插件进行分类,得到各类别分别对应的业务子插件集合,将业务子插件集合中的业务子插件合并,得到各类别分别对应的程序插件。
在一些实施例中,终端依据各业务子插件各自对应的类别对各业务子插件进行分类,得到属于应用业务类别的第一业务子插件集合、属于公共业务类别的第二业务子插件集合和属于基础类别的第三业务子插件集合;将第一业务子插件集合中的各业务子插件合并,得到应用业务程序插件,将第二业务子插件集合中的各业务子插件合并,得到公共业务程序插件,将第三业务子插件集合中的各业务子插件合并,得到基础程序插件。
示例性地,如图5所示,应用程序为支付应用,将支付应用的更新包拆分为主框架和各功能模块,主框架包括插件接口层和框架层。
其中,插件接口层包括但不限于:插件版本管理模块、插件兼容型管理模型、插件依赖管理模块和插件通信管理模块,框架层包括但不限于:启动初始化模块、应用首页管理模块、路由转发模块、插件加载模块和插件生效模块。
各功能模块包括但不限于:运营模块、授权模块、刷脸识别模块、扫码识别模块、验证模块、支付模块、离线识别模块、摄像头管理模块、性能模块、视频播放模块、语音模块、日志模块和网络管理模块;将各功能模块均作为业务子插件,得到运营子插件、授权子插件、刷脸识别子插件、扫码识别子插件、验证子插件、支付子插件、离线识别子插件、摄像头管理子插件、性能子插件、视频播放子插件、语音子插件、日志子插件和网络管理子插件。
按照各业务子插件所实现的功能,将各业务子插件划分为属于应用业务类别的第一业务子插件集合、属于公共业务类别的第二业务子插件集合和属于基础类别的第三业务子插件集合;第一业务子插件集合包括:运营子插件、授权子插件、刷脸识别子插件、扫码识别子插件、验证子插件、支付子插件,第二业务子插件集合包括:离线识别子插件、摄像头管理子插件、性能子插件,第三业务子插件集合包括:视频播放子插件、语音子插件、日志子插件和网络管理子插件。
将第一业务子插件集合包括的各子插件合并,得到应用业务程序插件,将第二业务子插件集合包括的各子插件合并,得到公共业务程序插件,将第三业务子插件集合包括的各子插件合并,得到基础程序插件。
在上述实施例中,根据属于同一类别的业务子插件,确定程序插件,在应用程序更新时,通常会针对某一类别的业务进行更新,按照类别确定程序插件,使得在编译和调试时,也可以针对某一类别的程序插件进行编译和调试,不会被其他类别的程序插件影响,提升了调试效率。
在一些实施例中,依据业务调试频率对程序插件中的业务子插件进行业务划分,得到目标业务子插件和目标程序插件,包括:按照业务调试频率将程序插件中的业务子插件划分为高频业务子插件和低频业务子插件;高频业务子插件的业务调试频率达到频率条件,低频业务子插件的调试频率未达到频率条件;基于高频业务子插件,确定目标业务子插件;基于低频业务子插件,确定目标程序插件。
其中,高频业务子插件的业务调试频率,高于低频业务子插件的业务调试频率;高频业务子插件可以是经常进行更新的子插件,比如,高频业务子插件用于实现交易服务,交易服务经常更换促销活动,因此交易服务对应的业务子插件,需要对应促销活动的更换而更新;低频业务子插件可以是不常更新的子插件,比如,低频业务子插件用于实现账号登录功能,通常账号登录方式不需要频繁修改。
在一些实施例中,终端根据频率条件和各业务子插件的业务调试频率,将程序插件包括的各业务子插件划分为高频业务子插件和低频业务子插件,可以将高频业务子插件合并得到目标业务子插件,将低频业务子插件合并得到目标程序插件。
示例性地,应用业务程序插件包括:运营子插件、授权子插件、刷脸识别子插件、扫码识别子插件、验证子插件和支付子插件,根据频率条件和各子插件的业务调试频率,确定高频业务子插件包括:刷脸识别子插件、扫码识别子插件、验证子插件和支付子插件,低频业务子插件包括:运营子插件和授权子插件;将刷脸识别子插件、扫码识别子插件、验证子插件和支付子插件合并得到目标业务子插件,将运营子插件和授权子插件合并得到目标程序插件。
在上述实施例中,根据业务调试频率确定程序插件中的高频业务子插件和低频业务子插件,目标业务子插件包括高频业务子插件,目标程序插件包括低频业务子插件;在应用程序更新时,通常会针对高频业务子插件进行更新,使得在编译和调试时,也可以针对包括高频业务子插件的目标业务子插件进行编译和调试,不会被低频业务子插件影响,提升了调试效率。
在一些实施例中,基于高频业务子插件,确定目标业务子插件,包括:获取高频业务子插件所属的业务页面;高频业务子插件的数量为至少两个;依据属于同一业务页面的高频业务子插件,确定目标业务子插件。
其中,业务页面是应用程序中显示的页面。
在一些实施例中,终端可以获取高频业务子插件的页面标识,页面标识可以用于反映业务页面,将页面标识相同的高频业务子插件,作为属于同一业务页面的高频业务子插件,将属于同一业务页面的高频业务子插件合并,得到该业务页面对应的目标业务子插件。
在一些实施例中,获取高频业务子插件所属的业务页面,包括:当高频业务子插件的类别为属于应用业务类别时,获取应用业务类别的高频业务子插件所属的业务页面。也就是说,当高频业务子插件属于应用业务类别时,可以对应用业务类别的高频业务子插件进行粒度更细的划分。
示例性地,如图6所示,应用业务类别的高频业务子插件包括:刷脸识别子插件、扫码识别子插件、验证子插件和支付子插件,其中,刷脸识别子插件和扫码识别子插件属于支付首页,验证子插件属于支付验证页面,支付子插件属于支付结果页面;将刷脸识别子插件和扫码识别子插件合并,得到支付首页对应的目标业务子插件,将验证子插件作为支付验证页面对应的目标业务子插件,将支付子插件作为支付结果页面对应的目标业务子插件。
在上述实施例中,按照高频业务子插件所属的业务页面,对高频业务子插件进行粒度更细的划分,根据属于同一业务页面的高频业务子插件,确定目标业务子插件,以便于后续对于目标业务子插件进行编译和调试,可以是针对业务页面对应的插件进行编译和调试,使得编译和调试更具有针对性,提升了调试效率。
在一些实施例中,如图7所示,分别对目标业务子插件和目标程序插件进行编译,得到目标业务子插件对应的子插件编译包和目标程序插件对应的程序插件编译包,包括:步骤701,创建目标业务子插件的编译线程和目标程序插件的编译线程;步骤702,通过目标业务子插件的编译线程,对目标业务子插件进行增量编译,得到目标业务子插件对应的子插件编译包;步骤703,通过目标程序插件的编译线程,对目标程序插件进行增量编译,得到目标程序插件对应的程序插件编译包。
其中,编译线程,用于对插件进行编译。
在一些实施例中,终端可以获取目标业务子插件和目标程序插件的总数量,并创建总数量个编译线程,将目标业务子插件和目标程序插件分配至每一编译线程;通过目标业务子插件的编译线程,对目标业务子插件进行增量编译,得到目标业务子插件对应的子插件编译包;通过目标程序插件的编译线程,对目标程序插件进行增量编译,得到目标程序插件对应的程序插件编译包,并且,总数量个编译线程同步执行编译。
示例性地,如图8所示,目标业务子插件分别为目标业务子插件1、目标业务子插件2和目标业务子插件3,终端创建目标业务子插件1的编译线程1,创建目标业务子插件2的编译线程2,创建目标业务子插件3的编译线程3,创建目标程序插件的编译线程4;通过编译线程1、编译线程2、编译线程3和编译线程4,分别对目标业务子插件1、目标业务子插件2、目标业务子插件3和目标程序插件同步进行增量编译,得到子插件编译包1、子插件编译包2、子插件编译包3和程序插件编译包。
在上述实施例中,通过目标业务子插件和目标程序插件各自对应的编译线程进行增量编译,进而只对存在代码修改的插件进行编译,并且各编译线程同步执行编译,提升了编译效率。
在一些实施例中,分别对目标业务子插件和目标程序插件进行编译,得到目标业务子插件对应的子插件编译包和目标程序插件对应的程序插件编译包,包括:当目标业务子插件为本地插件时,基于应用程序的基础包对目标业务子插件进行编译,得到目标业务子插件对应的子插件编译包;当目标业务子插件为外部插件时,建立目标业务子插件与新建的第一本地模块之间的依赖关系,基于基础包对与目标业务子插件建立了依赖关系的第一本地模块进行编译,得到目标业务子插件对应的子插件编译包;对目标程序插件进行编译,得到目标程序插件对应的程序插件编译包。
其中,本地插件指的是,本地插件的代码与基础包均存在于同一版本控制库(git库);外部插件指的是,外部插件的代码存在部分不与基础包存在与同一git库。
在一些实施例中,应用程序的调试方法还包括:当目标业务子插件的代码与基础包的代码属于同一版本控制库时,确定目标业务子插件为本地插件;当目标业务子插件的代码属于外部库时,确定目标业务子插件为外部插件。
其中,本地插件的代码与基础包的代码属于同一git库,本地插件与主工程属于同一工程。
其中,外部插件的代码与基础包的代码不属于同一git库,外部插件的代码属于外部库,外部库可以是另一个独立的git库,也可以是远程maven库,还可以是其他代码库,maven是一个项目管理和整合工具。
在一些实施例中,如图9所示,当目标业务子插件的代码与基础包的代码属于同一版本控制库时,确定目标业务子插件为本地插件,根据应用程序的基础包,利用该目标业务子插件对应的编译进程,通过项目构建工具(Gradle)的动态功能模块(Dynamic Feature)对该目标业务子插件进行增量编译,得到该目标业务子插件对应的子插件编译包。
在一些实施例中,如图10所示,当目标业务子插件的代码属于外部库时,终端新建第一本地模块,第一本地模块与基础包处于同一主工程中,终端将该目标业务子插件复制到第一本地模块,以建议该目标业务子插件与第一本地模块之间的依赖关系,终端根据应用程序的基础包,利用该目标业务子插件对应的编译进程,通过Gradle 的DynamicFeature对与目标业务子插件建立了依赖关系的第一本地模块进行增量编译,得到该目标业务子插件对应的子插件编译包。
需要说明的是,终端将该目标业务子插件复制到第一本地模块,以建议该目标业务子插件与第一本地模块之间的依赖关系,也可以理解为,创建了该外部插件对应的本地插件。
在一些实施例中,对目标程序插件进行编译,得到目标程序插件对应的程序插件编译包,包括:当目标程序插件为本地插件时,基于应用程序的基础包对目标程序插件进行编译,得到目标程序插件对应的程序插件编译包;当目标程序插件为外部插件时,建立目标程序插件与新建的第二本地模块之间的依赖关系,基于基础包对与目标程序插件建立了依赖关系的第二本地模块进行编译,得到目标程序插件对应的程序插件编译包。
在一些实施例中,应用程序的调试方法还包括:当目标程序插件的代码与基础包的代码属于同一版本控制库时,确定目标程序插件为本地插件;当目标程序插件存在部分代码属于外部库时,确定目标程序插件为外部插件。
在一些实施例中,当目标程序插件的代码与基础包的代码属于同一版本控制库时,确定目标程序插件为本地插件,根据应用程序的基础包,利用该目标程序插件对应的编译进程,通过动态功能模块(Dynamic Feature)对该目标程序插件进行增量编译,得到该目标程序插件对应的程序编译包。
在一些实施例中,当目标程序插件的代码属于外部库时,终端新建第二本地模块,第二本地模块与基础包处于同一主工程中,终端将该目标业务子插件复制到第二本地模块,以建议该目标程序插件与第二本地模块之间的依赖关系,终端根据应用程序的基础包,利用该目标业务子插件对应的编译进程,通过Dynamic Feat建立了依赖关系的第二本地模块进行增量编译,得到该目标业务子插件对应的子插件编译包。
在上述实施例中,当目标业务子插件为本地插件或外部插件时,通过不同的方式对目标业务子插件进行编译,当目标程序插件为本地插件或外部插件时,通过不同的方式对目标程序插件进行编译,使得应用程序的调试方法不局限于本地插件或外部插件,提升了适用性。
在一些实施例中,通过更新后应用程序,依次显示子插件编译包对应的业务页面和程序插件编译包对应的业务页面,包括:当子插件编译包中包括动态链接库或程序插件编译包中包括动态链接库时,重新创建应用进程;通过应用进程启动更新后应用程序;通过启动的更新后应用程序,依次显示子插件编译包对应的业务页面和程序插件编译包对应的业务页面。
其中,动态链接库即so.库,在实际应用中,开发应用时,若Java的代码无法满足实现需求,则可以用C/C++实现后生成so.库,加载调用so.库以实现需求。
在一些实施例中,终端可以查看子插件编译包和程序编译包中是否包含so.库,当插件编译包或程序编译包中的至少一个包含so.库时,结束更新后应用程序在后台的进程,重新创建应用进程,通过重新创建的应用进程重新启动更新后应用程序,以使得子插件编译包和程序编译包生效。
通过重新创建的应用进程重新启动更新后应用程序,是冷启动过程;在实际应用中,冷启动过程可以是终端响应于针对更新后应用程序图标的触发操作,结束存在于后台的应用进程,并重新创建应用进程,通过重新重建的应用进程重新启动更新后应用程序。
重新启动更新后应用程序完成后,终端显示更新后应用程序的主页面,终端响应于针对主页面中第一业务控件的触发操作,通过基础包调用第一业务控件对应的子插件编译包,以显示该子插件编译包对应的业务页面。
终端响应于针对主页面中第二业务控件的触发操作,通过基础包调用第二业务控件对应的程序插件编译包,以显示该程序插件编译包对应的业务页面。
在一些实施例中,依次显示子插件编译包对应的业务页面和程序插件编译包对应的业务页面,可以是按照预设顺序依次触发各业务控件,进而终端依次显示各业务控件对应的编译包(子插件编译包或程序插件编译包)的业务页面;预设顺序是子插件编译包和程序插件编译包的先后顺序,可以根据实际需求设定。
在上述实施例中,当子插件编译包或程序编译包中的至少一个包括动态链接库时,可以通过重新创建的应用进程重新启动更新后应用程序,在重启更新后应用程序的过程中,使得子插件编译包和程序编译包生效,在重启更新后应用程序完成后,可以显示子插件编译包对应的业务页面和程序编译包对应的业务页面。
在一些实施例中,如图11所示,通过更新后应用程序,依次显示子插件编译包对应的业务页面和程序插件编译包对应的业务页面,包括:步骤1101,当子插件编译包中不包括动态链接库且程序插件编译包中不包括动态链接库时,通过后台的应用进程,依次加载子插件编译包和程序插件编译包;步骤1102,依次显示子插件编译包对应的业务页面和程序插件编译包对应的业务页面。
其中,当子插件编译包中不包括so.库时,表示子插件编译包均是通过Java代码实现,当程序插件编译包中不包括so.库时,表示程序插件编译包均是通过Java代码实现,在子插件编译包和程序插件编译包均是通过Java代码实现时,可以热启动子插件编译包和程序插件编译包。
在一些实施例中,终端可以查看子插件编译包和程序编译包中是否包含so.库,当子插件编译包和程序编译包均不包含so.库时,终端利用存在于后台的应用进程,通过基础包依次加载子插件编译包和程序插件编译包,以显示子插件编译包对应的业务页面和程序插件编译包对应的业务页面。
利用存在于后台的应用进程,通过基础包依次加载子插件编译包和程序插件编译包,是热启动过程;在实际应用中,热启动过程可以是终端响应于针对更新后应用程序图标的触发操作,将存在于后台的应用进程恢复至前台,以显示更新后应用程序的主页面。
终端完成更新后应用程序的热启动之后,可以通过类加载(Classloader)实现插件的热部署生效;在实际应用中,对于基础包的Classloader链路关系,将Classloader链路关系中的父加载器(parent)替换为编译包(子插件编译包和程序插件编译包)的Classloader,将编译包的Classloader设置为BootClassLoader,以实现热部署生效;BootClassLoader是用于加载框架层级的类加载器。
终端响应于针对主页面中第一业务控件的触发操作,通过基础包调用第一业务控件对应的子插件编译包,显示该子插件编译包对应的业务页面,终端响应于针对主页面中第二业务控件的触发操作,通过基础包调用第二业务控件的程序插件编译包,显示程序插件编译包对应的业务页面。
在一些实施例中,通过后台的应用进程,依次加载子插件编译包和程序插件编译包,可以是按照预设顺序依次触发各业务控件,进而终端通过后台的应用进程,由基础包依次调用各业务控件各自对应的编译包(子插件编译包或程序插件编译包),以显示各业务控件各自对应的业务页面。
示例性地,如图12所示,终端确定子插件编译包和程序插件编译包是否均不存在动态链接库,若是,则利用存在于后台的应用进程,热启动更新后应用程序,通过类加载器,实现子插件编译包和程序插件编译包的热部署生效;若否,则通过重新创建的应用进程启动更新后应用程序;通过基础包调用子插件编译包,以显示子插件编译包对应的业务页面,根据子插件编译包对应的业务页面进行调试。
在上述实施例中,当子插件编译包和程序编译包均不包括动态链接库时,可以通过存在于后台的应用进程热启动更新后应用程序,不需要重新启动更新后应用程序,降低了启动应用程序所需的耗时,提升了调试效率。
在一些实施例中,如图13所示,应用程序的调试方法包括:
步骤1301,终端将应用程序的更新包拆分为各业务子插件,对各业务子插件进行分类,并基于属于同一类别的业务子插件确定对应的程序插件;
步骤1302,终端按照业务调试频率将程序插件中的业务子插件划分为高频业务子插件和低频业务子插件;高频业务子插件的业务调试频率达到频率条件,低频业务子插件的调试频率未达到频率条件;
步骤1303,终端获取高频业务子插件所属的业务页面;高频业务子插件的数量为至少两个;依据属于同一业务页面的高频业务子插件,确定目标业务子插件;基于低频业务子插件,确定目标程序插件;
步骤1304,终端创建目标业务子插件的编译线程和目标程序插件的编译线程;
步骤1305A,当目标业务子插件的代码与基础包的代码属于同一版本控制库时,终端确定目标业务子插件为本地插件;通过目标业务子插件的编译线程,基于应用程序的基础包对目标业务子插件进行增量编译,得到目标业务子插件对应的子插件编译包;
步骤1305B,当目标业务子插件的代码属于外部库时,终端确定目标业务子插件为外部插件;建立目标业务子插件与新建的第一本地模块之间的依赖关系,通过目标业务子插件的编译线程,基于基础包对与目标业务子插件建立了依赖关系的第一本地模块进行增量编译,得到目标业务子插件对应的子插件编译包;
步骤1306A,当目标程序插件为本地插件时,终端通过目标程序插件的编译线程,基于应用程序的基础包对目标程序插件进行增量编译,得到目标程序插件对应的程序插件编译包;
步骤1306B,当目标程序插件为外部插件时,终端建立目标程序插件与新建的第二本地模块之间的依赖关系,通过目标程序插件的编译线程,基于基础包对与目标程序插件建立了依赖关系的第二本地模块进行增量编译,得到目标程序插件对应的程序插件编译包;
步骤1307,终端将子插件编译包和程序插件编译包存储到安装目录;根据应用程序的基础包、安装目录中的子插件编译包和程序插件编译包,得到更新后应用程序;
步骤1308A,当子插件编译包中包括动态链接库或程序插件编译包中包括动态链接库时,终端重新创建应用进程;通过应用进程启动更新后应用程序;通过启动的更新后应用程序,依次显示子插件编译包对应的业务页面和程序插件编译包对应的业务页面;
步骤1308B,当子插件编译包中不包括动态链接库且程序插件编译包中不包括动态链接库时,终端通过后台的应用进程,依次加载子插件编译包和程序插件编译包;依次显示子插件编译包对应的业务页面和程序插件编译包对应的业务页面;
步骤1309,终端基于依次显示的业务页面对更新后应用程序进行调试。
在实际应用中,本申请实施例不需要重新安装更新后应用程序,对更新后应用程序的进行整包调试的方式,需要重新安装更新后应用程序,本申请实施例在子插件编译包和程序插件编译包不包括so.库时,不需要重启进程,而对更新后应用程序的进行整包调试的方式,需要重启进程,通过本申请实施例中应用程序的调试方法,对更新后应用程序进行调试,所需的时长一般小于3分钟,而对更新后应用程序的进行整包编译、安装和调试,可能需要20分钟;此外,本申请实施例,根据业务页面对更新后应用程序进行调试,其调试范围是子插件编译包和程序插件编译包,更新后应用程序的其他模块,不会影响子插件编译包和程序插件编译包的调试结果,而对更新后应用程序的进行整包调试的方案,其调试范围是完整的更新后应用程序,针对某一模块的调试,可能会被其他模块影响,容易导致无法准确定位问题代码,调试效果较差;由此可知,本申请实施例极大地提升了编译效率和调试效果。
在上述应用程序的调试方法中,将应用程序的更新包拆分为程序插件,再根据业务调试频率对程序插件中的业务子插件进行业务划分,得到目标业务子插件和目标程序插件,分别对目标业务子插件和目标程序插件进行编译,得到子插件编译包和程序插件编译包,编译所得的子插件编译包和程序插件编译包无需安装,相较于对整包进行相较于对应用程序的整包进行编译和耗时,会极大地节省编译和安装耗时,提升了调试效率;并且在调试时,只对子插件编译包对应的业务页面和程序插件编译包对应的业务页面进行调试,更新后应用程序中的其他代码更改不会影响对子插件编译包和程序插件编译包的调试,缩小了调试所涉及的范围,提升了调试效率。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的应用程序的调试方法的应用程序的调试装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个应用程序的调试装置实施例中的具体限定可以参见上文中对于应用程序的调试方法的限定,在此不再赘述。
在一个实施例中,如图14所示,提供了一种应用程序的调试装置,包括:第一插件拆分模块1401、第二插件拆分模块1402、编译模块1403、插件更新模块1404、页面显示模块1405和调试模块1406,其中:
第一插件拆分模块1401,用于对应用程序的更新包进行插件拆分,得到对应的程序插件;
第二插件拆分模块1402,用于依据业务调试频率对程序插件中的业务子插件进行业务划分,得到目标业务子插件和目标程序插件;目标程序插件是由程序插件中业务调试频率未达到频率条件的业务子插件所组成的;
编译模块1403,用于分别对目标业务子插件和目标程序插件进行编译,得到目标业务子插件对应的子插件编译包和目标程序插件对应的程序插件编译包;
插件更新模块1404,用于基于子插件编译包和程序插件编译包对应用程序进行插件更新,得到更新后应用程序;
页面显示模块1405,用于通过更新后应用程序,依次显示子插件编译包对应的业务页面和程序插件编译包对应的业务页面;
调试模块1406,用于基于依次显示的业务页面对更新后应用程序进行调试。
上述应用程序的调试装置中,将应用程序的更新包拆分为程序插件,再根据业务调试频率对程序插件中的业务子插件进行业务划分,得到目标业务子插件和目标程序插件,分别对目标业务子插件和目标程序插件进行编译,得到子插件编译包和程序插件编译包,编译所得的子插件编译包和程序插件编译包无需安装,相较于对整包进行相较于对应用程序的整包进行编译和耗时,会极大地节省编译和安装耗时,提升了调试效率;并且在调试时,只对子插件编译包对应的业务页面和程序插件编译包对应的业务页面进行调试,更新后应用程序中的其他代码更改不会影响对子插件编译包和程序插件编译包的调试,缩小了调试所涉及的范围,提升了调试效率。
在一些实施例中,第一插件拆分模块1401,还用于将应用程序的更新包拆分为各业务子插件;对各业务子插件进行分类,并基于属于同一类别的业务子插件确定对应的程序插件。
在一些实施例中,第二插件拆分模块1402包括:
频率划分单元,用于按照业务调试频率将程序插件中的业务子插件划分为高频业务子插件和低频业务子插件;高频业务子插件的业务调试频率达到频率条件,低频业务子插件的调试频率未达到频率条件;
目标业务子插件划分单元,用于基于高频业务子插件,确定目标业务子插件;
目标程序插件划分单元,用于基于低频业务子插件,确定目标程序插件。
在一些实施例中,目标业务子插件划分单元,还用于获取高频业务子插件所属的业务页面;高频业务子插件的数量为至少两个;依据属于同一业务页面的高频业务子插件,确定目标业务子插件。
在一些实施例中,编译模块1403,用于创建目标业务子插件的编译线程和目标程序插件的编译线程;通过目标业务子插件的编译线程,对目标业务子插件进行增量编译,得到目标业务子插件对应的子插件编译包;通过目标程序插件的编译线程,对目标程序插件进行增量编译,得到目标程序插件对应的程序插件编译包。
在一些实施例中,编译模块1403包括:
第一编译单元,用于当目标业务子插件为本地插件时,基于应用程序的基础包对目标业务子插件进行编译,得到目标业务子插件对应的子插件编译包;当目标业务子插件为外部插件时,建立目标业务子插件与新建的第一本地模块之间的依赖关系,基于基础包对与目标业务子插件建立了依赖关系的第一本地模块进行编译,得到目标业务子插件对应的子插件编译包;
第二编译单元,用于对目标程序插件进行编译,得到目标程序插件对应的程序插件编译包。
在一些实施例中,第二编译单元,还用于当目标程序插件为本地插件时,基于应用程序的基础包对目标程序插件进行编译,得到目标程序插件对应的程序插件编译包;当目标程序插件为外部插件时,建立目标程序插件与新建的第二本地模块之间的依赖关系,基于基础包对与目标程序插件建立了依赖关系的第二本地模块进行编译,得到目标程序插件对应的程序插件编译包。
在一些实施例中,应用程序的调试装置还包括:插件分类模块,用于当目标业务子插件的代码与基础包的代码属于同一版本控制库时,确定目标业务子插件为本地插件;当目标业务子插件的代码属于外部库时,确定目标业务子插件为外部插件。
在一些实施例中,插件更新模块1404,还用于将子插件编译包和程序插件编译包存储到安装目录;根据应用程序的基础包、安装目录中的子插件编译包和程序插件编译包,得到更新后应用程序。
在一些实施例中,页面显示模块1405包括:第一显示单元,用于当子插件编译包中包括动态链接库或程序插件编译包中包括动态链接库时,重新创建应用进程;通过应用进程启动更新后应用程序;通过启动的更新后应用程序,依次显示子插件编译包对应的业务页面和程序插件编译包对应的业务页面。
在一些实施例中,页面显示模块1405还包括:第二显示单元,用于当子插件编译包中不包括动态链接库且程序插件编译包中不包括动态链接库时,通过后台的应用进程,依次加载子插件编译包和程序插件编译包;依次显示子插件编译包对应的业务页面和程序插件编译包对应的业务页面。
上述应用程序的调试装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图15所示。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种应用程序的调试方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置,显示屏可以是液晶显示屏或电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图15中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
对应用程序的更新包进行插件拆分,得到对应的程序插件;依据业务调试频率对程序插件中的业务子插件进行业务划分,得到目标业务子插件和目标程序插件;目标程序插件是由程序插件中业务调试频率未达到频率条件的业务子插件所组成的;分别对目标业务子插件和目标程序插件进行编译,得到目标业务子插件对应的子插件编译包和目标程序插件对应的程序插件编译包;基于子插件编译包和程序插件编译包对应用程序进行插件更新,得到更新后应用程序;通过更新后应用程序,依次显示子插件编译包对应的业务页面和程序插件编译包对应的业务页面;基于依次显示的业务页面对更新后应用程序进行调试。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
对应用程序的更新包进行插件拆分,得到对应的程序插件;依据业务调试频率对程序插件中的业务子插件进行业务划分,得到目标业务子插件和目标程序插件;目标程序插件是由程序插件中业务调试频率未达到频率条件的业务子插件所组成的;分别对目标业务子插件和目标程序插件进行编译,得到目标业务子插件对应的子插件编译包和目标程序插件对应的程序插件编译包;基于子插件编译包和程序插件编译包对应用程序进行插件更新,得到更新后应用程序;通过更新后应用程序,依次显示子插件编译包对应的业务页面和程序插件编译包对应的业务页面;基于依次显示的业务页面对更新后应用程序进行调试。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
对应用程序的更新包进行插件拆分,得到对应的程序插件;依据业务调试频率对程序插件中的业务子插件进行业务划分,得到目标业务子插件和目标程序插件;目标程序插件是由程序插件中业务调试频率未达到频率条件的业务子插件所组成的;分别对目标业务子插件和目标程序插件进行编译,得到目标业务子插件对应的子插件编译包和目标程序插件对应的程序插件编译包;基于子插件编译包和程序插件编译包对应用程序进行插件更新,得到更新后应用程序;通过更新后应用程序,依次显示子插件编译包对应的业务页面和程序插件编译包对应的业务页面;基于依次显示的业务页面对更新后应用程序进行调试。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (24)
1.一种应用程序的调试方法,其特征在于,所述方法包括:
对应用程序的更新包进行插件拆分,得到对应的程序插件;
依据业务调试频率对所述程序插件中的业务子插件进行业务划分,得到目标业务子插件和目标程序插件;所述目标程序插件是由所述程序插件中所述业务调试频率未达到频率条件的业务子插件所组成的;所述目标业务子插件是由所述程序插件中所述业务调试频率达到所述频率条件的业务子插件所组成的;
分别对所述目标业务子插件和所述目标程序插件进行编译,得到所述目标业务子插件对应的子插件编译包和所述目标程序插件对应的程序插件编译包;
基于所述子插件编译包和所述程序插件编译包对所述应用程序进行插件更新,得到更新后应用程序;
通过所述更新后应用程序,依次显示所述子插件编译包对应的业务页面和所述程序插件编译包对应的业务页面;
基于依次显示的所述业务页面对所述更新后应用程序进行调试。
2.根据权利要求1所述的方法,其特征在于,所述对应用程序的更新包进行插件拆分,得到对应的程序插件,包括:
将应用程序的更新包拆分为各业务子插件;
对所述各业务子插件进行分类,并基于属于同一类别的业务子插件确定对应的程序插件。
3.根据权利要求1所述的方法,其特征在于,所述依据业务调试频率对所述程序插件中的业务子插件进行业务划分,得到目标业务子插件和目标程序插件,包括:
按照业务调试频率将所述程序插件中的业务子插件划分为高频业务子插件和低频业务子插件;所述高频业务子插件的业务调试频率达到所述频率条件,所述低频业务子插件的调试频率未达到所述频率条件;
基于所述高频业务子插件,确定目标业务子插件;
基于所述低频业务子插件,确定目标程序插件。
4.根据权利要求3所述的方法,其特征在于,所述基于所述高频业务子插件,确定目标业务子插件,包括:
获取所述高频业务子插件所属的业务页面;所述高频业务子插件的数量为至少两个;
依据属于同一所述业务页面的所述高频业务子插件,确定目标业务子插件。
5.根据权利要求1所述的方法,其特征在于,所述分别对所述目标业务子插件和所述目标程序插件进行编译,得到所述目标业务子插件对应的子插件编译包和所述目标程序插件对应的程序插件编译包,包括:
创建所述目标业务子插件的编译线程和所述目标程序插件的编译线程;
通过所述目标业务子插件的编译线程,对所述目标业务子插件进行增量编译,得到所述目标业务子插件对应的子插件编译包;
通过所述目标程序插件的编译线程,对所述目标程序插件进行增量编译,得到所述目标程序插件对应的程序插件编译包。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述分别对所述目标业务子插件和所述目标程序插件进行编译,得到所述目标业务子插件对应的子插件编译包和所述目标程序插件对应的程序插件编译包,包括:
当所述目标业务子插件为本地插件时,基于所述应用程序的基础包对所述目标业务子插件进行编译,得到所述目标业务子插件对应的子插件编译包;
当所述目标业务子插件为外部插件时,建立所述目标业务子插件与新建的第一本地模块之间的依赖关系,基于所述基础包对与所述目标业务子插件建立了依赖关系的所述第一本地模块进行编译,得到所述目标业务子插件对应的子插件编译包;
对所述目标程序插件进行编译,得到所述目标程序插件对应的程序插件编译包。
7.根据权利要求6所述的方法,其特征在于,所述对所述目标程序插件进行编译,得到所述目标程序插件对应的程序插件编译包,包括:
当所述目标程序插件为本地插件时,基于所述应用程序的基础包对所述目标程序插件进行编译,得到所述目标程序插件对应的程序插件编译包;
当所述目标程序插件为外部插件时,建立所述目标程序插件与新建的第二本地模块之间的依赖关系,基于所述基础包对与所述目标程序插件建立了依赖关系的所述第二本地模块进行编译,得到所述目标程序插件对应的程序插件编译包。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
当所述目标业务子插件的代码与所述基础包的代码属于同一版本控制库时,确定所述目标业务子插件为本地插件;
当所述目标业务子插件的代码属于外部库时,确定所述目标业务子插件为外部插件。
9.根据权利要求1所述的方法,其特征在于,所述基于所述子插件编译包和所述程序插件编译包对所述应用程序进行插件更新,得到更新后应用程序,包括:
将所述子插件编译包和所述程序插件编译包存储到安装目录;
根据所述应用程序的基础包、所述安装目录中的所述子插件编译包和所述程序插件编译包,得到更新后应用程序。
10.根据权利要求1-5、9中任一项所述的方法,其特征在于,所述通过所述更新后应用程序,依次显示所述子插件编译包对应的业务页面和所述程序插件编译包对应的业务页面,包括:
当所述子插件编译包中包括动态链接库或所述程序插件编译包中包括所述动态链接库时,重新创建应用进程;
通过所述应用进程启动所述更新后应用程序;
通过启动的所述更新后应用程序,依次显示所述子插件编译包对应的业务页面和所述程序插件编译包对应的业务页面。
11.根据权利要求1-5、9中任一项所述的方法,其特征在于,所述通过所述更新后应用程序,依次显示所述子插件编译包对应的业务页面和所述程序插件编译包对应的业务页面,包括:
当所述子插件编译包中不包括动态链接库且所述程序插件编译包中不包括所述动态链接库时,通过后台的应用进程,依次加载所述子插件编译包和所述程序插件编译包;
依次显示所述子插件编译包对应的业务页面和所述程序插件编译包对应的业务页面。
12.一种应用程序的调试装置,其特征在于,所述装置包括:
第一插件拆分模块,用于对应用程序的更新包进行插件拆分,得到对应的程序插件;
第二插件拆分模块,用于依据业务调试频率对所述程序插件中的业务子插件进行业务划分,得到目标业务子插件和目标程序插件;所述目标程序插件是由所述程序插件中所述业务调试频率未达到频率条件的业务子插件所组成的;所述目标业务子插件是由所述程序插件中所述业务调试频率达到所述频率条件的业务子插件所组成的;
编译模块,用于分别对所述目标业务子插件和所述目标程序插件进行编译,得到所述目标业务子插件对应的子插件编译包和所述目标程序插件对应的程序插件编译包;
插件更新模块,用于基于所述子插件编译包和所述程序插件编译包对所述应用程序进行插件更新,得到更新后应用程序;
页面显示模块,用于通过所述更新后应用程序,依次显示所述子插件编译包对应的业务页面和所述程序插件编译包对应的业务页面;
调试模块,用于基于依次显示的所述业务页面对所述更新后应用程序进行调试。
13.根据权利要求12所述的装置,其特征在于,所述第一插件拆分模块,还用于将应用程序的更新包拆分为各业务子插件;对所述各业务子插件进行分类,并基于属于同一类别的业务子插件确定对应的程序插件。
14.根据权利要求12所述的装置,其特征在于,所述第一插件拆分模块包括:
频率划分单元,按照业务调试频率将所述程序插件中的业务子插件划分为高频业务子插件和低频业务子插件;所述高频业务子插件的业务调试频率达到所述频率条件,所述低频业务子插件的调试频率未达到所述频率条件;
目标业务子插件划分单元,用于基于所述高频业务子插件,确定目标业务子插件;
目标程序插件划分单元,用于基于所述低频业务子插件,确定目标程序插件。
15.根据权利要求14所述的装置,其特征在于,所述目标业务子插件划分单元,用于获取所述高频业务子插件所属的业务页面;所述高频业务子插件的数量为至少两个;依据属于同一所述业务页面的所述高频业务子插件,确定目标业务子插件。
16.根据权利要求12所述的装置,其特征在于,所述编译模块,还用于创建所述目标业务子插件的编译线程和所述目标程序插件的编译线程;通过所述目标业务子插件的编译线程,对所述目标业务子插件进行增量编译,得到所述目标业务子插件对应的子插件编译包;通过所述目标程序插件的编译线程,对所述目标程序插件进行增量编译,得到所述目标程序插件对应的程序插件编译包。
17.根据权利要求12至16中任一项所述的装置,其特征在于,所述编译模块包括:
第一编译单元,用于当所述目标业务子插件为本地插件时,基于所述应用程序的基础包对所述目标业务子插件进行编译,得到所述目标业务子插件对应的子插件编译包;当所述目标业务子插件为外部插件时,建立所述目标业务子插件与新建的第一本地模块之间的依赖关系,基于所述基础包对与所述目标业务子插件建立了依赖关系的所述第一本地模块进行编译,得到所述目标业务子插件对应的子插件编译包;
第二编译单元,用于对所述目标程序插件进行编译,得到所述目标程序插件对应的程序插件编译包。
18.根据权利要求17所述的装置,其特征在于,所述第二编译单元,还用于当所述目标程序插件为本地插件时,基于所述应用程序的基础包对所述目标程序插件进行编译,得到所述目标程序插件对应的程序插件编译包;当所述目标程序插件为外部插件时,建立所述目标程序插件与新建的第二本地模块之间的依赖关系,基于所述基础包对与所述目标程序插件建立了依赖关系的所述第二本地模块进行编译,得到所述目标程序插件对应的程序插件编译包。
19.根据权利要求17所述的装置,其特征在于,所述装置还包括:插件分类模块,用于当所述目标业务子插件的代码与所述基础包的代码属于同一版本控制库时,确定所述目标业务子插件为本地插件;当所述目标业务子插件的代码属于外部库时,确定所述目标业务子插件为外部插件。
20.根据权利要求12所述的装置,其特征在于,所述插件更新模块,还用于将所述子插件编译包和所述程序插件编译包存储到安装目录;根据所述应用程序的基础包、所述安装目录中的所述子插件编译包和所述程序插件编译包,得到更新后应用程序。
21.根据权利要求12-16、20中任一项所述的装置,其特征在于,所述页面显示模块包括:
第一显示单元,用于当所述子插件编译包中包括动态链接库或所述程序插件编译包中包括所述动态链接库时,重新创建应用进程;通过所述应用进程启动所述更新后应用程序;通过启动的所述更新后应用程序,依次显示所述子插件编译包对应的业务页面和所述程序插件编译包对应的业务页面。
22.根据权利要求12-16、20中任一项所述的装置,其特征在于,所述页面显示模块还包括:
第二显示单元,用于当所述子插件编译包中不包括动态链接库且所述程序插件编译包中不包括所述动态链接库时,通过后台的应用进程,依次加载所述子插件编译包和所述程序插件编译包;依次显示所述子插件编译包对应的业务页面和所述程序插件编译包对应的业务页面。
23.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至11中任一项所述的方法的步骤。
24.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310975594.7A CN116701234B (zh) | 2023-08-04 | 2023-08-04 | 应用程序的调试方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310975594.7A CN116701234B (zh) | 2023-08-04 | 2023-08-04 | 应用程序的调试方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116701234A CN116701234A (zh) | 2023-09-05 |
CN116701234B true CN116701234B (zh) | 2024-02-02 |
Family
ID=87839624
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310975594.7A Active CN116701234B (zh) | 2023-08-04 | 2023-08-04 | 应用程序的调试方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116701234B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107168749A (zh) * | 2017-05-31 | 2017-09-15 | 腾讯科技(深圳)有限公司 | 一种编译方法、装置、设备和计算机可读存储介质 |
CN108984224A (zh) * | 2018-06-13 | 2018-12-11 | 中国平安人寿保险股份有限公司 | 一种插件管理方法、计算机可读存储介质及终端设备 |
CN111459494A (zh) * | 2020-03-27 | 2020-07-28 | 北京五八信息技术有限公司 | 一种代码处理方法及装置 |
CN113791809A (zh) * | 2021-11-11 | 2021-12-14 | 腾讯科技(深圳)有限公司 | 应用异常处理方法、装置以及计算机可读存储介质 |
CN114756456A (zh) * | 2022-04-02 | 2022-07-15 | 广州文远知行科技有限公司 | 一种持续集成方法、装置以及计算机可读存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6058498B2 (ja) * | 2013-07-26 | 2017-01-11 | 株式会社日立製作所 | コンパイル方法、プログラム及びコンパイル装置 |
-
2023
- 2023-08-04 CN CN202310975594.7A patent/CN116701234B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107168749A (zh) * | 2017-05-31 | 2017-09-15 | 腾讯科技(深圳)有限公司 | 一种编译方法、装置、设备和计算机可读存储介质 |
CN108984224A (zh) * | 2018-06-13 | 2018-12-11 | 中国平安人寿保险股份有限公司 | 一种插件管理方法、计算机可读存储介质及终端设备 |
CN111459494A (zh) * | 2020-03-27 | 2020-07-28 | 北京五八信息技术有限公司 | 一种代码处理方法及装置 |
CN113791809A (zh) * | 2021-11-11 | 2021-12-14 | 腾讯科技(深圳)有限公司 | 应用异常处理方法、装置以及计算机可读存储介质 |
CN114756456A (zh) * | 2022-04-02 | 2022-07-15 | 广州文远知行科技有限公司 | 一种持续集成方法、装置以及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116701234A (zh) | 2023-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111061475B (zh) | 软件代码生成方法、装置、计算机设备和存储介质 | |
US8893272B2 (en) | Method and device for recombining runtime instruction | |
CN109669692B (zh) | 源码共享方法、服务器、计算机可读存储介质及系统 | |
CN107330014B (zh) | 一种数据表的创建方法与设备 | |
CN110908734A (zh) | 基于插件化的应用组合方法、装置、终端设备及存储介质 | |
CN106557307B (zh) | 业务数据的处理方法及处理系统 | |
CN110442424A (zh) | 一种实现虚拟机管理平台动态配置规则的方法和装置 | |
US20120023064A1 (en) | Parameter Value Binding for Mobile Business Objects | |
CN113296891A (zh) | 基于平台的多场景知识图谱处理方法及装置 | |
CN116701234B (zh) | 应用程序的调试方法、装置、计算机设备和存储介质 | |
US8615744B2 (en) | Methods and system for managing assets in programming code translation | |
US10019244B1 (en) | Interpreting program code using a symbol table | |
CN113741868B (zh) | 业务计算任务处理方法、装置、计算机设备和存储介质 | |
CN111737964A (zh) | 表格动态处理方法、设备及介质 | |
CN111552510A (zh) | 文件构建方法及装置、电子设备、计算机可读存储介质 | |
CN104484198A (zh) | 一种安装应用程序的方法和装置 | |
CN113722538B (zh) | 一种界面动态渲染方法及装置 | |
CN113805878B (zh) | 插件工程化方法、装置、计算机系统和介质 | |
CN114924809B (zh) | 一种基于dex文件类的流式微服务加载验证方法 | |
CN117032779A (zh) | 应用版本切换方法、装置、计算机设备和存储介质 | |
US20240152387A1 (en) | Method, apparatus, electronic device and storage medium for application launch | |
CN114936046A (zh) | Web服务公共组件的拓展方法、装置、电子设备及存储介质 | |
CN118170463A (zh) | 对象调试方法、装置、计算机设备、存储介质和程序产品 | |
CN115422080A (zh) | 测试用例集生成方法、装置、计算机设备和存储介质 | |
CN116258597A (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 |