CN107783766A - 对应用程序的文件进行清理的方法和装置 - Google Patents

对应用程序的文件进行清理的方法和装置 Download PDF

Info

Publication number
CN107783766A
CN107783766A CN201610724180.7A CN201610724180A CN107783766A CN 107783766 A CN107783766 A CN 107783766A CN 201610724180 A CN201610724180 A CN 201610724180A CN 107783766 A CN107783766 A CN 107783766A
Authority
CN
China
Prior art keywords
program
file
unnecessary
source files
application program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201610724180.7A
Other languages
English (en)
Other versions
CN107783766B (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201610724180.7A priority Critical patent/CN107783766B/zh
Publication of CN107783766A publication Critical patent/CN107783766A/zh
Application granted granted Critical
Publication of CN107783766B publication Critical patent/CN107783766B/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
    • G06F8/62Uninstallation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/162Delete operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Stored Programmes (AREA)

Abstract

一种对应用程序的文件进行清理的方法和装置,属于计算机技术领域。所述方法包括:获取应用程序中的源程序文件;对源程序文件进行编译,生成二进制文件;获取各个二进制文件的引用信息;根据各个二进制文件的引用信息,查找应用程序中多余的源程序文件;其中,多余的源程序文件是指未被应用程序中的其它文件引用的源程序文件;删除多余的源程序文件。本发明通过查找应用程序中多余的源程序文件,并将多余的源程序文件删除;解决了现有技术仅能识别出部分无用的资源文件的问题;实现了对多余的源程序文件进行识别,有助于从应用程序中识别出更多的多余文件,进一步减小应用程序的安装包大小,降低应用程序后期的维护难度。

Description

对应用程序的文件进行清理的方法和装置
技术领域
本发明实施例涉及计算机技术领域,特别涉及一种对应用程序的文件进行清理的方法和装置。
背景技术
一款应用程序的生命周期可以持续数年甚至数十年,随着项目版本的功能变更和开发人员更迭,项目工程中会遗留大量的无用文件。这部分无用文件会占用安装包大小,同时增加项目的维护难度。
在现有技术中,Google(谷歌)公司提供了一种静态代码扫描工具——AndroidLint。通过Android Lint对Android(安卓)工程源代码进行扫描和检查,从中获取无用的资源文件,并由开发人员选择将其删除。例如,资源文件通常包括图片资源文件和XML(Extensible Markup Language,可扩展标记语言)资源文件。
上述现有技术仅能识别出部分无用的资源文件。
发明内容
为了解决现有技术仅能识别出部分无用的资源文件的问题,本发明实施例提供了一种对应用程序的文件进行清理的方法和装置。所述技术方案如下:
第一方面,提供了一种对应用程序的文件进行清理的方法,所述方法包括:
获取应用程序中的源程序文件;
对所述源程序文件进行编译,生成二进制文件;
获取各个所述二进制文件的引用信息;其中,每一个二进制文件的引用信息中记录有编译生成所述二进制文件的源程序文件所引用的其它源程序文件的标识信息;
根据各个所述二进制文件的引用信息,查找所述应用程序中多余的源程序文件;其中,所述多余的源程序文件是指未被所述应用程序中的其它文件引用的源程序文件;
删除所述多余的源程序文件。
第二方面,提供了一种对应用程序的文件进行清理的装置,所述装置包括:
第一获取模块,用于获取应用程序中的源程序文件;
编译模块,用于对所述源程序文件进行编译,生成二进制文件;
第二获取模块,用于获取各个所述二进制文件的引用信息;其中,每一个二进制文件的引用信息中记录有编译生成所述二进制文件的源程序文件所引用的其它源程序文件的标识信息;
第一查找模块,用于根据各个所述二进制文件的引用信息,查找所述应用程序中多余的源程序文件;其中,所述多余的源程序文件是指未被所述应用程序中的其它文件引用的源程序文件;
第一删除模块,用于删除所述多余的源程序文件。
本发明实施例提供的技术方案带来的有益效果包括:
通过查找应用程序中多余的源程序文件,并将多余的源程序文件删除;解决了现有技术仅能识别出部分无用的资源文件的问题;实现了对多余的源程序文件进行识别,有助于从应用程序中识别出更多的多余文件,进一步减小应用程序的安装包大小,降低应用程序后期的维护难度。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例提供的对应用程序的文件进行清理的方法的流程图;
图2是本发明另一实施例提供的对应用程序的文件进行清理的方法的流程图;
图3是本发明另一实施例提供的对应用程序的文件进行清理的方法的流程图;
图4是本发明一个实施例提供的对应用程序的文件进行清理的装置的框图;
图5是本发明另一实施例提供的对应用程序的文件进行清理的装置的框图;
图6是本发明一个实施例提供的计算机的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
发明人发现,应用程序中的多余文件(或称为无用文件)包括:源程序文件、布局文件和资源文件。在现有技术中,仅对资源文件进行扫描,并没有对多余的源程序文件和布局文件进行扫描。进一步地,由于源程序文件和布局文件中也有可能会引用到资源文件,如果无法识别出多余的源程序文件和布局文件,则会遗漏掉一些多余的资源文件。因此,现有技术只能识别出部分无用的资源文件,扫描不够彻底。本发明提供的技术方案,通过从应用程序中识别出多余的源程序文件、布局文件和资源文件,以实现最大化地删除应用程序中的多余文件,达到减小应用程序的安装包的目的。
在对本发明提供的技术方案进行介绍和说明之前,首先对本文中涉及的一些关键名词进行定义和说明:
1、源程序文件
源程序文件是指用汇编语言和高级语言编写的源代码文件。例如,Android应用程序的源程序文件可以采用Java语言编写。源程序文件是应用程序的主要构成部分。对源程序文件进行编译,便可生成二进制文件。二进制文件是终端的操作系统可识别的文件。例如,将Java源程序文件编译后,便生成字节码文件,字节码文件属于一种二进制文件。随着应用程序的项目版本迭代,大量的源程序文件被编译成二进制文件,占用安装包大小,但却没有被应用程序所使用到。
2、布局文件
布局文件用于定义应用程序的用户交互界面,其定义了用户交互界面的布局以及用户交互界面中所包含的元素。终端的操作系统通过解析布局文件,在终端的屏幕上展示应用程序的用户交互界面,通过用户交互界面展示内容给用户以及与用户进行交互。以Android应用程序为例,Android应用程序中的布局文件通常为XML格式,也即采用XML编写布局文件,因此也称为XML布局文件。
3、资源文件
资源文件是应用程序的重要组成部分,是指从中可以读取出需要的资源的文件。其中,资源的类型包括但不限于图片、背景、颜色、字体样式、字符串、尺寸,等等。源程序文件和布局文件通过引用资源文件,可以丰富应用程序的内容,给用户提供更好的体验。
下面,对本发明提供的方法实施例进行介绍和说明。在下述方法实施例中,各步骤的执行主体可以是任何具备计算处理能力的设备,例如计算机。
请参考图1,其示出了本发明一个实施例提供的对应用程序的文件进行清理的方法的流程图,该方法可以包括如下几个步骤:
步骤101,获取应用程序中的源程序文件。
步骤102,对源程序文件进行编译,生成二进制文件。
步骤103,获取各个二进制文件的引用信息;其中,每一个二进制文件的引用信息中记录有编译生成该二进制文件的源程序文件所引用的其它源程序文件的标识信息。
步骤104,根据各个二进制文件的引用信息,查找应用程序中多余的源程序文件;其中,多余的源程序文件是指未被应用程序中的其它文件引用的源程序文件。
步骤105,删除多余的源程序文件。
综上所述,本实施例提供的方法,通过查找应用程序中多余的源程序文件,并将多余的源程序文件删除;解决了现有技术仅能识别出部分无用的资源文件的问题;实现了对多余的源程序文件进行识别,有助于从应用程序中识别出更多的多余文件,进一步减小应用程序的安装包大小,降低应用程序后期的维护难度。
请参考图2,其示出了本发明另一实施例提供的对应用程序的文件进行清理的方法的流程图,该方法可以包括如下几个步骤:
步骤201,获取应用程序中的源程序文件。
应用程序中包括源程序文件、布局文件、资源文件和基础配置文件。源程序文件是指用汇编语言和高级语言编写的源代码文件。例如,Android应用程序的源程序文件可以采用Java语言编写。源程序文件是应用程序的主要构成部分。
步骤202,对源程序文件进行编译,生成二进制文件。
对源程序文件进行编译,便可生成二进制文件。二进制文件是终端的操作系统可识别的文件。例如,将Java源程序文件编译后,便生成字节码文件,字节码文件属于一种二进制文件。
步骤203,获取各个二进制文件的引用信息。
其中,每一个二进制文件的引用信息中记录有编译生成该二进制文件的源程序文件所引用的其它源程序文件的标识信息。也即,由目标源程序文件编译生成的二进制文件的引用信息中记录有目标源程序文件所引用的源程序文件的标识信息。目标源程序文件可以是应用程序中的任一源程序文件。
源程序文件具备相应的标识信息,例如该标识信息包括包名和类名。其中,包名用于指示源程序文件所在目录的名称;类名用于指示源程序文件的文件类名称,可理解为源程序文件的文件名。包名和类名能够唯一标识一个源程序文件。
在应用程序中,源程序文件可以被其它源程序文件所引用。以在第一源程序文件中引用第二源程序文件为例,需要在第一源程序文件中申明需要引用的第二源程序文件的包名和类名。以Android系统为例,Android系统在编译时,会将Java源程序文件编译为字节码文件,Android虚拟机通过解释字节码文件,来运行Java源程序文件。当第一源程序文件引用到第二源程序文件时,会将第二源程序文件的包名和类名作为引用信息写入到第一源程序文件所对应的二进制文件中。例如,当第一Java源程序文件引用到第二Java源程序文件时,会将第二Java源程序文件的包名和类名作为引用信息写入到第一Java源程序文件所对应的字节码文件中。因此,通过解析源程序文件编译生成的二进制文件,读取其中的引用信息,便可获取到该源程序文件所引用的其它源程序文件。
步骤204,根据各个二进制文件的引用信息,查找应用程序中多余的源程序文件。
其中,多余的源程序文件是指未被应用程序中的其它文件引用的源程序文件。在一个示例中,本步骤包括如下几个子步骤:
1、对于应用程序中的每一个源程序文件,检测由应用程序中的其它源程序文件编译生成的二进制文件的引用信息中是否记录有该源程序文件的标识信息;
2、若由应用程序中的其它源程序文件编译生成的二进制文件的引用信息中未记录有该源程序文件的标识信息,则确定该源程序文件为多余的源程序文件。
另外,在应用程序中,源程序文件还可以被布局文件和信息描述文件所引用。在布局文件中引用源程序文件,其引用方式是在布局文件中指明所要引用的源程序文件的包名和类名。信息描述文件是应用程序的基础配置文件。以Android应用程序为例,信息描述文件为AndroidManifest.xml文件。在信息描述文件中,开发者可以说明应用程序的基础信息,比如应用程序入口页面、应用程序所需要的权限信息、应用程序的版本信息等。为了申明上述信息,需要在信息描述文件中引用到相应的源程序文件,引用方式是在信息描述文件中指明所要引用的源程序文件的包名和类名。
因此,对于应用程序中的每一个源程序文件,在检测该源程序文件是否为多余的源程序文件时,除检测该源程序文件是否被其它源程序文件所引用之外,还需检测该源程序文件是否被布局文件和信息描述文件所引用。在上述第2个子步骤之前,还包括:检测应用程序中的布局文件和信息描述文件中是否记录有源程序文件的标识信息。对于应用程序中的每一个源程序文件,若由应用程序中的其它源程序文件编译生成的二进制文件的引用信息、布局文件和信息描述文件中均未记录有该源程序文件的标识信息,则确定该源程序文件为多余的源程序文件。
在实际实现时,在判定某一源程序文件是否为多余的源程序文件时,可首先检测由应用程序中的其它源程序文件编译生成的二进制文件的引用信息中是否记录有该源程序文件的标识信息(如包名和类名),若检测结果为上述各个二进制文件的引用信息中未记录有该源程序文件的标识信息,则确认该源程序文件并未被其它源程序文件所引用,进一步检测应用程序中的信息描述文件和各个布局文件中是否记录有该源程序文件的标识信息,若检测结果为信息描述文件和各个布局文件中均未记录有该源程序文件的标识信息,则确认该源程序文件并未被信息描述文件和布局文件所引用,判定该源程序文件为多余的源程序文件。当然,上述方式仅是示例性和解释性的,在本实施例中,对于检测某一源程序文件是否被其它源程序文件所引用,是否被布局文件所引用以及是否被信息描述文件所引用的检测先后顺序不作限定。
在上文介绍了对应用程序中的多余的源程序文件进行检测和判定。应用程序中的多余文件,除包括多余的源程序文件之外,还可能包括多余的布局文件和/或多余的资源文件。多余的布局文件是指未被应用程序中的其它文件引用的布局文件。多余的资源文件是指未被应用程序中的其它文件引用的资源文件。
可选地,本实施例提供的方法还包括如下步骤205和步骤206:
步骤205,查找应用程序中多余的布局文件。
在应用程序中,引用布局文件包括如下两种方式:
1、在源程序文件中引用;
引用方式是直接在源程序文件的代码中指明所引用的布局文件的文件名。以在Java源程序文件中引用布局文件为例,引用方式是在Java源程序文件的代码中指明“R.layout.布局文件的文件名”。
2、在其它布局文件中引用;
以在第一布局文件中引用第二布局文件为例,引用方式是直接在第一布局文件的代码中指明所引用的第二布局文件的文件名。例如,在第一布局文件的代码中指明“@layout/第二布局文件的文件名”。
因此,在一种可能的实施方式中,查找应用程序中多余的布局文件,包括:
1、对于应用程序中的每一个布局文件,检测该布局文件是否符合第一预设条件;
其中,第一预设条件包括:应用程序中的源程序文件中未记录有第一关键词且应用程序中的其它布局文件中未记录有第二关键词。第一关键词用于指示在源程序文件中引用布局文件。第二关键词用于指示在其它布局文件中引用布局文件。
2、若该布局文件符合第一预设条件,则确定该布局文件为多余的布局文件。
在实际实现时,以判定某一文件名为“AAA”的布局文件是否为多余的布局文件为例,在应用程序的项目工程中搜索第一关键词“R.layout.AAA”和第二关键词“@layout/AAA”,如果未搜索到上述第一关键词和第二关键词,则说明该布局文件并未被源程序文件和其它布局文件所引用,判定该布局文件为多余的布局文件。当然,在本实施例中,对于检测某一布局文件是否被源程序文件所引用和是否被其它布局文件所引用的检测先后顺序不作限定。
步骤206,查找应用程序中多余的资源文件。
在应用程序中,引用资源文件包括如下两种方式:
1、在源程序文件中引用;
引用方式是直接在源程序文件的代码中指明所引用的资源文件的文件名。以在Java源程序文件中引用资源文件为例,引用方式是在Java源程序文件的代码中指明“R.drawable.资源文件的文件名”。
2、在布局文件中引用;
引用方式是直接在布局文件的代码中指明所引用的资源文件的文件名。例如,在布局文件的代码中指明“@drawable/资源文件的文件名”。
因此,在一种可能的实施方式中,查找应用程序中多余的资源文件,包括:
1、对于应用程序中的每一个资源文件,检测该资源文件是否符合第二预设条件;
其中,第二预设条件包括:应用程序中的源程序文件中未记录有第三关键词且应用程序中的布局文件中未记录有第四关键词。第三关键词用于指示在源程序文件中引用资源文件。第四关键词用于指示在布局文件中引用资源文件。
2、若该资源文件符合第二预设条件,则确定该资源文件为多余的资源文件。
在实际实现时,以判定某一文件名为“BBB”的资源文件是否为多余的资源文件为例,在应用程序的项目工程中搜索第三关键词“R.drawable.BBB”和第四关键词“@drawable/BBB”,如果未搜索到上述第三关键词和第四关键词,则说明该资源文件并未被源程序文件和布局文件所引用,判定该资源文件为多余的资源文件。当然,在本实施例中,对于检测某一资源文件是否被源程序文件所引用和是否被布局文件所引用的检测先后顺序不作限定。
步骤207,删除应用程序中的多余文件。
多余文件包括多余的源程序文件。可选地,多余文件还包括多余的布局文件和/或多余的资源文件。
在一种可能的实施方式中,将查找到的多余文件自动删除。在另一种可能的实施方式中,将查找到的多余文件列出,由开发人员选择将其删除。在又一种可能的实施方式中,根据预先配置将查找到的第一类型的多余文件自动删除,将查找到的第二类型的多余文件列出,由开发人员选择将其删除。其中,第一类型和第二类型可以由开发人员预先自定义配置,例如第一类型为布局文件和资源文件,第二类型为源程序文件。
另外,考虑到文件之间存在交叉引用的状况,在删除应用程序中的多余文件之后(也即在执行上述步骤207之后),再次从上述步骤201开始执行,若从应用程序中未查找到多余文件,则结束流程。以文件A引用文件B,文件B引用文件C为例,在第一轮扫描之后,由于文件B被文件A所引用,文件C被文件B所引用,因此文件B和文件C并非多余文件,假设在第一轮扫描之后发现文件A并未被其它文件所引用,则判定文件A为多余文件并删除该文件A。将文件A删除之后,需要进行第二轮扫描,如果在第二轮扫描之后发现文件B并未被其它文件所引用,则判定文件B为多余文件并删除该文件B。依次类推,在每一次删除多余文件之后再执行一轮扫描,直至扫描结果为未查找到多余文件时结束流程,从而确保没有遗留多余文件。
综上所述,本实施例提供的方法,通过查找应用程序中多余的源程序文件,并将多余的源程序文件删除;解决了现有技术仅能识别出部分无用的资源文件的问题;实现了对多余的源程序文件进行识别,有助于从应用程序中识别出更多的多余文件,进一步减小应用程序的安装包大小,降低应用程序后期的维护难度。
另外,还通过查找应用程序中多余的布局文件和多余的资源文件,解决了现有技术不能识别出应用程序中的所有的无用文件,仅能识别出部分无用的资源文件,所存在的扫描不彻底的问题;实现了对应用程序中的多余文件进行更为彻底地扫描,最大化地删除应用程序中的多余文件。
需要说明的是,在本实施例中,对于检测多余的源程序文件、检测多余的布局文件和检测多余的资源文件的检测先后顺序不作限定,上述三个检测流程可以按序依次执行,也可并行执行。
请参考图3,其示出了本发明另一实施例提供的对应用程序的文件进行清理的方法的流程图,该方法可以包括如下几个步骤:
步骤301,获取应用程序中的源程序文件。
步骤302,对源程序文件进行编译,生成二进制文件;
步骤303,根据各个二进制文件的引用信息以及应用程序中的布局文件和信息描述文件,查找应用程序中多余的源程序文件;
若查找到多余的源程序文件,则执行下述步骤304,并在完成步骤304之后执行下述步骤305;若未查找到多余的源程序文件,则直接执行下述步骤305;
步骤304,删除查找到的多余的源程序文件;
步骤305,查找应用程序中多余的布局文件;
若查找到多余的布局文件,则执行下述步骤306,并在完成步骤306之后执行下述步骤307;若未查找到多余的布局文件,则直接执行下述步骤307;
步骤306,删除查找到的多余的布局文件;
步骤307,查找应用程序中多余的资源文件;
若查找到多余的资源文件,则执行下述步骤308,并在完成步骤308之后执行下述步骤309;若未查找到多余的资源文件,则直接执行下述步骤309;
步骤308,删除查找到的多余的资源文件;
步骤309,判断本轮扫描是否删除了多余文件;
若是,则再次从上述步骤301开始执行;若否,则结束流程。
综上所述,本实施例提供的方法,首先查找多余的源程序文件,其次查找多余的布局文件,再次查找多余的资源文件,充分考虑了文件之间的引用关系,能够更为高效地完成多余文件识别。
下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。
请参考图4,其示出了本发明一个实施例提供的对应用程序的文件进行清理的装置的框图。该装置具有实现上述方法的功能,所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该装置可以包括:第一获取模块410、编译模块420、第二获取模块430、查找模块440和删除模块450。
第一获取模块410,用于获取应用程序中的源程序文件。
编译模块420,用于对所述源程序文件进行编译,生成二进制文件。
第二获取模块430,用于获取各个所述二进制文件的引用信息;其中,每一个二进制文件的引用信息中记录有编译生成所述二进制文件的源程序文件所引用的其它源程序文件的标识信息。
查找模块440,用于根据各个所述二进制文件的引用信息,查找所述应用程序中多余的源程序文件。其中,所述多余的源程序文件是指未被所述应用程序中的其它文件引用的源程序文件。
删除模块450,用于删除所述多余的源程序文件。
综上所述,本实施例提供的装置,通过查找应用程序中多余的源程序文件,并将多余的源程序文件删除;解决了现有技术仅能识别出部分无用的资源文件的问题;实现了对多余的源程序文件进行识别,有助于从应用程序中识别出更多的多余文件,进一步减小应用程序的安装包大小,降低应用程序后期的维护难度。
可选地,如图5所示,所述查找模块440,包括:第一检测单元440a和第一确定单元440b。
第一检测单元440a,用于对于所述应用程序中的每一个源程序文件,检测由所述应用程序中的其它源程序文件编译生成的二进制文件的引用信息中是否记录有所述源程序文件的标识信息。
第一确定单元440b,用于若由所述应用程序中的其它源程序文件编译生成的二进制文件的引用信息中未记录有所述源程序文件的标识信息,则确定所述源程序文件为所述多余的源程序文件。
可选地,如图5所示,所述查找模块440,还包括:第二检测单元440c。
第二检测单元440c,用于检测所述应用程序中的布局文件和信息描述文件中是否记录有所述源程序文件的标识信息。
所述第一确定单元440b,用于若由所述应用程序中的其它源程序文件编译生成的二进制文件的引用信息、所述布局文件和所述信息描述文件中均未记录有所述源程序文件的标识信息,则确定所述源程序文件为所述多余的源程序文件。
可选地,所述查找模块440,还用于查找所述应用程序中多余的布局文件,所述多余的布局文件是指未被所述应用程序中的其它文件引用的布局文件。
所述删除模块450,还用于删除所述多余的布局文件。
可选地,如图5所示,所述查找模块440,还包括:第三检测单元440d和第二确定单元440e。
第三检测单元440d,用于对于所述应用程序中的每一个布局文件,检测所述布局文件是否符合第一预设条件。其中,所述第一预设条件包括:所述应用程序中的源程序文件中未记录有第一关键词且所述应用程序中的其它布局文件中未记录有第二关键词。所述第一关键词用于指示在所述源程序文件中引用所述布局文件,所述第二关键词用于指示在所述其它布局文件中引用所述布局文件。
第二确定单元440e,用于若所述布局文件符合所述第一预设条件,则确定所述布局文件为所述多余的布局文件。
可选地,所述查找模块440,还用于查找所述应用程序中多余的资源文件,所述多余的资源文件是指未被所述应用程序中的其它文件引用的资源文件。
所述删除模块450,还用于删除所述多余的资源文件。
可选地,如图5所示,所述查找模块440,包括:第四检测单元440f和第三确定单元440g。
第四检测单元440f,用于对于所述应用程序中的每一个资源文件,检测所述资源文件是否符合第二预设条件。其中,所述第二预设条件包括:所述应用程序中的源程序文件中未记录有第三关键词且所述应用程序中的布局文件中未记录有第四关键词。所述第三关键词用于指示在所述源程序文件中引用所述资源文件,所述第四关键词用于指示在所述布局文件中引用所述资源文件。
第三确定单元440g,用于若所述资源文件符合所述第二预设条件,则确定所述资源文件为所述多余的资源文件。
可选地,如图5所示,所述装置还包括:控制模块460。
控制模块460,用于在所述删除模块450删除多余文件之后,再次调用所述第一获取模块410、所述编译模块420、所述第二获取模块430和所述查找模块440,若所述查找模块440从所述应用程序中未查找到所述多余文件,则结束流程。其中,所述多余文件包括多余的源程序文件、多余的布局文件和多余的资源文件。
需要说明的是:上述实施例提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
请参考图6,其示出了本发明一个实施例提供的计算机的结构示意图。该计算机用于实施上述实施例中提供的文件处理方法。具体来讲:
所述计算机600包括中央处理单元(CPU)601、包括随机存取存储器(RAM)602和只读存储器(ROM)603的系统存储器604,以及连接系统存储器604和中央处理单元601的系统总线605。所述计算机600还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)606,和用于存储操作系统613、应用程序614和其他程序模块615的大容量存储设备607。
所述基本输入/输出系统606包括有用于显示信息的显示器608和用于用户输入信息的诸如鼠标、键盘之类的输入设备609。其中所述显示器608和输入设备609都通过连接到系统总线605的输入输出控制器610连接到中央处理单元601。所述基本输入/输出系统606还可以包括输入输出控制器610以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器610还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备607通过连接到系统总线605的大容量存储控制器(未示出)连接到中央处理单元601。所述大容量存储设备607及其相关联的计算机可读介质为计算机600提供非易失性存储。也就是说,所述大容量存储设备607可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器604和大容量存储设备607可以统称为存储器。
根据本发明的各种实施例,所述计算机600还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机600可以通过连接在所述系统总线605上的网络接口单元611连接到网络612,或者说,也可以使用网络接口单元611来连接到其他类型的网络或远程计算机系统(未示出)。
所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行。上述一个或者一个以上程序包含用于执行上述方法的指令。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (16)

