CN114995839A - 应用资源的处理方法、装置、电子设备及存储介质 - Google Patents

应用资源的处理方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN114995839A
CN114995839A CN202210498986.4A CN202210498986A CN114995839A CN 114995839 A CN114995839 A CN 114995839A CN 202210498986 A CN202210498986 A CN 202210498986A CN 114995839 A CN114995839 A CN 114995839A
Authority
CN
China
Prior art keywords
resource
application
application program
resources
subclass
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.)
Pending
Application number
CN202210498986.4A
Other languages
English (en)
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 Chengshi Wanglin Information Technology Co Ltd
Original Assignee
Beijing Chengshi Wanglin 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 Chengshi Wanglin Information Technology Co Ltd filed Critical Beijing Chengshi Wanglin Information Technology Co Ltd
Priority to CN202210498986.4A priority Critical patent/CN114995839A/zh
Publication of CN114995839A publication Critical patent/CN114995839A/zh
Pending legal-status Critical Current

Links

Images

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)

Abstract

本发明实施例提供了一种应用资源的处理方法、装置、电子设备及存储介质,可以先获取应用程序中目标资源的目标资源子类,然后根据目标资源子类从应用程序对应的预设安装包中,提取应用程序的有效应用资源,接着将有效应用资源与应用程序对应的预设资源集合进行比对,获得应用程序中的无效应用资源,在打包应用程序的安装包时,可以从预设资源集合中删除无效应用资源,生成与应用程序对应的目标安装包,从而基于所获取的有效应用资源从预设资源集合中反查出应用程序的无效应用资源,实现有效且快速地对无效应用资源进行定位,提高了应用资源查找的效率,且可以在安装包打包时,对无效应用资源进行删除,大大减少了目标安装包的资源负担、体积。

Description

