CN110442353B - 一种安装包管理的方法、装置及电子设备 - Google Patents

一种安装包管理的方法、装置及电子设备 Download PDF

Info

Publication number
CN110442353B
CN110442353B CN201910684930.6A CN201910684930A CN110442353B CN 110442353 B CN110442353 B CN 110442353B CN 201910684930 A CN201910684930 A CN 201910684930A CN 110442353 B CN110442353 B CN 110442353B
Authority
CN
China
Prior art keywords
node data
log file
installation package
file
java
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
CN201910684930.6A
Other languages
English (en)
Other versions
CN110442353A (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 QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century 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 Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN201910684930.6A priority Critical patent/CN110442353B/zh
Publication of CN110442353A publication Critical patent/CN110442353A/zh
Application granted granted Critical
Publication of CN110442353B publication Critical patent/CN110442353B/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
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring
    • 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)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供了一种安装包管理的方法、装置及电子设备,获取待处理安装包的Java字节码文件;通过字节码操控框架ASM框架获取Java字节码文件的节点数据;对节点数据进行压栈处理,定位目标日志文件;利用空串对目标日志文件中数据进行替换。从而既能实现在安装包的编译流程中,通过ASM框架对安装包中的日志文件进行自动查找,又可以实现对安装包中的日志数据进行删除,达到减小安装包大小的目的。

Description

