CN110795114B - 应用程序安装包容量的监测方法、装置、电子设备及存储介质 - Google Patents

应用程序安装包容量的监测方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN110795114B
CN110795114B CN201911038102.1A CN201911038102A CN110795114B CN 110795114 B CN110795114 B CN 110795114B CN 201911038102 A CN201911038102 A CN 201911038102A CN 110795114 B CN110795114 B CN 110795114B
Authority
CN
China
Prior art keywords
module
tested
modules
installation package
component library
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
CN201911038102.1A
Other languages
English (en)
Other versions
CN110795114A (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 CN201911038102.1A priority Critical patent/CN110795114B/zh
Publication of CN110795114A publication Critical patent/CN110795114A/zh
Application granted granted Critical
Publication of CN110795114B publication Critical patent/CN110795114B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • 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)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供了一种应用程序安装包容量的监测方法、装置、电子设备及存储介质,其中,在应用程序安装包容量的监测方法中,首先,获取所述应用程序的各待测模块,作为监测对象,然后,对待测模块逐个执行代码量统计以监测每个待测模块的容量。当所述待测模块为中间层模块时,需要将所述中间层模块替换为拷贝模块后再统计所述拷贝模块的代码量,作为所述中间层模块的代码量。采用本发明实施例提供的应用程序安装包容量的监测方法,可以准确统计应用程序安装包中每一个模块的代码量,进而严格监控安装包的大小。

Description