应用资源的处理方法、装置、电子设备及存储介质
技术领域
本发明涉及应用数据处理技术领域,特别是涉及一种应用资源的处理方法、一种应用资源的处理装置、一种电子设备以及一种计算机可读存储介质。
背景技术
随着移动互联网的快速发展,智能终端日渐成为人机交互的主要平台。在现实生活中,智能终端已经成为每个人必备的,也是人们每天与世界交互的窗口,对每个人而言都有很重要的作用。其中,在应用程序的应用安装包中通常会内置很多应用资源,如图片资源、音频资源、文本资源等,以便用户在无网的情况下保证产品良好的用户使用体验。然而,随着应用程序版本的迭代,某些应用功能可能已经取消,但相应的应用资源依旧会被打包至应用程序的应用安装包中,从而导致应用安装包中存在无效的应用资源,增加了应用安装包的体积,给用户下载或更新等带来了更大的流量消耗,且容易占据终端的存储内存,大大降低了用户的使用体验。
发明内容
本发明实施例是提供一种应用资源的处理方法、装置、电子设备以及计算机可读存储介质,以解决或部分解决应用程序的安装包中存在无效资源导致安装包体积大的问题。
本发明实施例公开了一种应用资源的处理方法,所述方法包括:
获取应用程序中目标资源的目标资源子类;
根据所述目标资源子类,从所述应用程序对应的预设安装包中,提取所述应用程序的有效应用资源;
将所述有效应用资源与所述应用程序对应的预设资源集合进行比对,获得所述应用程序中的无效应用资源;
响应于针对安装包的打包指令,从所述预设资源集合中删除所述无效应用资源,生成与所述应用程序对应的目标安装包。
可选地,所述目标资源子类通过如下方式生成:
获取所述应用程序的资源父类,所述资源父类包括初始资源子类,所述初始资源子类包括初始资源获取函数;
获取所述应用程序中当前使用的应用资源的资源信息以及集合框架类;
将所述资源信息与所述集合框架类写入所述初始资源子类,生成所述目标资源子类。
可选地,所述有效应用资源包括所述应用程序的运行使用资源,所述预设安装包包括若干个应用组件,所述根据所述目标资源子类,从所述应用程序对应的预设安装包中,提取所述应用程序的有效应用资源,包括:
采用所述目标资源子类从各个所述应用组件中,提取所述应用程序的运行使用资源。
可选地,所述应用程序对应一布局文件,所述方法还包括:
获取文件解析接口,以及与所述文件解析接口对应的布局填充工厂类;
对所述布局文件进行解析,获得所述布局文件的配置数据。
可选地,所述布局填充工厂类包括属性获取函数,所述根据所述目标资源子类,从所述应用程序对应的预设安装包中,提取所述应用程序的有效应用资源,还包括:
获取与所述属性获取函数对应的资源类别;
采用所述属性获取函数从所述布局文件的配置数据中获取所述资源类别对应的资源属性;
采用所述目标资源子类与所述资源属性从各个所述应用组件中,提取所述应用程序的预加载资源。
可选地,所述资源属性至少包括资源路径以及控件信息,所述采用所述目标资源子类与所述资源属性从各个所述应用组件中,提取所述应用程序的预加载资源,包括:
采用所述目标资源子类、所述资源路径以及所述控件信息从各个所述应用组件中,提取所述应用程序的预加载资源。
可选地,所述将所述有效应用资源与所述应用程序对应的预设资源集合进行比对,获得所述应用程序中的无效应用资源,包括:
将所述运行使用资源和所述预加载资源与所述应用程序对应的预设资源集合进行比对,获得所述应用程序中的无效应用资源。
本发明实施例公开了一种应用资源的处理装置,所述装置包括:
目标资源子类获取模块,用于获取应用程序中目标资源的目标资源子类;
有效应用资源提取模块,用于根据所述目标资源子类,从所述应用程序对应的预设安装包中,提取所述应用程序的有效应用资源;
无效应用资源获取模块,用于将所述有效应用资源与所述应用程序对应的预设资源集合进行比对,获得所述应用程序中的无效应用资源;
目标安装包生成模块,用于响应于针对安装包的打包指令,从所述预设资源集合中删除所述无效应用资源,生成与所述应用程序对应的目标安装包。
可选地,所述目标资源子类通过如下模块生成:
资源父类获取模块,用于获取所述应用程序的资源父类,所述资源父类包括初始资源子类,所述初始资源子类包括初始资源获取函数;
资源信息获取模块,用于获取所述应用程序中当前使用的应用资源的资源信息以及集合框架类;
目标资源子类生成模块,用于将所述资源信息与所述集合框架类写入所述初始资源子类,生成所述目标资源子类。
可选地,所述有效应用资源包括所述应用程序的运行使用资源,所述预设安装包包括若干个应用组件,所述有效应用资源提取模块包括:
运行使用资源提取子模块,用于采用所述目标资源子类从各个所述应用组件中,提取所述应用程序的运行使用资源。
可选地,所述应用程序对应一布局文件,所述装置还包括:
布局填充工厂类获取模块,用于获取文件解析接口,以及与所述文件解析接口对应的布局填充工厂类;
配置数据获取模块,用于对所述布局文件进行解析,获得所述布局文件的配置数据。
可选地,所述布局填充工厂类包括属性获取函数,所述有效应用资源提取模块还包括:
资源类别获取子模块,用于获取与所述属性获取函数对应的资源类别;
资源属性获取子模块,用于采用所述属性获取函数从所述布局文件的配置数据中获取所述资源类别对应的资源属性;
预加载资源提取子模块,用于采用所述目标资源子类与所述资源属性从各个所述应用组件中,提取所述应用程序的预加载资源。
可选地,所述资源属性至少包括资源路径以及控件信息,所述预加载资源提取子模块具体用于:
采用所述目标资源子类、所述资源路径以及所述控件信息从各个所述应用组件中,提取所述应用程序的预加载资源。
可选地,所述无效应用资源获取模块具体用于:
将所述运行使用资源和所述预加载资源与所述应用程序对应的预设资源集合进行比对,获得所述应用程序中的无效应用资源。
本发明实施例还公开了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口以及所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行存储器上所存放的程序时,实现如本发明实施例所述的方法。
本发明实施例还公开了一种计算机可读存储介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如本发明实施例所述的方法。
本发明实施例包括以下优点:
在本发明实施例中,可以先获取应用程序的目标资源子类,接着通过目标资源子类从应用程序对应的预设安装包中,提取出应用程序的有效应用资源,然后将有效应用资源与应用程序对应的预设资源集合进行比对,获得应用程序中的无效应用资源,并响应于针对安装包的打包指令,从预设资源集合中删除无效应用资源,生成与应用程序对应的目标安装包,从而采用目标资源子类从应用程序中的所有应用资源快速获取有效应用资源,并通过资源比对的方式,基于所获取的有效应用资源从预设资源集合中反查出应用程序的无效应用资源,有效且快速地对应用程序的无效应用资源进行定位,提高了应用资源查找的效率,且可以在安装包进行打包时,对无效应用资源进行删除,大大减少了目标安装包的资源负担、体积。
附图说明
图1是本发明实施例中提供的一种应用资源的处理方法的步骤流程图;
图2是本发明实施例中提供的一种应用资源的处理方法的步骤流程图;
图3是本发明实施例中提供的一种应用资源的处理装置的结构框图;
图4是本发明实施例中提供的一种电子设备的框图;
图5是本发明实施例中提供的一种计算机可读介质的示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
随着移动互联网的快速发展,智能终端日渐成为人机交互的主要平台。尤其在现实生活中,人们可以通过智能终端使用应用程序中的各个功能,每个应用程序的应用安装包中通常内置了许多应用资源,如图片资源、音频资源、文本资源等,以便用户在无网的情况下保证产品良好的用户使用体验,在实际应用中,为了满足用户使用需求或者优化应用程序的各个功能,需要相关技术人员不定时地对应用程序进行更新迭代,相关技术人员可以针对不同的更新需求或者优化需求,可以通过弃用某些方法,实现取消旧版本中应用程序的某些应用功能,然后生成新版本的应用安装包,并进行发布,但是在新版本的应用安装包中可能仍然存在与被取消的应用功能对应的应用资源。
作为一种示例,智能终端中存在社交应用程序①,相关技术人员当前优化的社交应用程序①的版本号为v5.1,而在于该社交应用程序①对应的应用安装包中包括了旧版本号v4.1,以及旧版本号v4.2所对应的部分被弃用的应用功能对应的应用资源数据,因此,若相关技术人员直接将版本号为v5.1的应用安装包发布至下载平台,以供用户下载,则存在社交应用程序①的应用安装包体积过大、无效应用资源的数据量大,从而导致新版本的应用安装包存在无效的应用资源,造成资源负担、用户转化率低以及用户体验感差等问题。
对此,本发明实施例的核心发明点之一在于可以先获取应用程序的目标资源子类,接着通过目标资源子类从应用程序对应的预设安装包中,提取出应用程序的有效应用资源,然后将有效应用资源与应用程序对应的预设资源集合进行比对,获得应用程序中的无效应用资源,并响应于针对安装包的打包指令,从预设资源集合中删除无效应用资源,生成与应用程序对应的目标安装包,从而采用目标资源子类从应用程序中的所有应用资源快速获取有效应用资源,并通过资源比对的方式,基于所获取的有效应用资源从预设资源集合中反查出应用程序的无效应用资源,有效且快速地对应用程序的无效应用资源进行定位,提高了应用资源查找的效率,且可以在安装包进行打包时,对无效应用资源进行删除,大大减少了目标安装包的资源负担、体积。
参照图1,示出了本发明实施例中提供的一种应用资源的处理方法的步骤流程图,具体可以包括如下步骤:
步骤101,获取应用程序中目标资源的目标资源子类;
在本发明实施例中,相关技术人员可以采用一种面向对象的程序设计语言编写应用程序,例如可以使用Java语言实现应用程序的各种应用功能,Java是一门面向对象编程语言,其不仅具备C/C++语言的各种优点,还摒弃了C/C++里难以理解的多继承、指针等概念,因此,Java语言具有功能强大和简单易用两个特征,其作为静态面向对象编程语言的代表,实现了面向对象理论,在Java中,父类的意义在于可以抽取多类事物的共性,而在有继承关系的类中关键字“extends”前面的类则为子类,由于子类中有和父类中可访问(可继承到子类)的同名同返回类型同参数表的方法,所以子类可以继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或者子类从父类继承方法,使得子类具有父类相同的行为。
可选地,应用程序可以为生活类应用程序、音频应用程序以及游戏应用程序等。其中,生活类应用程序又可以根据类型不同进一步进行划分,例如社交应用程序、休闲娱乐应用程序、家政服务应用程序等。本申请实施例以在智能终端上,如智能手机运行社交应用程序作为目标应用程序进行示例性说明,可以理解的是,本发明不局限于此。
具体的,目标资源为预设安装包中的图片资源、视频资源、音频资源以及文字资源,则应用程序中目标资源的目标资源子类可以为拥有与不同应用资源的父类的全部属性和全部操作,且同时具有特定属性或操作的类,其包括查找、获取图片资源、视频资源、音频资源以及文字资源等多种方法,例如,针对社交应用程序中的图片资源,目标资源子类可以为自定义的与图片资源对应的“ResourceProxy类”。
在具体实现中,目标资源子类可以通过以下子步骤生成:
步骤S11,获取所述应用程序的资源父类,所述资源父类包括初始资源子类,所述初始资源子类包括初始资源获取函数;
具体的,资源父类可以为被目标资源子类继承的类,也被称为超类,因此,在生成目标资源子类之前需要先获取应用程序中与不同应用资源对应的资源父类,如与图片资源对应的“Resource类”,然后在继承系统“Resource类”中自定义初始资源子类“ResourceProxy类”,并且可以在初始资源子类中针对不同的应用资源重写不同的初始资源获取函数,例如针对应用程序中的图片资源,可以在初始资源子类中重写“getDrawable方法”,相应的,针对文字资源、音频资源等应用资源可以采用与应用资源的类型相对应的初始资源获取函数,本发明对此不作限制,从而通过在初始资源获取函数自定义所需的应用资源的相关信息,获取与自定义的相关信息对应的应用资源,例如,自定义的相关信息可以为:获取应用程序中当前使用的图片资源,或者获取应用程序中当前使用的文字资源等等。
步骤S12,获取所述应用程序中当前使用的应用资源的资源信息以及集合框架类;
具体的,可以通过先在初始资源子类中重写getDrawable方法获取应用程序中当前使用的应用资源,然后获取与当前使用的应用资源所对应的资源信息以及集合框架类,例如,应用程序的应用资源可以为图片资源,而图片资源的资源信息可以为图片名称、图片的资源路径等信息,然后根据集合框架类生成用于存储应用资源的集合对象,如可以通过集合框架类生成用于存储图片资源的图片名称的内存集合,从而采用集合框架类将当前使用的应用资源对应的资源信息存储至集合对象中,以使相关技术人员快速地从应用程序中提取到所需的应用资源,提高了应用资源查找的效率。
其中,集合框架类由Java提供,其可以用于存储多个元素,集合框架类中包括各种不同的集合对象,例如,可以通过ArrayList实现添加、删除、修改、遍历等功能,还可以通过HashSet实现存储不重复的对象的功能,进而使用ArrayList或HashSet等集合对象存储应用资源对应的资源信息,方便后续采用集合对象将当前使用的资源信息上传至服务端。
步骤S13,将所述资源信息与所述集合框架类写入所述初始资源子类,生成所述目标资源子类。
具体的,可以将应用资源对应的资源信息以及集合框架类写入至包括初始资源获取函数的初始资源子类中,生成同时具有查找应用资源、获取应用资源的资源信息以及记录资源信息等功能的目标资源子类。
步骤102,根据所述目标资源子类,从所述应用程序对应的预设安装包中,提取所述应用程序的有效应用资源;
在本发明实施例中,通过在目标资源子类中重写了初始资源获取函数获取当前使用的应用资源,同时在目标资源子类中为应用资源配置了相应的集合框架类,使用由集合框架类生成的集合对象存储应用资源的资源信息,然后从应用程序的预设安装包中提取应用程序的有效应用资源。
可选地,Android应用可以采用高级编程语言“Java”进行编写,它利用了AndroidSDK编译代码,并且把所有资源文件和数据统一打包成APK(Application Package)文件,预设安装包可以为未正式发布的应用程序安装包APK(Android Package,简称APK),其包含了应用程序的资源配置文件、二进制文件、资源索引表、资源文件、证书签名文件以及布局文件等等。其中,资源文件可以存储于Res(Resource)目录中,资源文件中的每一个文件都可以映射到Android工程中的.R文件,并生成对应的资源ID,在访问时可以直接使用资源ID执行索引操作,此外,Res目录下还可以包含多种文件夹,如drawable目录用于存放图形资源,layout目录用于存放布局文件,values目录用于存放特征值,colors.xml用于存放color的颜色值等等。资源配置文件包含了应用程序的名称、版本号、用户权限、注册服务、链接的其他应用程序、声明四大组件以及调用信息等等,其可以用于记录资源文件和资源ID之间的映射关系,从而当用户使用自定义的目标资源子类从APK中提取有效应用资源时,可以根据应用资源的资源ID查找对应的资源路径,确定出所查找的有效应用资源。
具体的,有效应用资源可以为最新版本的应用程序中调用的资源数据,例如,应用程序中当前正在显示的图片资源数据、当前未显示且被指定引用的图片资源数据,在提取当前使用的有效应用资源的过程中,可以按照应用资源的调用方式将有效应用资源划分为通过代码调用的运行使用资源,以及通过布局文件指定引用的预加载资源,并对不同的有效应用资源采用不同方式进行资源定位或者资源提取,保证了所提取的应用资源的完整性、准确性。
在本发明的一种实施例中,预设安装包中包括了若干个应用组件,若有效应用资源为应用程序中当前使用的运行使用资源,则可以直接采用目标资源子类从各个应用组件中提取应用程序的运行使用资源。
可选地,运行使用资源可以为在Java程序代码中通过调用方法进行控制的应用资源,预设安装包的应用组件可以为若干个Activity组件,该组件为用户与应用程序进行交互的可视界面,其可以包括按钮、图像、TextView或者其他可视组件,可以通过目标资源子类从各个Activity组件中获取视图组件对象,然后以组件的资源ID作为参数,返回一个视图对象,获取与视图对象对应的运行使用资源。
在一种示例中,假设应用程序为社交应用程序,运行使用资源为社交应用程序当前使用的图片资源,则可以在针对图片资源继承系统Resource类(资源父类)自定义ResourceProxy类(目标资源子类),并重写getDrawable方法(初始资源获取函数),采用重写后的getDrawable方法获取当前使用的图片资源名称,并当前使用的图片资源名称(资源信息)保存至内存集合(集合框架类)中,当社交应用程序进入后台时,可以将包括了当前使用的图片资源名称的内存集合上报给服务端,从而通过重写getDrawable方法,实现从各个Activity组件中快速获取当前使用的图片资源。
在本发明的另一种实施例中,应用程序对应有一布局文件,若有效应用资源为应用程序中被指定引用的预加载资源,则可以先获取文件解析接口,以及与文件解析接口对应的布局填充工厂类,然后对布局文件进行解析,从而获得布局文件的配置数据。
可选地,预加载资源可以为在布局文件中通过xml属性进行引用的应用资源,布局文件用于在Android应用的res/layout目录下定义用户界面的文件,文件解析接口可以为LayoutInflater.Factory2接口,用于实现属性的获取和View的重建,布局填充工厂类可以为与LayoutInflater.Factory2接口对应的类,至少包括了用于进行属性解析的属性获取函数,在Android系统中,采用XmlpullParser等解析器解析xml布局文件之后,需要先判断是否存在指定LayoutInflater.Factory2接口的类,若存在指定该接口的类,则可以调用指定类中的方法,进行属性解析,获取该布局文件的配置数据。
在具体实现中,可以预先在布局填充工厂类中写入属性获取函数,例如针对社交应用程序的图片资源,属性获取函数可以为onCreateView方法以及onCreate方法,onCreate方法是在Activity初始化的时候调用的,子类在重写onCreate方法的时候必须调用父类的onCreate方法,避免抛出异常,然后通过Activity组件中的onCreateView,实现创建View,进而获取应用资源的属性,然后根据属性获取函数的类型确定出所需的应用资源的资源类别,如图片资源、文字资源、音频资源等等,然后采用属性获取函数从布局文件的配置数据中得到与资源类别对应的至少一个资源属性,然后采用目标资源子类与资源属性从各个应用组件中,提取应用程序的预加载资源。
具体的,配置数据可以为布局文件的控件宽度、控件高度、控件排布方向、控件间距、控件显示位置、TextView中文本字体、控件可见、定义背景图片、父布局中的相对位置以及某个控件的相对位置等等,利用属性获取函数获取的资源属性至少包括资源路径以及控件信息,其中,控件信息可以为定义背景图片“background”,因此,通过目标资源子类、资源路径以及控件信息可以从各个应用组件中,提取应用程序的预加载资源。
在一种示例中,假设应用程序为社交应用程序,预加载资源为应用程序中被指定引用的图片资源,可以先自定义布局填充工厂类实现LayoutInflater.Factory2接口,并使用字节码插桩技术在所有Activity组件的onCreate方法中调用super之前通过布局填充工厂类实现onCreateView方法,进而利用onCreateView方法以及onCreate方法在所有Activity组件中获取布局文件的src(资源路径)和background属性所指定引用的图片资源ID,然后调用Resource类的getDrawable方法获取当前使用的图片资源名称,并保存当前使用的图片资源名称到内存集合中,当社交应用程序进入后台时,可以将包括指定引用的图片资源名称的内存集合上报给服务端,从而通过目标资源子类、LayoutInflater.Factory2接口、布局填充工厂类以及getDrawable方法,实现从各个Activity组件中快速获取被指定引用的图片资源,并利用字节码插桩技术监控被指定引用的图片资源,统计出获取的指定引用的图片资源的资源名称。
步骤103,将所述有效应用资源与所述应用程序对应的预设资源集合进行比对,获得所述应用程序中的无效应用资源;
在本发明实施例中,预设资源集合可以为应用程序所有的应用资源,其可以包括当前使用的运行使用资源、指定引用的预加载资源以及应用程序更新过程中被弃用的应用功能对应的无效应用资源,其中,无效应用资源为在最新版本的应用程序中与任一应用功能均不存在关联关系的资源,例如,在最新版本的应用程序中取消了用于查找数据的控件,则与该控件对应的图片资源数据为无效应用资源。
在具体实现中,可以将运行使用资源和预加载资源与应用程序对应的预设资源集合进行比对,获得应用程序中的无效应用资源,从而通过将应用程序中当前使用的运行使用资源以及指定引用的预加载资源与APK中所有的应用资源进行资源信息的比对,反查出无效应用资源。
在一种示例中,假设应用程序为社交应用程序,则可以先通过Resource对象调用getDrawable方法获取当前使用的图片资源A,然后获取布局文件xml中与src或background属性对应的指定引用的图片资源B,然后在应用程序进入后台时,将图片资源A与图片资源B对应的资源信息记录至集合对象中,并上传至服务端,服务端可以将图片资源A与图片资源B分别与APK中的所有应用资源进行图片名称的比对,图片名称比对相同的则为有效应用资源,图片名称比对不相同的则为无效应用资源。
步骤104,响应于针对安装包的打包指令,从所述预设资源集合中删除所述无效应用资源,生成与所述应用程序对应的目标安装包。
在本发明实施例中,服务端通过将运行使用资源、预加载资源与预设资源集合中的所有应用资源进行比对,获得针对当前版本的应用程序的无效应用程序,然后响应于针对应用程序的安装包的打包指令,相关技术人员可以按照实际需求从预设资源集合中删除无效应用资源,并生成与当前版本的应用程序对应的目标安装包,以减少安装包的大小,进而提升用户转化率。
可选地,与应用程序对应的目标安装包包括当前使用的运行使用资源和指定引用的预加载资源,相关技术人员可以将删除了部分或者全部无效应用资源的目标安装包进行发布,以供用户下载更新,实现减轻资源负担、提高用户转化率以及用户体验感的效果。
在本发明实施例中,可以先获取应用程序的目标资源子类,接着通过目标资源子类从应用程序对应的预设安装包中,提取出应用程序的有效应用资源,然后将有效应用资源与应用程序对应的预设资源集合进行比对,获得应用程序中的无效应用资源,并响应于针对安装包的打包指令,从预设资源集合中删除无效应用资源,生成与应用程序对应的目标安装包,从而采用目标资源子类从应用程序中的所有应用资源快速获取有效应用资源,并通过资源比对的方式,基于所获取的有效应用资源从预设资源集合中反查出应用程序的无效应用资源,有效且快速地对应用程序的无效应用资源进行定位,提高了应用资源查找的效率,且可以在安装包进行打包时,对无效应用资源进行删除,大大减少了目标安装包的资源负担、体积。
为了使本领域技术人员更好地理解本发明实施例的技术方案,下面通过一个例子,以及参照图2示出的流程图对本发明实施例进行说明。
在处理应用资源之前,先按照不同的调用方式将应用程序中当前使用的有效应用资源分为:运行使用资源与预加载资源,并采用不同的提取方式获取有效应用资源中的资源信息,如资源名称等。
S21、针对当前使用的运行使用资源,若运行使用资源为图片资源,则先在继承系统Resource类自定义ResourceProxy类,然后重写getDrawable方法,获取图片资源,并将图片资源名称保存至使用图片资源集合中,待应用程序进入后台时,将使用图片资源集合上报至服务端。
S22、针对指定引用的预加载资源,若预加载资源为图片资源,则自定义布局填充工厂类实现LayoutInflater.Factory2接口,并实现onCreateView方法,在onCreateView方法中获取src和background属性值,从而获取到与src和background等属性值对应的图片资源,接着调用Resource类中的getDrawable方法触发S11中针对图片资源名称的上报逻辑。
S23、编写gradle插件,在打包过程中实现字节码插桩,重写所有Activity组件的getResources方法,返回自定义的ResourceProxy类,在onCreate方法中调用super之前指定自定义的布局填充工厂类。
S24、服务端根据apk中内置图片资源集合和在使用图片资源集合反查出线上未使用的图片资源集合,即无效应用资源。
S25、相关技术人员根据实际情况删除线上无效应用资源以便减少应用程序的安装包安装包大小。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图3,示出了本发明实施例中提供的一种应用资源的处理装置的结构框图,具体可以包括如下模块:
目标资源子类获取模块301,用于获取应用程序中目标资源的目标资源子类;
有效应用资源提取模块302,用于根据所述目标资源子类,从所述应用程序对应的预设安装包中,提取所述应用程序的有效应用资源;
无效应用资源获取模块303,用于将所述有效应用资源与所述应用程序对应的预设资源集合进行比对,获得所述应用程序中的无效应用资源;
目标安装包生成模块304,用于响应于针对安装包的打包指令,从所述预设资源集合中删除所述无效应用资源,生成与所述应用程序对应的目标安装包。
在一种可选实施例中,所述目标资源子类通过如下模块生成:
资源父类获取模块,用于获取所述应用程序的资源父类,所述资源父类包括初始资源子类,所述初始资源子类包括初始资源获取函数;
资源信息获取模块,用于获取所述应用程序中当前使用的应用资源的资源信息以及集合框架类;
目标资源子类生成模块,用于将所述资源信息与所述集合框架类写入所述初始资源子类,生成所述目标资源子类。
在一种可选实施例中,所述有效应用资源包括所述应用程序的运行使用资源,所述预设安装包包括若干个应用组件,所述有效应用资源提取模块302包括:
运行使用资源提取子模块,用于采用所述目标资源子类从各个所述应用组件中,提取所述应用程序的运行使用资源。
在一种可选实施例中,所述应用程序对应一布局文件,所述装置还包括:
布局填充工厂类获取模块,用于获取文件解析接口,以及与所述文件解析接口对应的布局填充工厂类;
配置数据获取模块,用于对所述布局文件进行解析,获得所述布局文件的配置数据。
在一种可选实施例中,所述布局填充工厂类包括属性获取函数,所述有效应用资源提取模块302还包括:
资源类别获取子模块,用于获取与所述属性获取函数对应的资源类别;
资源属性获取子模块,用于采用所述属性获取函数从所述布局文件的配置数据中获取所述资源类别对应的资源属性;
预加载资源提取子模块,用于采用所述目标资源子类与所述资源属性从各个所述应用组件中,提取所述应用程序的预加载资源。
在一种可选实施例中,所述资源属性至少包括资源路径以及控件信息,所述预加载资源提取子模块具体用于:
采用所述目标资源子类、所述资源路径以及所述控件信息从各个所述应用组件中,提取所述应用程序的预加载资源。
在一种可选实施例中,所述无效应用资源获取模块303具体用于:
将所述运行使用资源和所述预加载资源与所述应用程序对应的预设资源集合进行比对,获得所述应用程序中的无效应用资源。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
另外,本发明实施例还提供一种电子设备,如图4所示,包括处理器401、通信接口402、存储器403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信,
存储器403,用于存放计算机程序;
处理器401,用于执行存储器403上所存放的程序时,实现如下步骤:
获取应用程序中目标资源的目标资源子类;
根据所述目标资源子类,从所述应用程序对应的预设安装包中,提取所述应用程序的有效应用资源;
将所述有效应用资源与所述应用程序对应的预设资源集合进行比对,获得所述应用程序中的无效应用资源;
响应于针对安装包的打包指令,从所述预设资源集合中删除所述无效应用资源,生成与所述应用程序对应的目标安装包。
在一种可选实施例中,所述目标资源子类通过如下方式生成:
获取所述应用程序的资源父类,所述资源父类包括初始资源子类,所述初始资源子类包括初始资源获取函数;
获取所述应用程序中当前使用的应用资源的资源信息以及集合框架类;
将所述资源信息与所述集合框架类写入所述初始资源子类,生成所述目标资源子类。
在一种可选实施例中,所述有效应用资源包括所述应用程序的运行使用资源,所述预设安装包包括若干个应用组件,所述根据所述目标资源子类,从所述应用程序对应的预设安装包中,提取所述应用程序的有效应用资源,包括:
采用所述目标资源子类从各个所述应用组件中,提取所述应用程序的运行使用资源。
在一种可选实施例中,所述应用程序对应一布局文件,所述方法还包括:
获取文件解析接口,以及与所述文件解析接口对应的布局填充工厂类;
对所述布局文件进行解析,获得所述布局文件的配置数据。
在一种可选实施例中,所述布局填充工厂类包括属性获取函数,所述根据所述目标资源子类,从所述应用程序对应的预设安装包中,提取所述应用程序的有效应用资源,还包括:
获取与所述属性获取函数对应的资源类别;
采用所述属性获取函数从所述布局文件的配置数据中获取所述资源类别对应的资源属性;
采用所述目标资源子类与所述资源属性从各个所述应用组件中,提取所述应用程序的预加载资源。
在一种可选实施例中,所述资源属性至少包括资源路径以及控件信息,所述采用所述目标资源子类与所述资源属性从各个所述应用组件中,提取所述应用程序的预加载资源,包括:
采用所述目标资源子类、所述资源路径以及所述控件信息从各个所述应用组件中,提取所述应用程序的预加载资源。
在一种可选实施例中,所述将所述有效应用资源与所述应用程序对应的预设资源集合进行比对,获得所述应用程序中的无效应用资源,包括:
将所述运行使用资源和所述预加载资源与所述应用程序对应的预设资源集合进行比对,获得所述应用程序中的无效应用资源。
上述终端提到的通信总线可以是外设部件互连标准(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)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
如图5所示,在本发明提供的又一实施例中,还提供了一种计算机可读存储介质501,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中所述的应用资源的处理方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中所述的应用资源的处理方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (10)