一种安装包管理的方法、装置及电子设备
技术领域
本发明涉及的安装包管理技术领域,特别是涉及一种安装包管理的方法、装置及电子设备。
背景技术
目前,随着手机性能的提高和功能的增强,随着而来的手机中应用的大小也越来越大,这就导致在安装包对用户手机内存的占比越来越大,影响用户对应用的体验效果。现有技术在对手机应用的安装包进行大小减小时通常采用:对res文件(resources,资源文件)中的内容进行精简,包括其中所存放的字符串、程序图标、其他引用图片等;对代码进行分包优化处理,能重用的尽量重用,并且尽量减少Jar文件(Java Archive,Java归档文件)的引入,通过减少代发的重用率减少安装包的大小。
然而,发明人在实现本发明的过程中发现,现有技术至少存在如下问题:在对安装包进行大小减小时操作较为复杂,通常采用删除安装包的部分数据的方式,例如在对代码进行优化减少重用率,该方法的操作较为复杂,而对于不同的安装包适用效果也并不相同,而其中的res文件进行精简时,相对安装包的大小所能达到的效果也并不明显。而在运行过程中进行优化的方式仍较少。
发明内容
本发明实施例的目的在于提供一种安装包管理的方法、装置及电子设备,以实现减小安装包大小的目的。具体技术方案如下:
第一方面,本发明实施例提供了一种安装包管理的方法,包括:
获取待处理安装包的Java字节码文件,其中Java字节码文件为待处理安装包的Java源代码经Java语言编译器Javac编译后所得的Java字节码文件;
通过字节码操控框架ASM框架获取Java字节码文件的节点数据;
对节点数据进行压栈处理,定位目标日志文件,其中,目标日志文件为压栈过程中已经在栈中保存的日志文件;
利用空串对目标日志文件中数据进行替换。
可选的,通过字节码操控框架ASM框架获取Java字节码文件的节点数据,包括:
通过字节码操控框架ASM框架中的对象模型访问方式,调用字节码;
利用字节码调用classnode,通过classnode获取节点数据。
可选的,节点数据包括:line类型的节点数据,method类型节点数据,ldc类型节点数据,对节点数据进行压栈处理,得到目标日志文件,包括:
获取line类型的节点数据;
从line类型的节点数据开始,对节点数据依次进行压栈处理,直到得到method类型节点数据;
通过method类型节点数据,定位目标日志文件。
可选的,method类型节点数据包括字符串METHOD_INSN,通过method类型节点数据,定位目标日志文件,包括:
通过字符串METHOD_INSN,定位得到method owner;
通过method owner,定位得到字符串PPLog.e(*),进而定位得到目标日志文件。
可选的,利用空串对栈中保存的日志文件中数据进行替换,包括:
对栈中保存的日志文件进行退栈处理,并利用空串对栈中保存的日志文件中的引用类型变量字符进行替换。
第二方面,本发明实施例提供了一种安装包管理的装置,包括:
字节码获取模板,用于获取待处理安装包的Java字节码文件,其中Java字节码文件为待处理安装包的Java源代码经Java语言编译器Javac编译后所得的Java字节码文件;
节点数据模板,用于通过字节码操控框架ASM框架获取Java字节码文件的节点数据;
目标日志模块,用于对节点数据进行压栈处理,定位目标日志文件,其中,目标日志文件为压栈过程中已经在栈中保存的日志文件;
数据替换模块,用于利用空串对目标日志文件中数据进行替换。
可选的,节点数据模板包括:
字节码调用子模块,用于通过字节码操控框架ASM框架中的对象模型访问方式,调用字节码;
节点获取子模块,用于利用所述字节码调用classnode,通过所述classnode获取节点数据。
可选的,节点数据包括:line类型的节点数据,method类型节点数据,ldc类型节点数据,目标日志模块,包括:
类型节点子模块,用于获取line类型的节点数据;
压栈子模块,用于从line类型的节点数据开始,对节点数据依次进行压栈处理,直到得到method类型节点数据;
日志定位子模块,用于通过method类型节点数据,定位目标日志文件。
可选的,method类型节点数据包括字符串METHOD_INSN,日志定位子模块,包括:
method owner定位单元,用于通过字符串METHOD_INSN,定位得到method owner;
日志文件定位单元,用于通过method owner,定位得到字符串PPLog.e(*),进而定位得到目标日志文件。
可选的,数据替换模块,包括:
字符替换子模块,用于对栈中保存的日志文件进行退栈处理,并利用空串对栈中保存的日志文件中的引用类型变量字符进行替换。
在本发明实施的又一方面,还提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一的安装包管理的方法。
在本发明实施的又一方面,本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一的安装包管理的方法。
本发明实施例提供的安装包管理的方法、装置及电子设备,获取待处理安装包的Java字节码文件;通过字节码操控框架ASM框架获取Java字节码文件的节点数据;对节点数据进行压栈处理,定位目标日志文件;利用空串对目标日志文件中数据进行替换。从而既能实现在安装包的编译流程中,通过ASM框架对安装包中的日志文件进行自动查找,又可以实现对安装包中的日志数据进行删除,达到减小安装包大小的目的。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例的一种安装包管理的方法的流程示意图;
图2为本发明实施例的一种安装包管理的方法的一种编译流程图;
图3为本发明实施例的一种安装包管理的装置的一种自定义插件的功能模块图;
图4为图1中步骤120的流程示意图;
图5为图1中步骤130的流程示意图;
图6为本发明实施例的一种安装包管理的装置的结构示意图;
图7为图6中模块630的结构示意图;
图8为图6中模块640的结构示意图;
图9本发明实施例的一种电子设备的一种示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
为了对安装包进行有效的优化处理,本发明实施例提供了一种安装包管理的方法、装置及电子设备。
参见图1,本发明实施例首先提供了一种安装包管理的方法,该方法可以包括以下步骤:
步骤110,获取待处理安装包的Java字节码文件。
本发明实施例的安装包管理的方法针对的是智能终端设备中的安装包,因此可以通过智能终端设备执行,具体的,该智能终端设备可以为电脑或服务器等。
安装包可以为智能手机的APP(Application,应用程序)的安装包,例如对于系统安卓系统的应用,安装包可以为apk(AndroidPackage,安卓安装包)。
可选的,本发明实施例的方法应用于安装包的编译流程中,Java字节码文件为待处理安装包的Java源代码经Java语言编译器Javac编译后所得的Java字节码文件。例如,如图2所示,图2为本发明实施例的一种安装包管理的方法的一种编译流程图,通过建立自定义插件,将自定插件插入到编译流程中,处理Java语言编译器的编译结果,通过自定义插件处理后进行安装包的打包,最终得到安装包。
步骤120,通过字节码操控框架ASM框架获取Java字节码文件的节点数据。
在一种可能的实施方式中,创建自定义插件,自定义插件调用ASM(字节码操控框架)框架中的对象模型访问方式,调用字节码;通过上述字节码分析上述安装包的编译结果,确定节点数据。
例如,建立自定义gradle(一种构建工具)插件,自定义gradle插件通过ASM(字节码操控框架)框架中的对象模型访问方式,操控字节码,而字节码通过classnode获得method类型的node,本领域技术人员可知,method类型的node又是由一系列的小node组成,包括line类型的,method类型,ldc类型,其中ldc类型为引用类型变量,通过利用空串对其中ldc类型的数据进行替换可以达到删除日志数据的目的。如图3所示,图3为本发明实施例的一种安装包管理的装置的一种自定义插件的功能模块图,该自定义插件可以为gradle插件,可以包括过滤模块和字符串替换模块,过滤模块用于定位目标日志文件,字符串替换模块用于使用空串对日志文件中的字符串进行替换。
步骤130,对节点数据进行压栈处理,定位目标日志文件。
可选的,节点数据包括:line类型的节点数据,method类型节点数据,ldc类型节点数据,通过对节点数据进行压栈处理,得到目标日志文件。
在一种可能的实施方式中,目标日志文件为开发人员在进行安装包开发过程中,所产生的日志文件。其中,line类型的节点数据便于获取,因此首先找到line类型的节点数据,从line类型的节点数据开始,对节点数据依次进行压栈处理,直到找到method类型节点中字符串METHOD_INSN,然后定位到目标的method owner比如PPLog.e(*)。此时进行退栈处理,而在退栈时所有PPLog.e日志文件已经在栈中保存。
步骤140,利用空串对所述目标日志文件中数据进行替换。
可选的,利用空串对目标日志文件中数据进行替换,包括:对栈中保存的日志文件进行退栈处理,并利用空串对栈中保存的日志文件中的引用类型变量字符进行替换。
对所有PPLog.e日志文件进行退栈处理,同时通过空串对上述PPLog.e日志文件中的数据进行替换,从而达到删除开发过程中所生成的日志文件的目的。即用空串将原有相关字符串替换,这样既可处理掉所有相关的字符串。
由于本发明实施例的方法应用于安装包的编译流程中,因此利用空串对栈中保存的日志文件中数据进行替换,即利用空串将栈中保存的ldc字符串进行替换。通过替换可以将开发过程中所产生的无用的日志文件进行删除,减少安装包中的无用资源。
可见,应用本发明实施例的方法,既能实现在安装包的编译流程中,通过ASM框架对安装包中的日志文件进行自动查找,又可以实现对安装包中的日志数据进行删除,达到减小安装包大小的目的。
结合图1所示的实施例,为了详细阐述上述实施例中步骤120的流程,在本发明提供的又一实施例中,如图4所示,步骤120具体可以包括以下步骤:
步骤121,通过字节码操控框架ASM框架中的对象模型访问方式,调用字节码。
其中,ASM框架为java字节码操纵框架。通过ASM框架直接产生二进制class文件,以及在类被加载入Java虚拟机之前动态改变类行为。ASM从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。
步骤122,利用字节码调用classnode,通过classnode获取节点数据。
其中,通过ASM框架中的对象模型访问方式调用字节码,通过该字节码调用classnode,通过classnode获取到节点数据。其中节点数据包括:line类型的节点数据,method类型节点数据,ldc类型节点数据。
由于ASM框架的数据量小,运行速度快,开源协议协议广泛,依次通过ASM框架的对象模型访问方式,可以便于对安装包的Java字节码文件进行处理。
可见,应用本发明实施例的方法,既能实现在安装包的编译流程中,通过ASM框架对安装包中的日志文件进行自动查找,又可以实现对安装包中的日志数据进行删除,达到减小安装包大小的目的。
结合图1所示的实施例,为了详细阐述上述实施例中步骤130的流程,在本发明提供的又一实施例中,如图5所示,步骤130具体还可包括以下步骤:
步骤131,获取line类型的节点数据。
在上述节点数据中,line类型的节点数据可以直接获取,因此本发明实施例中,根据classnode获取的节点数据,率先获取line类型的节点数据。
步骤132,从line类型的节点数据开始,对节点数据依次进行压栈处理,直到得到method类型节点数据。
从line类型的节点数据开始,对节点数据依次进行压栈处理,包括对line类型的节点数据,method类型节点数据,ldc类型节点数据进行压栈,直到找到method类型节点字符串METHOD_INSN。
步骤133,通过method类型节点数据,定位目标日志文件。
可选的,目标日志文件为压栈过程中已经在栈中保存的日志文件,method类型节点数据包括字符串METHOD_INSN,通过method类型节点数据,定位目标日志文件,包括:通过字符串METHOD_INSN,定位得到method owner;通过method owner,定位得到字符串PPLog.e(*),进而定位得到目标日志文件。
通过依次对节点数据进行压栈处理,可以便于对日志文件的查找,且通过处理当定位到日志文件时,日志文件已经在栈中进行了保存,便于使用空串对日志文件中数据进行替换。
可见,应用本发明实施例的方法,既能实现在安装包的编译流程中,通过ASM框架对安装包中的日志文件进行自动查找,又可以实现对安装包中的日志数据进行删除,达到减小安装包大小的目的。
参见图6,图6为本发明实施例的一种安装包管理的装置的结构示意图,该装置可以包括:
字节码获取模板610,用于获取待处理安装包的Java字节码文件,其中Java字节码文件为待处理安装包的Java源代码经Java语言编译器Javac编译后所得的Java字节码文件。
节点数据模板620,用于通过字节码操控框架ASM框架获取Java字节码文件的节点数据。
目标日志模块630,用于对节点数据进行压栈处理,定位目标日志文件,其中,所述目标日志文件为压栈过程中已经在栈中保存的日志文件。
数据替换模块640,用于利用空串对所述目标日志文件中数据进行替换。
可选的,节点数据包括:line类型的节点数据,method类型节点数据,ldc类型节点数据,
可选的,数据替换模块640,包括:
字符替换子模块,用于对栈中保存的日志文件进行退栈处理,并利用空串对栈中保存的日志文件中的引用类型变量字符进行替换。
可见,应用本发明实施例的装置,既能实现在安装包的编译流程中,通过ASM框架对安装包中的日志文件进行自动查找,又可以实现对安装包中的日志数据进行删除,达到减小安装包大小的目的。
结合图6所示的实施例,为了详细阐述上述实施例中节点数据模块620,在本发明提供的又一实施例中,如图7所示,节点数据模板620具体可以包括以下子模块:
字节码调用子模块621,用于通过字节码操控框架ASM框架中的对象模型访问方式,调用字节码;
节点获取子模块622,用于利用字节码调用classnode,通过classnode获取节点数据。
可见,应用本发明实施例的装置,既能实现在安装包的编译流程中,通过ASM框架对安装包中的日志文件进行自动查找,又可以实现对安装包中的日志数据进行删除,达到减小安装包大小的目的。
结合图6所示的实施例,为了详细阐述上述实施例中目标日志模块630,在本发明提供的又一实施例中,如图8所示,目标日志模块630具体可以包括以下子模块:
类型节点子模块631,用于获取line类型的节点数据;
压栈子模块632,用于从line类型的节点数据开始,对节点数据依次进行压栈处理,直到得到method类型节点数据;
日志定位子模块633,用于通过method类型节点数据,定位目标日志文件。
可选的,method类型节点数据包括METHOD_INSN,日志定位子模块633,包括:method owner定位单元,用于通过字符串METHOD_INSN,定位得到method owner;日志文件定位单元,用于通过method owner,定位得到字符串PPLog.e(*),进而定位得到目标日志文件。
可见,应用本发明实施例的装置,既能实现在安装包的编译流程中,通过ASM框架对安装包中的日志文件进行自动查找,又可以实现对安装包中的日志数据进行删除,达到减小安装包大小的目的。
本发明实施例还提供了一种电子设备,如图9所示,包括处理器901、通信接口902、存储器903和通信总线904,其中,处理器901,通信接口902,存储器903通过通信总线904完成相互间的通信,
存储器903,用于存放计算机程序;
处理器901,用于执行存储器903上所存放的程序时,实现如下步骤:
获取待处理安装包的Java字节码文件,其中Java字节码文件为待处理安装包的Java源代码经Java语言编译器Javac编译后所得的Java字节码文件;
通过字节码操控框架ASM框架获取Java字节码文件的节点数据;
对节点数据进行压栈处理,定位目标日志文件,其中,目标日志文件为压栈过程中已经在栈中保存的日志文件;
利用空串对目标日志文件中数据进行替换。
可选的,通过字节码操控框架ASM框架获取Java字节码文件的节点数据,包括:
通过字节码操控框架ASM框架中的对象模型访问方式,调用字节码;
利用字节码调用classnode,通过classnode获取节点数据。
可选的,节点数据包括:line类型的节点数据,method类型节点数据,ldc类型节点数据,对节点数据进行压栈处理,得到目标日志文件,包括:
获取line类型的节点数据;
从line类型的节点数据开始,对节点数据依次进行压栈处理,直到得到method类型节点数据;
通过method类型节点数据,定位目标日志文件。
可选的,method类型节点数据包括字符串METHOD_INSN,通过method类型节点数据,定位目标日志文件,包括:
通过字符串METHOD_INSN,定位得到method owner;
通过method owner,定位得到字符串PPLog.e(*),进而定位得到目标日志文件。
可选的,利用空串对栈中保存的日志文件中数据进行替换,包括:
对栈中保存的日志文件进行退栈处理,并利用空串对栈中保存的日志文件中的引用类型变量字符进行替换。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可见,应用本发明实施例的电子设备,既能实现在安装包的编译流程中,通过ASM框架对安装包中的日志文件进行自动查找,又可以实现对安装包中的日志数据进行删除,达到减小安装包大小的目的。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的安装包管理的方法。
可见,应用本发明实施例的计算机可读存储介质,既能实现在安装包的编译流程中,通过ASM框架对安装包中的日志文件进行自动查找,又可以实现对安装包中的日志数据进行删除,达到减小安装包大小的目的。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的安装包管理的方法。
可见,应用本发明实施例的计算机程序产品,既能实现在安装包的编译流程中,通过ASM框架对安装包中的日志文件进行自动查找,又可以实现对安装包中的日志数据进行删除,达到减小安装包大小的目的。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (9)