应用程序安装包容量的监测方法、装置、电子设备及存储介质
技术领域
本申请涉及应用软件开发领域,尤其涉及一种应用程序安装包容量的监测方法、装置、电子设备及存储介质。
背景技术
应用程序(Application,App)一般包含多个模块,并且通过各个模块之间的相互引用实现用户所需的功能,例如分享模块通过引用图片模块、视频模块、文字模块实现分享功能,同时,分享模块还被聊天模块引用,令分享模块与聊天模块之间形成依赖关系。随着用户和开发人员需求的改变,App需要不断更新,开发人员需要向App下发对应的安装包,以使该App完成更新。安装包中对应包含App的全部模块,在App的更新过程中,如果安装包过大,则会令用户设备产生较大的存储压力,同时耗费大量的更新时间,而且会消耗大量的移动流量,令用户产生不满,因此,需要严格控制安装包的大小。
安装包的大小即为安装包内全部模块的代码量的加和,每个模块可能与其它模块之间存在上层引用关系和/或下层引用关系,其中,上层引用关系所对应的代码量属于引用该模块引用的上层模块,下层引用关系所对应的代码量属于该模块,因此,模块的大小应为引用其它模块所对应的全部引用代码的数量以及该模块本身的基础代码的数量的加和,由于在App的更新过程中,通常每个模块中的引用基础代码的变化非常微小,因此,可以将其对安装包的大小的影响忽略。只需要严格监控各个模块对于其它模块的引用代码的数量,就可以有效控制模块的大小,进而有效控制安装包的大小。通常,可以采用对比更新后安装包的大小与更新前安装包的大小,从而获知更新后安装包增大的数值。
但是使用上述方法只能获知整体安装包的增大变化,不能准确知道每一个模块的大小变化,从而无法通过改进模块而缩小安装包。
发明内容
本申请提供了一种应用程序安装包容量的监测方法、装置、电子设备及存储介质,以解决现有安装包容量统计方法中无法准确统计安装包中各模块容量的问题。
第一方面,本发明实施例提供了一种应用程序安装包容量的监测方法,所述方法包括:
获取所述应用程序的各待测模块;
对所述待测模块逐个执行代码量统计以监测每个待测模块的容量,其中,当所述待测模块为中间层模块时,将所述中间层模块替换为拷贝模块后再统计所述拷贝模块的代码量,作为所述中间层模块的代码量;所述拷贝模块为删除了所述中间层模块的下层引用关系得到的模块。
在本发明实施例第一方面一种可能的实现方式中,所述对待测模块逐个执行代码量统计以监测每个待测模块的容量之前包括:
识别各所述待测模块中的下层引用代码和数据接口;
如果所述待测模块中只存在下层引用代码,则划分所述待测模块为上层模块;
如果所述待测模块中同时存在下层引用代码和数据接口,则划分所述待测模块为中间层模块;
如果所述待测模块中只存在数据接口,则划分所述待测模块为下层模块。
在本发明实施例第一方面一种可能的实现方式中,所述对待测模块逐个执行代码量统计以监测每个待测模块的容量之前包括:
识别所述应用程序中各组件库的引用协议;
如果所述组件库的引用协议为引用下层组件库,则划分所述组件库为第一类组件库;
如果所述组件库的引用协议包括引用下层组件库和引用上层组件库,则划分所述组件库为第二类组件库;
如果所述组件库的引用协议为引用上层组件库,则划分所述组件库为第三类组件库;
确定所述第一类组件库中的待测模块为上层模块,确定所述第二类组件库中的待测模块为中间层模块,确定所述第三类组件库中的待测模块为下层模块。
在本发明实施例第一方面一种可能的实现方式中,所述对待测模块逐个执行代码量统计以监测每个待测模块的容量包括:
当所述待测模块为上层模块时,打包所述应用程序的全部待测模块,得到第一安装包的代码量;
从全部待测模块中删除所述上层模块,得到删除后应用程序;
打包所述删除后应用程序中的全部待测模块,得到第二安装包的代码量;
计算所述第一安装包的代码量与所述第二安装包的代码量的差值,得到所述上层模块的代码量。
在本发明实施例第一方面一种可能的实现方式中,所述将中间层模块替换为拷贝模块后再统计所述拷贝模块的代码量包括:
识别所述中间层模块中的下层引用代码;
删除所述中间层模块中的所述下层引用代码,得到拷贝模块;
利用所述拷贝模块替换所述中间层模块。
在本发明实施例第一方面一种可能的实现方式中,所述对待测模块逐个执行代码量统计以监测每个待测模块的容量包括:
当所述待测模块为中间层模块时,打包所述应用程序的全部待测模块,得到第一安装包的代码量;
在将所述中间层模块替换为拷贝模块之后,打包所述应用程序的全部待测模块,得到第三安装包的代码量;
计算所述第一安装包的代码量与所述第三安装包的代码量的差值,得到所述中间层模块的代码量。
在本发明实施例第一方面一种可能的实现方式中,所述对待测模块逐个执行代码量统计以监测每个待测模块的容量包括:
当所述待测模块为下层模块时,打包所述应用程序的全部待测模块,得到第一安装包的代码量;
确定所述应用程序中除所述下层模块以外的非目标待测模块;
打包全部所述非目标待测模块,得到第四安装包的代码量;
计算所述第一安装包的代码量与所述第四安装包的代码量的差值,得到所述下层模块的代码量。
第二方面,本发明实施例提供了一种模块大小的统计装置,所述装置包括:
获取单元,用于获取所述应用程序的各待测模块;
统计单元,用于对所述待测模块逐个执行代码量统计以监测每个待测模块的容量,其中,所述统计单元包括替换单元,所述替换单元用于当所述待测模块为中间层模块时,将所述中间层模块替换为拷贝模块后再统计所述拷贝模块的代码量,作为所述中间层模块的代码量;所述拷贝模块为删除了所述中间层模块的下层引用关系得到的模块。
在本发明实施例第二方面一种可能的实现方式中,所述装置还包括设置于所述获取单元与所述统计单元之间的划分单元,所述划分单元包括:
接口识别单元,用于识别各所述待测模块中的下层引用代码和数据接口;
第一划分单元,用于如果所述待测模块中只存在下层引用代码,则划分所述待测模块为上层模块;
第二划分单元,用于如果所述待测模块中同时存在下层引用代码和数据接口,则划分所述待测模块为中间层模块;
第三划分单元,用于如果所述待测模块中只存在数据接口,则划分所述待测模块为下层模块。
在本发明实施例第二方面一种可能的实现方式中,所述装置还包括设置于所述获取单元与所述统计单元之间的划分单元,所述划分单元包括:
协议识别单元,用于识别所述应用程序中各组件库的引用协议;
第四划分单元,用于如果所述组件库的引用协议为引用下层组件库,则划分所述组件库为第一类组件库;
第五划分单元,用于如果所述组件库的引用协议包括引用下层组件库和引用上层组件库,则划分所述组件库为第二类组件库;
第六划分单元,用于如果所述组件库的引用协议为引用上层组件库,则划分所述组件库为第三类组件库;
模块划分单元,用于确定所述第一类组件库中的待测模块为上层模块,确定所述第二类组件库中的待测模块为中间层模块,确定所述第三类组件库中的待测模块为下层模块。
在本发明实施例第二方面一种可能的实现方式中,所述统计单元包括:
第一打包单元,用于打包所述应用程序的全部待测模块,得到第一安装包的代码量;
第一删除单元,用于从全部待测模块中删除所述上层模块,得到删除后应用程序;
第二打包单元,用于打包所述删除后应用程序中的全部待测模块,得到第二安装包的代码量;
第一计算单元,用于计算所述第一安装包的代码量与所述第二安装包的代码量的差值,得到所述上层模块的代码量。
在本发明实施例第二方面一种可能的实现方式中,所述替换单元包括:
引用代码识别单元,用于识别所述中间层模块中的下层引用代码;
第二删除单元,用于删除所述中间层模块中的所述下层引用代码,得到拷贝模块;
子替换单元,用于利用所述拷贝模块替换所述中间层模块。
在本发明实施例第二方面一种可能的实现方式中,所述统计单元包括:
第一打包单元,用于打包所述应用程序的全部待测模块,得到第一安装包的代码量;
第三打包单元,用于在将所述中间层模块替换为拷贝模块之后,打包所述应用程序的全部待测模块,得到第三安装包的代码量;
第二计算单元,用于计算所述第一安装包的代码量与所述第三安装包的代码量的差值,得到所述中间层模块的代码量。
在本发明实施例第二方面一种可能的实现方式中,所述统计单元包括:
第一打包单元,用于打包所述应用程序的全部待测模块,得到第一安装包的代码量;
模块确定单元,用于确定所述应用程序中除所述下层模块以外的非目标待测模块;
第四打包单元,用于打包全部所述非目标待测模块,得到第四安装包的代码量;
第三计算单元,用于计算所述第一安装包的代码量与所述第四安装包的代码量的差值,得到所述下层模块的代码量。
第三方面,本发明实施例提供了一种电子设备,所述电子设备包括:
处理器,以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行应用程序安装包容量的监测方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行应用程序安装包容量的监测方法。
由以上技术可知,本申请提供了一种应用程序安装包容量的监测方法、装置、电子设备及存储介质,其中,在监测方法中,首先,获取所述应用程序的各待测模块,作为监测对象,然后,对待测模块逐个执行代码量统计以监测每个待测模块的容量。当所述待测模块为中间层模块时,需要将所述中间层模块替换为拷贝模块后再统计所述拷贝模块的代码量,作为所述中间层模块的代码量。采用本发明实施例提供的应用程序安装包容量的监测方法,可以准确统计应用程序安装包中每一个模块的代码量,进而严格监测安装包的大小。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种应用程序安装包容量的监测方法的流程图;
图2为模块依赖关系示意图;
图3为本发明实施例提供的一种划分模块种类的流程图;
图4为本发明实施例提供的另一种划分模块种类的流程图;
图5为组件库依赖关系示意图;
图6为本发明实施例提供的上层模块大小的统计方法的流程图;
图7为本发明实施例提供的一种替换中间层模块为拷贝模块的流程图;
图8为本发明实施例提供的中间层模块大小的统计方法的流程图;
图9为本发明实施例提供的下层模块大小的统计方法的流程图;
图10为本发明实施例提供的一种应用程序安装包容量的监测装置的结构示意图;
图11为本发明实施例提供的一种应用程序安装包容量的监测装置实施例二的结构示意图;
图12为本发明实施例提供的一种应用程序安装包容量的监测装置实施例三的结构示意图;
图13为本发明实施例提供的一种应用程序安装包容量的监测装置实施例四的结构示意图;
图14为本发明实施例提供的一种应用程序安装包容量的监测装置实施例五的结构示意图;
图15为本发明实施例提供的一种应用程序安装包容量的监测装置实施例六的结构示意图;
图16为本发明实施例提供的一种应用程序安装包容量的监测装置实施例七的结构示意图;
图17为本发明实施例提供的电子设备的硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,为本发明实施例提供的一种应用程序安装包容量的监测方法的流程图。该方法可以应用于服务器、平台、PC(个人电脑)、平板电脑等可操作终端中。
如图1所示,所述方法包括:
S1、获取所述应用程序的各待测模块。
首先,在应用程序中识别并获取各个模块,然后,将这些模块作为容量的监测对象,即待测模块。
S2、对所述待测模块逐个执行代码量统计以监测每个待测模块的容量,其中,当所述待测模块为中间层模块时,将所述中间层模块替换为拷贝模块后再统计所述拷贝模块的代码量,作为所述中间层模块的代码量;所述拷贝模块为删除了所述中间层模块的下层引用关系得到的模块。
对S1中获取到的待测模块逐个进行代码量统计,其中,执行顺序可以按照在各待测模块中随机且不重复抽取的动作决定,也可以按照预设顺序,例如以交叉统计各类待测模块的顺序,或者统计完毕某一类待测模块之后,再统计另一类待测模块的顺序等。
其中,由于不同类别的待测模块所对应的模块间关系、代码、模块结构等不同,因此,不同类别的待测模块所对应的统计方法也不同,当统计某一待测模块时,只有准确判断该待测模块的类别,才能够采取适合的容量统计方法,才能够准确统计待测模块的容量。为了解决上述问题,在对待测模块逐个执行代码量统计之前,可以首先将各待测模块执行划分类别。
如图2所示,在应用程序(Application,App)的建立过程中,各个模块之间通过相互引用实现各自的功能,模块的建立具有自上而下的顺序性,即位于上方的模块为了实现自身的功能,需要引用一些子模块,这些子模块通常建立于所述位于上方的模块的下方,此时,将这些位于下方的模块的建立过程定义为引用位于上方的模块,其中,可以将位于上方的模块定义为上层模块,将位于下方的模块定义为下层模块。对应于下层模块引用于上层模块的关系,上层模块对下层模块的引用对于下层模块相当于上层引用关系。通过上述关系可知,引用虽然上层引用关系是针对下层模块,但是实现上层引用关系的上层引用代码是存储于上层模块中的,而不属于下层模块。而在下层模块上只存在用于完成上层引用动作的数据接口,可见,该数据接口可以代表下层模块具有上层引用关系。但是,在App的更新过程中,无论上层模块对下层模块的引用关系如何变化,即无论下层模块所对应的上层引用关系如何变化,也不会影响属于下层模块的代码量,因此,引用下层模块所对应的上层引用关系对更新后的下层模块的大小的影响可以忽略不计,相应的,对应用程序安装包的大小的影响也可以忽略不计。
对应于上述过程,App中的模块为了实现相应的功能,需要引用App中位于该模块下方的模块,即引用下层模块。因此,就产生了位于上方的模块对位于下方的模块的下层引用关系。存在下层引用关系的模块中会对应存在实现下层引用关系的下层引用代码,在App更新的过程中,实际更新的为各个模块与其下层模块之间的引用关系,因此,模块中的下层引用代码会对更新后的安装包的大小产生较大影响,需要严格统计各个模块中的下层引用代码的数量。
同时,App中的模块还包括对应的基础代码,例如模块的名称代码、建立时间代码、存储路径代码等,通常,各个模块的基础代码在App的更新过程中几乎不会发生变化,因此,这部分代码对更新后的安装包的大小的影响也可以忽略不计。
App中的各个模块由于对应的功能不同,因此与其它模块之间可以只存在下层引用关系,或者只存在上层引用关系,或者同时存在下层引用关系和上层引用关系。
需要注意的是,划分App中的模块的时间节点可以在App更新之前,也可以在App更新之后。
具体地,可以根据下述方法分辨App中各模块与其它模块之间的关系。
在一种可实现的方法中,如图3所示,所述方法包括:
S111、识别各所述待测模块中的下层引用代码和数据接口;
S112、如果所述待测模块中只存在下层引用代码,则划分所述待测模块为上层模块;
S113、如果所述待测模块中同时存在下层引用代码和数据接口,则划分所述待测模块为中间层模块;
S114、如果所述待测模块中只存在数据接口,则划分所述待测模块为下层模块。
各个模块之间引用的具体过程为,目标模块通过引用另一/多个模块上的数据接口,从而通过该数据接口将另一/多个模块的相关代码引用至目标模块,其中,数据接口对应设置于被引用的下层模块上,可以通过识别数据接口所携带的标识,从而识别模块中的数据接口。同时,引用下层模块的上层模块中会对应存在实现下层引用的下层引用代码。
可见,只具有下层引用关系的模块中只对应带有下层引用代码,而没有数据接口;只具有上层引用关系的模块中只对应带有数据接口,而没有下层引用代码;而同时具有上层引用关系和下层引用关系的模块中也对应同时带有下层引用代码和数据接口。
因此,可以通过识别各个待测模块中是否存在下层引用代码和数据接口,准确划分各个待测模块与其它模块之间的关系,进而准确划分各个待测模块的所属类别。
在另一种可实现方式中,如图4所示,所述方法包括:
S121、识别所述应用程序中各组件库的引用协议;
S122、如果所述组件库的引用协议为引用下层组件库,则划分所述组件库为第一类组件库;
S123、如果所述组件库的引用协议包括引用下层组件库和引用上层组件库,则划分所述组件库为第二类组件库;
S124、如果所述组件库的引用协议为引用上层组件库,则划分所述组件库为第三类组件库;
S125、确定所述第一类组件库中的待测模块为上层模块,确定所述第二类组件库中的待测模块为中间层模块,确定所述第三类组件库中的待测模块为下层模块。
如图5所示,通常App在建立的过程中,为了保证对各个模块的有效管理,会根据所要实现的业务功能,首先建立各个组件库,例如,实现主要业务的主业务库,实现中间业务的业务公用库和与App对应的个性化库,实现App对应公司的业务的无线极SDK库和公司级库,实现基础功能的基础库等。然后,在各个组件库中创建相应的模块。因此,模块之间的引用关系与组件库之间的引用关系一致。
组件库之间的引用关系通常用引用协议表示,组件库按照自上而下的顺序建立,其中,如果目标组件库的建立依赖于该目标组件库的上层组件库,则该目标组件库与所述上层组件库之间具有引用协议为引用上层组件库;如果目标组件库的建立无需依赖于上层组件库,仅需要引用所述目标组件库的下层组件库,则该目标组件库与所述下层组件库之间具有引用协议为引用下层组件库;如果目标组件库的建立需要依赖于所述目标组件库的上层组件库,同时又需要引用所述目标组件库的下层组件库,则该目标组件库既具有引用协议为引用上层组件库,又具有引用协议为引用下层组件库。可见,可以根据组件库所具有的不同的引用协议,将各个组件库划分至不同的类别。
由于模块之间的引用关系与组件库之间的引用关系一致,因此,引用协议为引用下层组件库的组件库中的模块与其它组件库中的模块之间仅具有下层引用关系;引用协议为引用上层组件库的组件库中的模块与其它组件库中的模块之间仅具有上层引用关系;引用协议包括引用下层组件库和引用上层组件库的组件库中的模块与其它组件库中的模块之间既存在上层引用关系,又存在下层引用关系。从而可以通过划分App中的组件库,进而准确划分各个待测模块至相应的类别。
在划分App中的全部待测模块之后,逐个统计每一个模块的代码量。在本发明实施例所提供的方案中,所统计的待测模块可以为上层模块、中间层模块、下层模块中的任意一个。
具体地,可以随机统计任意一个待测模块的代码量,也可以根据历史更新数据或者开发人员的需求,按照预设顺序逐个统计待测模块的代码量。
需要注意的是,在本发明实施例中所定义的待测模块,可以为App中的全部模块,也可以为人为设定的App中需要统计代码量的部分模块。
由上述可知,不同类别的待测模块具有不同的代码属性,因此,可以针对不同类别的待测模块使用不同的代码量统计方法。
具体地,当待测模块为上层模块时,可以如图6所示,统计该上层模块的代码量,所述方法包括:
S211、打包所述应用程序的全部待测模块,得到第一安装包的代码量;
S212、从全部待测模块中删除所述上层模块,得到删除后应用程序;
S213、打包所述删除后应用程序中的全部待测模块,得到第二安装包的代码量;
S214、计算所述第一安装包的代码量与所述第二安装包的代码量的差值,得到所述上层模块的代码量。
由上述可知,与App中其它待测模块之间只存在下层引用关系的上层模块中只包含与下层引用关系相关的下层引用代码,以及该上层模块的基础代码。由于下层引用代码和基础代码属于该上层模块,因此,即使直接删除该上层模块,也不会对其下层模块造成影响,可以维持其它待测模块的正常运行,进而保证后续代码量统计过程的正常展开。由于在App的建立过程中,代码都是写入特定的区域,而这个区域通常就是指模块,因此可以通过直接删除整个区域,也就是该上层模块,实现删除该上层模块对应的全部代码的效果。
需要注意的是,虽然在删除该上层模块之后,会同时暴露被该上层模块引用的下层模块上设置的数据接口。但是,在对于本申请中所提供的上层模块的删除过程,无需考虑同时删除这些数据接口,因为,这些数据接口只有在该上层模块存在且产生下层引用动作时才会对相应的下层模块产生影响。因此,在该上层模块被删除之后,这些数据接口也不会继续对相应的下层模块产生影响,可以忽略对这些数据接口的删除动作,直接删除该上层模块,以删除该上层模块所对应的全部代码,而不会对其它模块造成影响,进而可以有效降低统计上层模块的代码量的工作量。
通过打包App的全部待测模块对应的代码,可以得到第一安装包的代码量,再通过打包删除该上层模块之后得到的删除后App中全部待测模块,可以得到第二安装包的代码量,通过上文可知,删除的该上层模块等于该上层模块对应的代码量,因此,通过计算第一安装包的代码量与第二安装包的代码量的差值,就可以准确获得该上层模块的代码量。
通过上述统计上层模块的代码量的方法,可以逐个统计App中的上层模块。
如果统计中间层模块的代码量,由于中间层模块与其它待测模块既存在上层引用关系,又存在下层引用关系,因此,如果直接删除中间层模块,通过做差的方式获得该中间层模块的代码量,会直接暴露该中间层模块上对应于上层模块的数据接口。此时,与这些数据接口对应的上层模块仍然会保持通过这些数据接口引用已经被删除的中间层模块,然而,由于该中间层模块已经不存在,会导致这个引用过程发生报错,影响上层模块的正常运行,进而影响整个App的正常运行,甚至影响统计该中间层模块的代码量的正常工作。此时,即使同时将暴露的数据接口删除,不仅会增加中间层模块代码量统计工作的工作量,同时,上层模块仍然无法真正实现对下层模块的引用动作,令上层模块无法正常运行。
为了解决上述问题,在统计中间层模块的代码量时,首先,将该中间层模块替换为拷贝模块,通过统计该拷贝模块的代码量作为该中间层模块的代码量。
具体地,参见图7,为一种替换中间层模块为拷贝模块的流程图,所述方法包括:
S301、识别所述中间层模块中的下层引用代码;
S302、删除所述中间层模块中的所述下层引用代码,得到拷贝模块;
S303、利用所述拷贝模块替换所述中间层模块。
由上文可知,中间层模块包含对下层模块的下层引用关系,因此,中间层模块中包含实现该下层引用关系的下层引用代码。这些下层引用代码近似等于中间层模块的代码量,由于删除这些下层引用代码之后,不会影响下层模块的正常运行,但是,如果同时删除上层应用关系,则会令上层模块无法正常工作。因此,在本申请实施例中采用直接删除下层引用代码,但是保留上层引用关系的方式,构建一个拷贝模块。
这样,拷贝模块上仍然携带与上层模块对应的数据接口,上层模块仍然可以通过这些数据接口执行引用动作,同时,拷贝模块仍以模块的形式存在,可以接受数据接口的引用动作,令上层模块的引用动作生效,从而保证上层模块的正常运行。而且,拷贝模块中删除的下层引用代码近似等于该中间层模块的代码量,此时,可以通过利用所述拷贝模块,统计所述中间层模块的代码量。
具体地,如图8所示,所述方法包括:
S304、打包所述应用程序的全部待测模块,得到第一安装包的代码量;
S305、在将所述中间层模块替换为拷贝模块之后,打包所述应用程序的全部待测模块,得到第三安装包的代码量;
S306、计算所述第一安装包的代码量与所述第三安装包的代码量的差值,得到所述中间层模块的代码量。
可见,通过本申请实施例提供的统计中间层模块的代码量的方法,可以在不影响其它模块正常运行的基础上,准确统计中间层模块的代码量。
进一步地,通过上述统计中间层模块的代码量的方法,可以逐个统计App中每一个中间层模块的代码量。
如果统计下层模块的代码量,由上文可知,下层模块中只包含对上层模块的上层引用关系,由上文可知,这些上层引用关系对应的上层引用代码属于对应的上层模块,而不属于该下层模块,因此,下层模块可以看作是独立存在的一类模块,其代码量不会受其它模块的影响。但是不能通过直接删除下层模块,然后做差得到下层模块的代码量。由上文可知,下层模块上带有与上层模块对应的数据接口,如果直接删除该下层模块,会导致上层模块无法正常运行。但是,由于下层模块的代码量不受其它模块的影响,因此,可以通过从App的全部待测模块中剔除该下层模块以外其余模块的代码,得到该下层模块的代码量。
具体地,如图9所示,所述方法包括:
S221、打包所述应用程序的全部待测模块,得到第一安装包的代码量;
S222、确定所述应用程序中除所述下层模块以外的非目标模块;
S223、打包全部所述非目标待测模块,得到第四安装包的代码量;
S224、计算所述第一安装包的代码总量与所述第四安装包的代码总量的差值,得到所述下层模块的代码量。
可见,通过本申请实施例提供的统计目标第三类模块的代码量的方法,可以在不影响其它模块正常运行的基础上,准确统计第三类模块的代码量。
进一步地,通过上述统计下层模块的代码量的方法,可以循环统计App中每一个下层模块的代码量。
通过本申请所提供的应用程序安装包容量的监测方法,能够准确统计App中每个待测模块的代码量,从而有效监控每个模块的健康增长,并准确调整异常增长的模块,以提高应用程序安装包的质量。
图10为本申请实施例提供的一种应用程序安装包容量的监测装置的结构示意图,如图10所示,所述装置包括:
获取单元1,用于获取所述应用程序的各待测模块;
统计单元2,用于对所述待测模块逐个执行代码量统计以监测每个待测模块的容量,其中,所述统计单元2包括替换单元3,所述替换单元3用于当所述待测模块为中间层模块时,将所述中间层模块替换为拷贝模块后再统计所述拷贝模块的代码量,作为所述中间层模块的代码量;所述拷贝模块为删除了所述中间层模块的下层引用关系得到的模块。
图11为本发明实施例提供的一种应用程序安装包容量的监测装置实施例二的结构示意图,所述装置还包括设置于所述获取单元1与所述统计单元2之间的划分单元4,所述划分单元4包括:
接口识别单元41,用于识别各所述待测模块中的下层引用代码和数据接口;
第一划分单元42,用于如果所述待测模块中只存在下层引用代码,则划分所述待测模块为上层模块;
第二划分单元43,用于如果所述待测模块中同时存在下层引用代码和数据接口,则划分所述待测模块为中间层模块;
第三划分单元44,用于如果所述待测模块中只存在数据接口,则划分所述待测模块为下层模块。
图12为本发明实施例提供的一种应用程序安装包容量的监测装置实施例三的结构示意图,所述装置还包括设置于所述获取单元1与所述统计单元2之间的划分单元4,所述划分单元4包括:
协议识别单元45,用于识别所述应用程序中各组件库的引用协议;
第四划分单元46,用于如果所述组件库的引用协议为引用下层组件库,则划分所述组件库为第一类组件库;
第五划分单元47,用于如果所述组件库的引用协议包括引用下层组件库和引用上层组件库,则划分所述组件库为第二类组件库;
第六划分单元48,用于如果所述组件库的引用协议为引用上层组件库,则划分所述组件库为第三类组件库;
模块划分单元49,用于确定所述第一类组件库中的待测模块为上层模块,确定所述第二类组件库中的待测模块为中间层模块,确定所述第三类组件库中的待测模块为下层模块。
图13为本发明实施例提供的一种应用程序安装包容量的监测装置实施例四的结构示意图,所述统计单元2包括:
第一打包单元201,用于打包所述应用程序的全部待测模块,得到第一安装包的代码量;
第一删除单元202,用于从全部待测模块中删除所述上层模块,得到删除后应用程序;
第二打包单元203,用于打包所述删除后应用程序中的全部待测模块,得到第二安装包的代码量;
第一计算单元204,用于计算所述第一安装包的代码量与所述第二安装包的代码量的差值,得到所述上层模块的代码量。
图14为本发明实施例提供的一种应用程序安装包容量的监测装置实施例五的结构示意图,所述替换单元3包括:
引用代码识别单元31,用于识别所述中间层模块中的下层引用代码;
第二删除单元32,用于删除所述中间层模块中的所述下层引用代码,得到拷贝模块;
子替换单元33,用于利用所述拷贝模块替换所述中间层模块。
图15为本发明实施例提供的一种应用程序安装包容量的监测装置实施例六的结构示意图,所述统计单元2包括:
第一打包单元201,用于打包所述应用程序的全部待测模块,得到第一安装包的代码量;
第三打包单元205,用于在将所述中间层模块替换为拷贝模块之后,打包所述应用程序的全部待测模块,得到第三安装包的代码量;
第二计算单元206,用于计算所述第一安装包的代码量与所述第三安装包的代码量的差值,得到所述中间层模块的代码量。
图16为本发明实施例提供的一种应用程序安装包容量的监测装置实施例七的结构示意图,所述统计单元2包括:
第一打包单元201,用于打包所述应用程序的全部待测模块,得到第一安装包的代码量;
模块确定单元207,用于确定所述应用程序中除所述下层模块以外的非目标待测模块;
第四打包单元208,用于打包全部所述非目标待测模块,得到第四安装包的代码量;
第三计算单元209,用于计算所述第一安装包的代码量与所述第四安装包的代码量的差值,得到所述下层模块的代码量。
图17为本发明实施例提供的电子设备的硬件结构示意图,所述电子设备包括:存储器101和处理器102;
存储器101,用于存储计算机程序;
处理器102,用于执行存储器存储的计算机程序,以实现上述实施例中的应用程序安装包容量的监测方法。具体可以参见前述方法实施例中的相关描述。
可选地,存储器101既可以是独立的,也可以跟处理器102集成在一起。
当所述存储器101是独立于处理器102之外的器件时,所述电子设备还可以包括:
总线103,用于连接所述存储器101和处理器102。
本发明实施例提供的电子设备可用于执行上述实施例中任一所示的应用程序安装包容量的监测方法,其实现方式和技术效果类似,本发明实施例此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于以计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换,而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (16)