1.一种对应用程序的文件进行清理的方法,其特征在于,所述方法包括:
获取应用程序中的源程序文件;
对所述源程序文件进行编译,生成二进制文件;
获取各个所述二进制文件的引用信息;其中,每一个二进制文件的引用信息中记录有编译生成所述二进制文件的源程序文件所引用的其它源程序文件的标识信息;
根据各个所述二进制文件的引用信息,查找所述应用程序中多余的源程序文件;其中,所述多余的源程序文件是指未被所述应用程序中的其它文件引用的源程序文件;
删除所述多余的源程序文件。
2.根据权利要求1所述的方法,其特征在于,所述根据各个所述二进制文件的引用信息,查找所述应用程序中多余的源程序文件,包括:
对于所述应用程序中的每一个源程序文件,检测由所述应用程序中的其它源程序文件编译生成的二进制文件的引用信息中是否记录有所述源程序文件的标识信息;
若由所述应用程序中的其它源程序文件编译生成的二进制文件的引用信息中未记录有所述源程序文件的标识信息,则确定所述源程序文件为所述多余的源程序文件。
3.根据权利要求2所述的方法,其特征在于,所述确定所述源程序文件为所述多余的源程序文件之前,还包括:
检测所述应用程序中的布局文件和信息描述文件中是否记录有所述源程序文件的标识信息;
若由所述应用程序中的其它源程序文件编译生成的二进制文件的引用信息、所述布局文件和所述信息描述文件中均未记录有所述源程序文件的标识信息,则确定所述源程序文件为所述多余的源程序文件。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
查找所述应用程序中多余的布局文件,所述多余的布局文件是指未被所述应用程序中的其它文件引用的布局文件;
删除所述多余的布局文件。
5.根据权利要求4所述的方法,其特征在于,所述查找所述应用程序中多余的布局文件,包括:
对于所述应用程序中的每一个布局文件,检测所述布局文件是否符合第一预设条件;其中,所述第一预设条件包括:所述应用程序中的源程序文件中未记录有第一关键词且所述应用程序中的其它布局文件中未记录有第二关键词,所述第一关键词用于指示在所述源程序文件中引用所述布局文件,所述第二关键词用于指示在所述其它布局文件中引用所述布局文件;
若所述布局文件符合所述第一预设条件,则确定所述布局文件为所述多余的布局文件。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
查找所述应用程序中多余的资源文件,所述多余的资源文件是指未被所述应用程序中的其它文件引用的资源文件;
删除所述多余的资源文件。
7.根据权利要求6所述的方法,其特征在于,所述查找所述应用程序中多余的资源文件,包括:
对于所述应用程序中的每一个资源文件,检测所述资源文件是否符合第二预设条件;其中,所述第二预设条件包括:所述应用程序中的源程序文件中未记录有第三关键词且所述应用程序中的布局文件中未记录有第四关键词,所述第三关键词用于指示在所述源程序文件中引用所述资源文件,所述第四关键词用于指示在所述布局文件中引用所述资源文件;
若所述资源文件符合所述第二预设条件,则确定所述资源文件为所述多余的资源文件。
8.根据权利要求1至7任一项所述的方法,其特征在于,所述方法还包括:
在删除多余文件之后,再次从所述获取应用程序中的源程序文件的步骤开始执行;
若从所述应用程序中未查找到所述多余文件,则结束流程;
其中,所述多余文件包括多余的源程序文件、多余的布局文件和多余的资源文件。
9.一种对应用程序的文件进行清理的装置,其特征在于,所述装置包括:
第一获取模块,用于获取应用程序中的源程序文件;
编译模块,用于对所述源程序文件进行编译,生成二进制文件;
第二获取模块,用于获取各个所述二进制文件的引用信息;其中,每一个二进制文件的引用信息中记录有编译生成所述二进制文件的源程序文件所引用的其它源程序文件的标识信息;
查找模块,用于根据各个所述二进制文件的引用信息,查找所述应用程序中多余的源程序文件;其中,所述多余的源程序文件是指未被所述应用程序中的其它文件引用的源程序文件;
删除模块,用于删除所述多余的源程序文件。
10.根据权利要求9所述的装置,其特征在于,所述查找模块,包括:
第一检测单元,用于对于所述应用程序中的每一个源程序文件,检测由所述应用程序中的其它源程序文件编译生成的二进制文件的引用信息中是否记录有所述源程序文件的标识信息;
第一确定单元,用于若由所述应用程序中的其它源程序文件编译生成的二进制文件的引用信息中未记录有所述源程序文件的标识信息,则确定所述源程序文件为所述多余的源程序文件。
11.根据权利要求10所述的装置,其特征在于,所述查找模块,还包括:
第二检测单元,用于检测所述应用程序中的布局文件和信息描述文件中是否记录有所述源程序文件的标识信息;
所述第一确定单元,用于若由所述应用程序中的其它源程序文件编译生成的二进制文件的引用信息、所述布局文件和所述信息描述文件中均未记录有所述源程序文件的标识信息,则确定所述源程序文件为所述多余的源程序文件。
12.根据权利要求9所述的装置,其特征在于,
所述查找模块,还用于查找所述应用程序中多余的布局文件,所述多余的布局文件是指未被所述应用程序中的其它文件引用的布局文件;
所述删除模块,还用于删除所述多余的布局文件。
13.根据权利要求12所述的装置,其特征在于,所述查找模块,还包括:
第三检测单元,用于对于所述应用程序中的每一个布局文件,检测所述布局文件是否符合第一预设条件;其中,所述第一预设条件包括:所述应用程序中的源程序文件中未记录有第一关键词且所述应用程序中的其它布局文件中未记录有第二关键词,所述第一关键词用于指示在所述源程序文件中引用所述布局文件,所述第二关键词用于指示在所述其它布局文件中引用所述布局文件;
第二确定单元,用于若所述布局文件符合所述第一预设条件,则确定所述布局文件为所述多余的布局文件。
14.根据权利要求9所述的装置,其特征在于,
所述查找模块,还用于查找所述应用程序中多余的资源文件,所述多余的资源文件是指未被所述应用程序中的其它文件引用的资源文件;
所述删除模块,还用于删除所述多余的资源文件。
15.根据权利要求14所述的装置,其特征在于,所述查找模块,还包括:
第四检测单元,用于对于所述应用程序中的每一个资源文件,检测所述资源文件是否符合第二预设条件;其中,所述第二预设条件包括:所述应用程序中的源程序文件中未记录有第三关键词且所述应用程序中的布局文件中未记录有第四关键词,所述第三关键词用于指示在所述源程序文件中引用所述资源文件,所述第四关键词用于指示在所述布局文件中引用所述资源文件;
第三确定单元,用于若所述资源文件符合所述第二预设条件,则确定所述资源文件为所述多余的资源文件。
16.根据权利要求9至15任一项所述的装置,其特征在于,所述装置还包括:控制模块;
所述控制模块,用于在所述删除模块删除多余文件之后,再次调用所述第一获取模块、所述编译模块、所述第二获取模块和所述查找模块,若所述查找模块从所述应用程序中未查找到所述多余文件,则结束流程;
其中,所述多余文件包括多余的源程序文件、多余的布局文件和多余的资源文件。
CN201610724180.7A 2016-08-25 2016-08-25 对应用程序的文件进行清理的方法和装置 Active CN107783766B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610724180.7A CN107783766B (zh) 2016-08-25 2016-08-25 对应用程序的文件进行清理的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610724180.7A CN107783766B (zh) 2016-08-25 2016-08-25 对应用程序的文件进行清理的方法和装置