1.一种安装包管理的方法,其特征在于,用于安装包的编译流程,包括:
获取待处理安装包的Java字节码文件,其中所述Java字节码文件为所述待处理安装包的Java源代码经Java语言编译器Javac编译后所得的Java字节码文件;
通过字节码操控框架ASM框架获取所述Java字节码文件的节点数据;
对所述节点数据进行压栈处理,定位目标日志文件,其中,所述节点数据包括日志文件,所述目标日志文件为所述压栈处理中已经在栈中保存的日志文件;
利用空串对所述目标日志文件中数据进行替换;
所述节点数据包括:line类型的节点数据,method类型节点数据,ldc类型节点数据,所述对所述节点数据进行压栈处理,得到目标日志文件,包括:
获取line类型的节点数据;
从所述line类型的节点数据开始,对所述节点数据依次进行压栈处理,直到得到method类型节点数据;
通过所述method类型节点数据,定位目标日志文件。
2.根据权利要求1所述的方法,其特征在于,所述通过字节码操控框架ASM框架获取所述Java字节码文件的节点数据,包括:
通过所述字节码操控框架ASM框架中的对象模型访问方式,调用字节码;
利用所述字节码调用classnode,通过所述classnode获取节点数据。
3.根据权利要求1所述的方法,其特征在于,所述method类型节点数据包括字符串METHOD_INSN,所述通过所述method类型节点数据,定位目标日志文件,包括:
通过所述字符串METHOD_INSN,定位得到method owner;
通过所述method owner,定位得到字符串PPLog.e(*),进而定位得到所述目标日志文件。
4.根据权利要求1所述的方法,其特征在于,所述利用空串对所述目标日志文件中数据进行替换,包括:
对栈中保存的日志文件进行退栈处理,并利用空串对所述栈中保存的日志文件中的引用类型变量字符进行替换。
5.一种安装包管理的装置,其特征在于,用于安装包的编译流程,包括:
字节码获取模板,用于获取待处理安装包的Java字节码文件,其中所述Java字节码文件为所述待处理安装包的Java源代码经Java语言编译器Javac编译后所得的Java字节码文件;
节点数据模板,用于通过字节码操控框架ASM框架获取所述Java字节码文件的节点数据;
目标日志模块,用于对所述节点数据进行压栈处理,定位目标日志文件,其中,所述目标日志文件为压栈过程中已经在栈中保存的日志文件;
数据替换模块,用于利用空串对所述目标日志文件中数据进行替换;
所述节点数据包括:line类型的节点数据,method类型节点数据,ldc类型节点数据,所述目标日志模块,包括:
类型节点子模块,用于获取line类型的节点数据;
压栈子模块,用于从所述line类型的节点数据开始,对所述节点数据依次进行压栈处理,直到得到method类型节点数据;
日志定位子模块,用于通过所述method类型节点数据,定位目标日志文件。
6.根据权利要求5所述的装置,其特征在于,所述节点数据模板包括:
字节码调用子模块,用于通过所述字节码操控框架ASM框架中的对象模型访问方式,调用字节码;
节点获取子模块,用于利用所述字节码调用classnode,通过所述classnode获取节点数据。
7.根据权利要求5所述的装置,其特征在于,所述method类型节点数据包括字符串METHOD_INSN,所述日志定位子模块,包括:
method owner定位单元,用于通过所述字符串METHOD_INSN,定位得到method owner;
日志文件定位单元,用于通过所述method owner,定位得到字符串PPLog.e(*),进而定位得到所述目标日志文件。
8.根据权利要求5所述的装置,其特征在于,所述数据替换模块,包括:
字符替换子模块,用于对栈中保存的日志文件进行退栈处理,并利用空串对所述栈中保存的日志文件中的引用类型变量字符进行替换。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-4任一所述的方法步骤。
CN201910684930.6A 2019-07-26 2019-07-26 一种安装包管理的方法、装置及电子设备 Active CN110442353B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910684930.6A CN110442353B (zh) 2019-07-26 2019-07-26 一种安装包管理的方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910684930.6A CN110442353B (zh) 2019-07-26 2019-07-26 一种安装包管理的方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN110442353A CN110442353A (zh) 2019-11-12
CN110442353B true CN110442353B (zh) 2023-03-10