1.一种应用程序安装包容量的监测方法,其特征在于,所述方法包括:
获取所述应用程序的各待测模块;所述待测模块分为上层模块、中间层模块以及下层模块中的任意一个;
对所述待测模块逐个执行代码量统计以监测每个待测模块的容量,其中,当所述待测模块为中间层模块时,将所述中间层模块替换为拷贝模块后再统计所述拷贝模块的代码量,作为所述中间层模块的代码量;所述拷贝模块为删除了所述中间层模块的下层引用关系得到的模块;其中,在对所述待测模块逐个执行代码量统计时,打包全部待测模块获得的第一安装包的代码量分别减去删除上层模块、替换为拷贝模块以及除下层模块外的对应安装包的代码量,以得到上层模块、中间层模块以及下层模块的代码量。
2.根据权利要求1所述的方法,其特征在于,所述对待测模块逐个执行代码量统计以监测每个待测模块的容量之前包括:
识别各所述待测模块中的下层引用代码和数据接口;
如果所述待测模块中只存在下层引用代码,则划分所述待测模块为上层模块;
如果所述待测模块中同时存在下层引用代码和数据接口,则划分所述待测模块为中间层模块;
如果所述待测模块中只存在数据接口,则划分所述待测模块为下层模块。
3.根据权利要求1所述的方法,其特征在于,所述对待测模块逐个执行代码量统计以监测每个待测模块的容量之前包括:
识别所述应用程序中各组件库的引用协议;
如果所述组件库的引用协议为引用下层组件库,则划分所述组件库为第一类组件库;
如果所述组件库的引用协议包括引用下层组件库和引用上层组件库,则划分所述组件库为第二类组件库;
如果所述组件库的引用协议为引用上层组件库,则划分所述组件库为第三类组件库;
确定所述第一类组件库中的待测模块为上层模块,确定所述第二类组件库中的待测模块为中间层模块,确定所述第三类组件库中的待测模块为下层模块。
4.根据权利要求2或3所述的方法,其特征在于,所述对待测模块逐个执行代码量统计以监测每个待测模块的容量包括:
当所述待测模块为上层模块时,打包所述应用程序的全部待测模块,得到第一安装包的代码量;
从全部待测模块中删除所述上层模块,得到删除后应用程序;
打包所述删除后应用程序中的全部待测模块,得到第二安装包的代码量;
计算所述第一安装包的代码量与所述第二安装包的代码量的差值,得到所述上层模块的代码量。
5.根据权利要求1所述的方法,其特征在于,所述将中间层模块替换为拷贝模块后再统计所述拷贝模块的代码量包括:
识别所述中间层模块中的下层引用代码;
删除所述中间层模块中的所述下层引用代码,得到拷贝模块;
利用所述拷贝模块替换所述中间层模块。
6.根据权利要求2、3或5任一所述的方法,其特征在于,所述对待测模块逐个执行代码量统计以监测每个待测模块的容量包括:
当所述待测模块为中间层模块时,打包所述应用程序的全部待测模块,得到第一安装包的代码量;
在将所述中间层模块替换为拷贝模块之后,打包所述应用程序的全部待测模块,得到第三安装包的代码量;
计算所述第一安装包的代码量与所述第三安装包的代码量的差值,得到所述中间层模块的代码量。
7.根据权利要求2或3所述的方法,其特征在于,所述对待测模块逐个执行代码量统计以监测每个待测模块的容量包括:
当所述待测模块为下层模块时,打包所述应用程序的全部待测模块,得到第一安装包的代码量;
确定所述应用程序中除所述下层模块以外的非目标待测模块;
打包全部所述非目标待测模块,得到第四安装包的代码量;
计算所述第一安装包的代码量与所述第四安装包的代码量的差值,得到所述下层模块的代码量。
8.一种应用程序安装包容量的监测装置,其特征在于,所述装置包括:
获取单元,用于获取所述应用程序的各待测模块;所述待测模块分为上层模块、中间层模块以及下层模块中的任意一个;
统计单元,用于对所述待测模块逐个执行代码量统计以监测每个待测模块的容量,其中,所述统计单元包括替换单元,所述替换单元用于当所述待测模块为中间层模块时,将所述中间层模块替换为拷贝模块后再统计所述拷贝模块的代码量,作为所述中间层模块的代码量;所述拷贝模块为删除了所述中间层模块的下层引用关系得到的模块;其中,所述统计单元在对所述待测模块逐个执行代码量统计时,打包全部待测模块获得的第一安装包的代码量分别减去删除上层模块、替换为拷贝模块以及除下层模块外的对应安装包的代码量,以得到上层模块、中间层模块以及下层模块的代码量。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括设置于所述获取单元与所述统计单元之间的划分单元,所述划分单元包括:
接口识别单元,用于识别各所述待测模块中的下层引用代码和数据接口;
第一划分单元,用于如果所述待测模块中只存在下层引用代码,则划分所述待测模块为上层模块;
第二划分单元,用于如果所述待测模块中同时存在下层引用代码和数据接口,则划分所述待测模块为中间层模块;
第三划分单元,用于如果所述待测模块中只存在数据接口,则划分所述待测模块为下层模块。
10.根据权利要求8所述的装置,其特征在于,所述装置还包括设置于所述获取单元与所述统计单元之间的划分单元,所述划分单元包括:
协议识别单元,用于识别所述应用程序中各组件库的引用协议;
第四划分单元,用于如果所述组件库的引用协议为引用下层组件库,则划分所述组件库为第一类组件库;
第五划分单元,用于如果所述组件库的引用协议包括引用下层组件库和引用上层组件库,则划分所述组件库为第二类组件库;
第六划分单元,用于如果所述组件库的引用协议为引用上层组件库,则划分所述组件库为第三类组件库;
模块划分单元,用于确定所述第一类组件库中的待测模块为上层模块,确定所述第二类组件库中的待测模块为中间层模块,确定所述第三类组件库中的待测模块为下层模块。
11.根据权利要求9或10所述的装置,其特征在于,所述统计单元包括:
第一打包单元,用于打包所述应用程序的全部待测模块,得到第一安装包的代码量;
第一删除单元,用于从全部待测模块中删除所述上层模块,得到删除后应用程序;
第二打包单元,用于打包所述删除后应用程序中的全部待测模块,得到第二安装包的代码量;
第一计算单元,用于计算所述第一安装包的代码量与所述第二安装包的代码量的差值,得到所述上层模块的代码量。
12.根据权利要求8所述的装置,其特征在于,所述替换单元包括:
引用代码识别单元,用于识别所述中间层模块中的下层引用代码;
第二删除单元,用于删除所述中间层模块中的所述下层引用代码,得到拷贝模块;
子替换单元,用于利用所述拷贝模块替换所述中间层模块。
13.根据权利要求9、10或12任一所述的装置,其特征在于,所述统计单元包括:
第一打包单元,用于打包所述应用程序的全部待测模块,得到第一安装包的代码量;
第三打包单元,用于在将所述中间层模块替换为拷贝模块之后,打包所述应用程序的全部待测模块,得到第三安装包的代码量;
第二计算单元,用于计算所述第一安装包的代码量与所述第三安装包的代码量的差值,得到所述中间层模块的代码量。
14.根据权利要求9或10所述的装置,其特征在于,所述统计单元包括:
第一打包单元,用于打包所述应用程序的全部待测模块,得到第一安装包的代码量;
模块确定单元,用于确定所述应用程序中除所述下层模块以外的非目标待测模块;
第四打包单元,用于打包全部所述非目标待测模块,得到第四安装包的代码量;
第三计算单元,用于计算所述第一安装包的代码量与所述第四安装包的代码量的差值,得到所述下层模块的代码量。
15.一种电子设备,其特征在于,所述电子设备包括:
处理器,以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-7任一所述的应用程序安装包容量的监测方法。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7任一所述的应用程序安装包容量的监测方法。
CN201911038102.1A 2019-10-29 2019-10-29 应用程序安装包容量的监测方法、装置、电子设备及存储介质 Active CN110795114B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911038102.1A CN110795114B (zh) 2019-10-29 2019-10-29 应用程序安装包容量的监测方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911038102.1A CN110795114B (zh) 2019-10-29 2019-10-29 应用程序安装包容量的监测方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN110795114A CN110795114A (zh) 2020-02-14
CN110795114B true CN110795114B (zh) 2023-08-01