Publications (2)

Publication Number Publication Date
CN107783766A true CN107783766A (zh) 2018-03-09
CN107783766B CN107783766B (zh) 2020-06-02

Family

ID=61438423

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610724180.7A Active CN107783766B (zh) 2016-08-25 2016-08-25 对应用程序的文件进行清理的方法和装置

Country Status (1)

Country Link
CN (1) CN107783766B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108628615A (zh) * 2018-03-22 2018-10-09 阿里巴巴集团控股有限公司 一种废弃代码检测方法、装置以及设备
CN108897569A (zh) * 2018-05-30 2018-11-27 福建天晴在线互动科技有限公司 iOS工程无用文件的清理方法及计算机可读存储介质
CN109343860A (zh) * 2018-08-23 2019-02-15 腾讯科技(深圳)有限公司 一种清理游戏补丁的方法、装置、服务器及介质
CN110659081A (zh) * 2019-09-10 2020-01-07 北京达佳互联信息技术有限公司 用于程序对象的文件处理方法、装置及电子设备
CN111176717A (zh) * 2019-12-20 2020-05-19 广州华多网络科技有限公司 生成安装包的方法、装置及电子设备
CN111538502A (zh) * 2020-03-27 2020-08-14 北京达佳互联信息技术有限公司 安装包的处理方法、装置、电子设备及存储介质
CN113448932A (zh) * 2020-03-25 2021-09-28 北京沃东天骏信息技术有限公司 一种应用程序的优化方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7353503B2 (en) * 2002-12-27 2008-04-01 Sun Microsystems, Inc. Efficient dead code elimination

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7353503B2 (en) * 2002-12-27 2008-04-01 Sun Microsystems, Inc. Efficient dead code elimination

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
SDQDPDLDYQ: ""eclipse里怎么查看变量(包括类)和方法的调用位置"", 《HTTPS://BLOG.CSDN.NET/SDQDPDLDYQ/ARTICLE/DETAILS/47311371》 *
WEIXIN_34191845: ""如何在使用eclipse的情况下,清理android项目中的冗余class文件和资源文件以及冗余图片"", 《HTTPS://BLOG.CSDN.NET/WEIXIN_34191845/ARTICLE/DETAILS/86316506》 *
花落惊雨辰: ""如何有效的清除Android中无用的资源(静态代码分析)"", 《HTTPS://BLOG.CSDN.NET/U010299178/ARTICLE/DETAILS/52303590》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108628615A (zh) * 2018-03-22 2018-10-09 阿里巴巴集团控股有限公司 一种废弃代码检测方法、装置以及设备
CN108628615B (zh) * 2018-03-22 2022-03-04 创新先进技术有限公司 一种废弃代码检测方法、装置以及设备
CN108897569A (zh) * 2018-05-30 2018-11-27 福建天晴在线互动科技有限公司 iOS工程无用文件的清理方法及计算机可读存储介质
CN109343860A (zh) * 2018-08-23 2019-02-15 腾讯科技(深圳)有限公司 一种清理游戏补丁的方法、装置、服务器及介质
CN110659081A (zh) * 2019-09-10 2020-01-07 北京达佳互联信息技术有限公司 用于程序对象的文件处理方法、装置及电子设备
CN110659081B (zh) * 2019-09-10 2022-12-27 北京达佳互联信息技术有限公司 用于程序对象的文件处理方法、装置及电子设备
CN111176717A (zh) * 2019-12-20 2020-05-19 广州华多网络科技有限公司 生成安装包的方法、装置及电子设备
CN111176717B (zh) * 2019-12-20 2023-05-16 广州华多网络科技有限公司 生成安装包的方法、装置及电子设备
CN113448932A (zh) * 2020-03-25 2021-09-28 北京沃东天骏信息技术有限公司 一种应用程序的优化方法和装置
CN111538502A (zh) * 2020-03-27 2020-08-14 北京达佳互联信息技术有限公司 安装包的处理方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN107783766B (zh) 2020-06-02