1.一种应用资源的处理方法,其特征在于,包括:
获取应用程序中目标资源的目标资源子类;
根据所述目标资源子类,从所述应用程序对应的预设安装包中,提取所述应用程序的有效应用资源;
将所述有效应用资源与所述应用程序对应的预设资源集合进行比对,获得所述应用程序中的无效应用资源;
响应于针对安装包的打包指令,从所述预设资源集合中删除所述无效应用资源,生成与所述应用程序对应的目标安装包。
2.根据权利要求1所述的方法,其特征在于,所述目标资源子类通过如下方式生成:
获取所述应用程序的资源父类,所述资源父类包括初始资源子类,所述初始资源子类包括初始资源获取函数;
获取所述应用程序中当前使用的应用资源的资源信息以及集合框架类;
将所述资源信息与所述集合框架类写入所述初始资源子类,生成所述目标资源子类。
3.根据权利要求2所述的方法,其特征在于,所述有效应用资源包括所述应用程序的运行使用资源,所述预设安装包包括若干个应用组件,所述根据所述目标资源子类,从所述应用程序对应的预设安装包中,提取所述应用程序的有效应用资源,包括:
采用所述目标资源子类从各个所述应用组件中,提取所述应用程序的运行使用资源。
4.根据权利要求3所述的方法,其特征在于,所述应用程序对应一布局文件,所述方法还包括:
获取文件解析接口,以及与所述文件解析接口对应的布局填充工厂类;
对所述布局文件进行解析,获得所述布局文件的配置数据。
5.根据权利要求4所述的方法,其特征在于,所述布局填充工厂类包括属性获取函数,所述根据所述目标资源子类,从所述应用程序对应的预设安装包中,提取所述应用程序的有效应用资源,还包括:
获取与所述属性获取函数对应的资源类别;
采用所述属性获取函数从所述布局文件的配置数据中获取所述资源类别对应的资源属性;
采用所述目标资源子类与所述资源属性从各个所述应用组件中,提取所述应用程序的预加载资源。
6.根据权利要求5所述的方法,其特征在于,所述资源属性至少包括资源路径以及控件信息,所述采用所述目标资源子类与所述资源属性从各个所述应用组件中,提取所述应用程序的预加载资源,包括:
采用所述目标资源子类、所述资源路径以及所述控件信息从各个所述应用组件中,提取所述应用程序的预加载资源。
7.根据权利要求6所述的方法,其特征在于,所述将所述有效应用资源与所述应用程序对应的预设资源集合进行比对,获得所述应用程序中的无效应用资源,包括:
将所述运行使用资源和所述预加载资源与所述应用程序对应的预设资源集合进行比对,获得所述应用程序中的无效应用资源。
8.一种应用资源的处理装置,其特征在于,包括:
目标资源子类获取模块,用于获取应用程序中目标资源子类;
有效应用资源提取模块,用于根据所述目标资源子类,从所述应用程序对应的预设安装包中,提取所述应用程序的有效应用资源;
无效应用资源获取模块,用于将所述有效应用资源与所述应用程序对应的预设资源集合进行比对,获得所述应用程序中的无效应用资源;
目标安装包生成模块,用于响应于针对安装包的打包指令,从所述预设资源集合中删除所述无效应用资源,生成与所述应用程序对应的目标安装包。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口以及所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行存储器上所存放的程序时,实现如权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如权利要求1-7任一项所述的方法。
CN202210498986.4A 2022-05-09 2022-05-09 应用资源的处理方法、装置、电子设备及存储介质 Pending CN114995839A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210498986.4A CN114995839A (zh) 2022-05-09 2022-05-09 应用资源的处理方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210498986.4A CN114995839A (zh) 2022-05-09 2022-05-09 应用资源的处理方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN114995839A true CN114995839A (zh) 2022-09-02