Family

ID=69441815

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911038102.1A Active CN110795114B (zh) 2019-10-29 2019-10-29 应用程序安装包容量的监测方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN110795114B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112463176A (zh) * 2020-12-03 2021-03-09 深圳市欢太科技有限公司 应用程序安装包处理方法、装置、电子设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109213476A (zh) * 2018-08-14 2019-01-15 中国平安人寿保险股份有限公司 一种安装包的生成方法、计算机可读存储介质及终端设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105204823B (zh) * 2014-05-29 2019-11-05 腾讯科技(深圳)有限公司 生成应用程序安装包的方法及装置
US9300554B1 (en) * 2015-06-25 2016-03-29 Extrahop Networks, Inc. Heuristics for determining the layout of a procedurally generated user interface
CN106681720A (zh) * 2016-12-23 2017-05-17 光锐恒宇(北京)科技有限公司 安装包压缩、解压方法及装置
CN106681725A (zh) * 2016-12-29 2017-05-17 广州华多网络科技有限公司 代码量统计方法及装置
CN109558145B (zh) * 2017-09-26 2022-04-22 北京金山安全软件有限公司 一种面向安卓应用的安装包体积优化方法及装置
CN108415708B (zh) * 2018-01-19 2021-07-20 五八有限公司 应用程序安装包大小的处理方法、装置、设备和存储介质
CN108399071B (zh) * 2018-01-19 2021-07-20 五八有限公司 应用程序安装包大小的处理方法、装置、设备和存储介质
CN108897546A (zh) * 2018-07-03 2018-11-27 北京五八信息技术有限公司 监控apk大小的方法、装置、设备及可读存储介质

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109213476A (zh) * 2018-08-14 2019-01-15 中国平安人寿保险股份有限公司 一种安装包的生成方法、计算机可读存储介质及终端设备