Similar Documents

Publication Publication Date Title
CN107783766A (zh) 对应用程序的文件进行清理的方法和装置
CN107644286B (zh) 工作流处理方法及装置
US9600134B2 (en) Selecting portions of computer-accessible documents for post-selection processing
CN109739855B (zh) 实现数据表拼接及自动训练机器学习模型的方法和系统
CN103597469A (zh) 集成开发环境中的实况浏览器工具
JP2018116496A (ja) 差異検出装置及びプログラム
CN114416667A (zh) 快速分享网盘文件的方法、装置、网盘及存储介质
CN113407284A (zh) 导航界面的生成方法、装置、存储介质及电子设备
US9361210B2 (en) Capturing domain validations and domain element initializations
CN112445514B (zh) 一种代码评审方法及相关产品
CN105354506B (zh) 隐藏文件的方法和装置
Mäder et al. Ready-to-use traceability on evolving projects
JP2009253847A (ja) 情報処理装置およびその制御方法、プログラム、記憶媒体
CN113805861B (zh) 基于机器学习的代码生成方法、代码编辑系统及存储介质
CN115599388A (zh) 一种api接口文档生成方法、存储介质及电子设备
CN114253920A (zh) 一种交易重新排序方法、装置、设备及可读存储介质
JP6631091B2 (ja) 情報処理装置及び情報処理プログラム
CN111352917B (zh) 信息录入方法、装置、电子设备及存储介质
CN110309315B (zh) 模板文件的生成方法、装置、计算机可读介质及电子设备
JP6123519B2 (ja) 情報処理装置及び情報処理プログラム
JP5808264B2 (ja) コード生成装置及びコード生成方法及びプログラム
JP4925711B2 (ja) 一括登録情報生成装置及び一括登録情報生成方法及び一括登録情報生成プログラム
CN112445790B (zh) 一种报表数据存储方法、装置、设备及介质
CN113268412B (zh) Web系统测试用例录制的控件解析方法、装置、设备和介质
CN116541305B (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