Family

ID=83025816

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210498986.4A Pending CN114995839A (zh) 2022-05-09 2022-05-09 应用资源的处理方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN114995839A (zh)

Similar Documents

Publication Publication Date Title
CN111124906B (zh) 基于动态埋点的跟踪方法、编译方法、装置和电子设备
US11593342B2 (en) Systems and methods for database orientation transformation
CN110221899B (zh) 一种用户界面的调节方法、装置及系统
US11741002B2 (en) Test automation systems and methods using logical identifiers
CN112559026B (zh) 基于api接口的原生能力拓展方法、设备及存储介质
CN111475162A (zh) 页面生成方法、装置、服务器及存储介质
CN109284126B (zh) 类库自动更新方法、装置、电子设备、存储介质
CN114077430A (zh) 界面生成方法、装置、电子设备及存储介质
CN110188308B (zh) 客户端自动打点上报方法、存储介质、设备及系统
CN114138748A (zh) 数据库映射文件生成方法、装置、设备及存储介质
CN112631590A (zh) 组件库生成方法、装置、电子设备和计算机可读介质
CN112558940A (zh) 基于表格的网站页面开发方法、装置、设备及存储介质
CN115309516A (zh) 一种应用生命周期的检测方法、装置及计算机设备
CN115599386A (zh) 代码生成方法、装置、设备及存储介质
CN115357590A (zh) 针对数据变更的记录方法、装置、电子设备及存储介质
CN112748946B (zh) 应用程序安装文件生成方法和装置、计算设备、存储介质
CN112256377A (zh) 弹窗数据处理方法和装置
CN114995839A (zh) 应用资源的处理方法、装置、电子设备及存储介质
CN112346774A (zh) 一种应用安装包的生成方法和装置
CN114356290A (zh) 一种数据处理方法、装置及计算机可读存储介质
CN107506299B (zh) 一种代码分析方法及终端设备
CN113296854A (zh) 一种数据加载方法、系统、电子设备及存储介质
CN113760360A (zh) 一种文件生成方法、装置、设备及存储介质
CN113050950A (zh) 应用程序开发方法、装置、电子设备及机器可读存储介质
CN113986322B (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