Family

ID=68431802

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910684930.6A Active CN110442353B (zh) 2019-07-26 2019-07-26 一种安装包管理的方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN110442353B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111176717B (zh) * 2019-12-20 2023-05-16 广州华多网络科技有限公司 生成安装包的方法、装置及电子设备
CN111581331B (zh) * 2020-04-27 2023-08-25 抖音视界有限公司 文案处理的方法、装置、电子设备及计算机可读介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106445608A (zh) * 2010-01-27 2017-02-22 中兴通讯股份有限公司 一种软件安装包的安装方法及安装装置
CN104156225B (zh) * 2013-05-14 2018-07-06 腾讯科技(深圳)有限公司 一种安装包的下载方法、系统及服务器
CN109032572B (zh) * 2017-06-08 2023-03-31 阿里巴巴集团控股有限公司 一种基于字节码的java程序方法内联的方法
CN108897562B (zh) * 2018-06-27 2022-08-09 腾讯科技(深圳)有限公司 安装包更新方法、装置、介质以及设备

Also Published As

Publication number Publication date
CN110442353A (zh) 2019-11-12

Similar Documents

Publication Publication Date Title
US10481964B2 (en) Monitoring activity of software development kits using stack trace analysis
CN111638906B (zh) 一种软件开发工具包sdk接入方法、装置和系统
CN109391673B (zh) 一种管理更新文件的方法、系统及终端设备
CN106775781B (zh) 减小应用安装包的方法、装置及电子设备
CN112154420A (zh) 自动智能云服务测试工具
CN110442353B (zh) 一种安装包管理的方法、装置及电子设备
CN111124480B (zh) 应用程序包的生成方法、装置、电子设备及存储介质
CN107644075B (zh) 收集页面信息的方法和装置
CN106776266B (zh) 测试工具的配置方法及终端设备
CN114900546B (zh) 一种数据处理方法、装置、设备及可读存储介质
CN109558145B (zh) 一种面向安卓应用的安装包体积优化方法及装置
CN113885920A (zh) 机器学习模型的热更新方法、装置、电子设备及存储介质
CN111443920B (zh) 一种框架迁移方法及装置
CN112181830B (zh) 内存泄露的检测方法、装置、终端及介质
CN111290747B (zh) 一种创建函数钩子的方法、系统、设备及介质
CN114253441B (zh) 目标功能的启用方法及装置、存储介质、电子装置
CN112965697A (zh) 一种代码文件的生成方法、装置及电子设备
CN111736848B (zh) 包冲突定位方法、装置、电子设备及可读存储介质
CN110851346B (zh) 查询语句边界问题的检测方法、装置、设备及存储介质
CN109635175B (zh) 页面数据拼接方法、装置、可读存储介质和电子设备
CN113726855A (zh) 服务聚合方法、装置、电子设备以及计算机可读存储介质
CN112612474A (zh) 产品移植方法、装置、存储介质和电子设备
CN107506299B (zh) 一种代码分析方法及终端设备
CN113419775B (zh) 一种固件配置方法、系统、设备以及介质
CN111144086B (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