Also Published As

Publication number Publication date
CN110795114A (zh) 2020-02-14

Similar Documents

Publication Publication Date Title
CN105580032B (zh) 用于降低升级软件时的不稳定性的方法和系统
CN102576311B (zh) 用于通过优化性能模型提高软件执行时间的方法和系统
US20190065336A1 (en) System and method for predicting application performance for large data size on big data cluster
US11138058B2 (en) Hierarchical fault determination in an application performance management system
US20060235664A1 (en) Model-based capacity planning
US10169191B2 (en) Warning data management with respect to a development phase
US20120167084A1 (en) Automatic simulation of virtual machine performance
US9696982B1 (en) Safe host deployment for a heterogeneous host fleet
US10977017B2 (en) Warning data management for distributed application development
US20200348996A1 (en) Application performance management system with dynamic discovery and extension
US20200117530A1 (en) Application performance management system with collective learning
CN115269612B (zh) 一种基于微服务的跨平台多维数据融合系统
CN111240876A (zh) 微服务的故障定位方法、装置、存储介质及终端
CN111859047A (zh) 一种故障解决方法及装置
CN112035314A (zh) 内存泄漏的监控方法、装置及电子设备
US11153183B2 (en) Compacted messaging for application performance management system
CN114490375A (zh) 应用程序的性能测试方法、装置、设备及存储介质
CN110795114B (zh) 应用程序安装包容量的监测方法、装置、电子设备及存储介质
CN115168224A (zh) 微服务系统健康度的评估方法及相关设备
US8539479B2 (en) System and method for application function consolidation
US11093266B2 (en) Using a generative model to facilitate simulation of potential policies for an infrastructure as a service system
CN111338609B (zh) 信息获取方法、装置、存储介质及终端
US10848371B2 (en) User interface for an application performance management system
Madapudi et al. Change requests artifacts to assess impact on structural design of SDLC phases
US10817396B2 (en) Recognition of operational elements by fingerprint in an application performance management system

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