CN112000364A - 应用程序的打包方法、装置、设备及存储介质 - Google Patents

应用程序的打包方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN112000364A
CN112000364A CN202010842561.1A CN202010842561A CN112000364A CN 112000364 A CN112000364 A CN 112000364A CN 202010842561 A CN202010842561 A CN 202010842561A CN 112000364 A CN112000364 A CN 112000364A
Authority
CN
China
Prior art keywords
resource
application program
picture
picture resource
sets
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
CN202010842561.1A
Other languages
English (en)
Other versions
CN112000364B (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.)
Guangzhou Baiguoyuan Information Technology Co Ltd
Original Assignee
Guangzhou Baiguoyuan 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 Guangzhou Baiguoyuan Information Technology Co Ltd filed Critical Guangzhou Baiguoyuan Information Technology Co Ltd
Priority to CN202010842561.1A priority Critical patent/CN112000364B/zh
Publication of CN112000364A publication Critical patent/CN112000364A/zh
Application granted granted Critical
Publication of CN112000364B publication Critical patent/CN112000364B/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/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • 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
    • 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/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/51Indexing; Data structures therefor; Storage structures

Landscapes

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

Abstract

本申请公开了一种应用程序的打包方法、装置、设备及存储介质,属于计算机和互联网技术领域。所述方法包括:在应用程序的项目构建过程中,获取应用程序所使用的图片资源集,该图片资源集包括第三方依赖库中的图片资源;基于获取的图片资源集,生成多套不同版本的图片资源集;其中,不同版本对应于不同分辨率等级;对应用程序的文件进行打包,生成应用程序的文件包;其中,应用程序的文件包括多套不同版本的图片资源集。本申请实施例通过在应用程序的项目构建过程中,基于应用程序对应的图片资源集,生成多套不同版本(即不同分辨率等级)的图片资源集,从而实现了自动生成多套不同版本的图片资源集,进而提高了图片资源集的配置效率。

Description

应用程序的打包方法、装置、设备及存储介质
技术领域
本申请实施例涉及计算机和互联网技术领域,特别涉及一种应用程序的打包方法、装置、设备及存储介质。
背景技术
目前,市场上的电子设备分辨率不一,为了适配各种分辨率的电子设备,开发者提出了一种对同一资源配置多个分辨率等级的方法。
在相关技术中,以配置图片资源为例,在开发者进行图片资源配置过程中,需要手工地去配置各个不同分辨率等级的图片资源。该图片资源的分辨率等级可以包括Ldpi(LowDpi,低分辨率)、Mdpi(Medium Dpi,中分辨率)、Hdpi(High Dpi,高分辨率)等多种分辨率等级,开发者需要手工将其配置至对应的图片资源文件中。
然而,上述手工配置图片资源的过程,操作复杂,效率低下。
发明内容
本申请实施例提供了一种应用程序的打包方法、装置、设备及存储介质,能够自动配置不同版本(即不同分辨率等级)的图片资源集,提高图片资源集配置的效率。所述技术方案如下:
根据本申请实施例的一个方面,提供了一种应用程序的打包方法,所述方法包括:
在应用程序的项目构建过程中,获取所述应用程序所使用的图片资源集,所述图片资源集包括第三方依赖库中的图片资源;
基于获取的所述图片资源集,生成多套不同版本的图片资源集;其中,不同版本对应于不同分辨率等级;
对所述应用程序的文件进行打包,生成所述应用程序的文件包;其中,所述应用程序的文件包括所述多套不同版本的图片资源集。
根据本申请实施例的一个方面,提供了一种应用程序的打包装置,所述装置包括:
资源获取模块,用于在应用程序的项目构建过程中,获取所述应用程序所使用的图片资源集,所述图片资源集包括第三方依赖库中的图片资源;
资源生成模块,用于基于获取的所述图片资源集,生成多套不同版本的图片资源集;其中,不同版本对应于不同分辨率等级;
文件打包模块,用于对所述应用程序的文件进行打包,生成所述应用程序的文件包;其中,所述应用程序的文件包括所述多套不同版本的图片资源集。
根据本申请实施例的一个方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现上述应用程序的打包方法。
根据本申请实施例的一个方面,提供了一种计算机可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序由处理器加载并执行以实现上述应用程序的打包方法。
根据本申请实施例的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述应用程序的打包方法。
本申请实施例提供的技术方案可以带来如下有益效果:
通过在应用程序的项目构建过程中,基于应用程序对应的图片资源集,生成多套不同版本(即不同分辨率等级)的图片资源集,从而实现了自动生成多套不同版本的图片资源集,而不需要人为的配置,进而提高了图片资源集的配置效率。
另外,将上述不同版本的图片资源集打包进应用程序的文件包,实现了图片资源集生成流程自动嵌入应用程序文件打包流程,而不需要人为的监控管理,进而提高了应用程序的文件打包效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个实施例提供的方案实施环境的示意图;
图2是本申请一个实施例提供的应用程序的打包方法的流程图;
图3示例性示出了一个不同分辨率等级图片的示意图;
图4是本申请另一个实施例提供的应用程序的打包方法的流程图;
图5示例性示出了一个应用程序的项目构建过程的流程图;
图6示例性示出了一个图片资源的分辨率与倍率之间关系的示意图;
图7是本申请一个实施例提供的检测图片资源是否被处理的流程图;
图8是本申请一个实施例提供的应用程序的打包装置的框图;
图9是本申请另一个实施例提供的应用程序的打包装置的框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
请参考图1,其示出了本申请一个实施例提供的方案实施环境的示意图。该方案实施环境可以实现成为一个应用程序下载***。该方案实施环境可以包括:用户终端11、应用下载平台12和开发者终端13。
用户终端11是用户所使用的终端设备,用户可以通过该用户终端11接入应用下载平台12,并在应用下载平台12上执行应用下载操作。例如,用户终端11中可以安装目标应用程序的客户端,用户通过该客户端登录应用下载平台12进行应用下载操作。上述目标应用程序可以是任何提供应用下载服务的应用程序,如应用商店APP(Application,应用程序)、应用管理类APP或者其他具有应用下载能力的第三方应用程序,本申请实施例对此不作限定。用户终端11可以是诸如手机、平板电脑、多媒体播放设备、PC(PersonalComputer,个人计算机)、可穿戴设备、智能电视等电子设备。
应用下载平台12是用于提供应用下载服务的网络平台,应用下载的内容可以包括一个或多个与该应用相关的安装包。其中,安装包里可以包括配置文件、代码文件、资源文件等文件。在一个示例中,应用下载平台12是用于提供视频类应用下载的网络平台,该视频类应用的安装包包括但不限于配置文件、代码文件、资源文件等。可选地,应用下载平台12包括一个或多个服务器120,该服务器120可以是上述目标应用程序的后台服务器,用于为该目标应用程序提供后台服务。
开发者终端13用于为应用下载平台12提供文件包的终端设备。开发者在开发者终端13上开发完成应用程序之后,打包生成应用程序的文件包,并将其上传至应用下载平台12。其中,文件包可以包括应用程序的配置文件、代码文件以及资源文件,如包括多种不同版本(即分辨率等级)的图片资源文件。开发者终端13可以是诸如平板电脑、PC(PersonalComputer,个人计算机)、笔记本电脑等电子设备。
示例性地,响应于用户终端11的应用下载需求,应用下载平台12从开发者终端13上传的该应用对应的文件包中提取对应的文件,生成该应用的安装包,然后将该安装包发送给用户终端11。
可选地,应用下载平台12可以根据用户终端11的不同属性来生成对应属性的安装包。例如,不同分辨率的用户终端11下载应用时,应用下载平台12能够给不同分辨率的用户终端11下发具有对应分辨率资源的安装包。例如,一个用户终端11的分辨率为Hdpi,则应用下载平台12下发具有分辨率为Hdpi资源的安装包。如此便能够有效的控制安装包体积的大小,减少冗余的资源开销。
用户终端11与应用下载平台12之间可以通过网络进行通信,应用下载平台12与开发者终端13之间也可以通过网络进行通信。
请参考图2,其示出了本申请一个实施例提供的应用程序的打包方法的流程图。该方法各步骤的执行主体可以是计算机设备,如该计算机设备可以是图1所示实施环境中的开发者终端13。该方法可以包括如下几个步骤(201~203):
步骤201,在应用程序的项目构建过程中,获取应用程序所使用的图片资源集,该图片资源集包括第三方依赖库中的图片资源。
在本申请实施例中,应用程序的项目构建过程包括创建应用程序的项目,在项目中添加文件(如配置文件、代码文件、资源文件等),然后对项目中的文件按分类进行压缩,并生成文件包这一过程。其中,上述文件还可以从第三方依赖库中获取,因此上述文件包可以包括项目中原有的文件和从第三方依赖库中获取的文件。其中,文件可以是诸如配置文件、代码文件、资源文件等文件。资源文件包括图片资源文件、文字资源文件、视频资源文件等。
图片资源集包括应用程序所使用的多个图片资源。在以图片格式为分类标准的情况下,一个图片资源集可以包括BMP(Bitmap,位图)、JPEG(Joint Photographic ExpertsGroup,联合图像专家组)、GIF(Graphics Interchange Format,图形交换格式)等格式的图片资源中至少一种。在以图片分辨率等级为分类标准的下,一个图片资源集可以包括Ldpi(Low Dpi,低分辨率)、Mdpi(Medium Dpi,中分辨率)、Hdpi(High Dpi,高分辨率)等分辨率等级的图片资源中的至少一种,本申请实施例在此不作限定。
第三方依赖库是指应用程序的项目依赖库以外的依赖库。该第三方依赖库中可以存储应用程序所需的资源,如图片资源,并且基于应用程序的项目构建需求,可以从第三方依赖库中获取所需资源。可选地,该第三方依赖库可以是一个或者多个储存着构建应用程序项目所需资源的依赖库。可选地,第三方依赖库中的资源可以是Aar(Android Archive,Android存档)包、Jar(Java Archive,Java存档)包等中的资源。
步骤202,基于获取的图片资源集,生成多套不同版本的图片资源集;其中,不同版本对应于不同分辨率等级。
在申请实施例中,获取的图片资源集包括应用程序项目中原有的图片资源和从第三方依赖库中获取的图片资源。可选地,该图片资源集可以包括不同分辨率等级的图片资源,诸如Mdpi、Hdpi、Ldpi等分辨率等级。例如,如图3所示,该图片资源集的分辨率等级包括Xxxhdpi(192*192)、Xxhdpi(144*144)、Xhdpi(96*96)、Hdpi(72*72)和Mdpi(48*48)。
可选地,在应用程序的项目构建过程中,可以通过指定插件获取该应用程序所使用的图片资源集,并基于该图片资源集生成多套不同版本的图片资源集。其中,应用程序的指定项目文件中添加有对于指定插件的依赖,该指定插件用于获取应用程序所使用的图片资源集,并生成多套不同版本的图片资源集。以安卓应用为例,Gradle构建的项目文件中添加有对于Resizelmage插件(即上述指定插件)的依赖,并将Resizelmage插件放置在Module层的Gradle.properties文件中,当Gradle打包Bundle时,上述依赖自动被触发,即自动调用Resizelmage插件,并通过Resizelmage插件获取应用程序所使用的图片资源集,并基于该图片资源集生成多套不同版本的图片资源集。整个过程为自动触发,而不需要人为操作,从而提高了不同版本的图片资源集的生成效率。
上述不同版本的图片资源集的生成过程可以是对图片资源集中的图片资源的分辨率进行压缩。例如,如图3所示,图片资源集中包括一张Xxhdpi(144*144)分辨率等级的图片资源,调用指定插件减少该图片资源分辨率等级的30%,可以得到分辨率等级为Xxhdpi(144*144)的图片资源。调用指定插件减少该图片资源集分辨率等级的70%,可以得到分辨率等级为Mdpi(48*48)的图片资源。
步骤203,对应用程序的文件进行打包,生成应用程序的文件包;其中,应用程序的文件包括多套不同版本的图片资源集。
在本申请实施例中,应用程序的文件包括应用程序项目中的文件和从第三方依赖库中获取的文件。该文件可以包括配置文件、代码文件、资源文件等文件。另外,应用程序文件还包括上述步骤202所生成的多套不同分辨率等级的图片资源集。
借助打包工具,可以对应用程序的文件进行打包操作,进而生成应用程序的文件包,该文件包包括对应应用程序的文件。
综上所述,本申请实施例提供的技术方案,通过在应用程序的项目构建过程中,基于应用程序对应的图片资源集,生成多套不同版本(即不同分辨率等级)的图片资源集,从而实现了自动生成多套不同版本的图片资源集,而不需要人为的配置,进而提高了图片资源集的配置效率。
另外,将上述不同版本的图片资源集打包进应用程序的文件包,实现了图片资源集生成流程自动嵌入应用程序文件打包流程,而不需要人为的监控管理,进而提高了应用程序的文件打包效率。
另外,该自动生成多套不同版本的图片资源集的过程是处于应用程序的项目构建过程中,因此可以实现从第三方依赖库中获取图片资源,并对其进行分辨率压缩操作,从而提高了图片资源获取的完整性。
请参考图4,其示出了本申请另一个实施例提供的应用程序的打包方法的流程图。该方法各步骤的执行主体可以是计算机设备,如该计算机设备可以是图1所示实施环境中的开发者终端13。该方法可以包括如下几个步骤(401~406):
步骤401,在应用程序的项目构建过程中,通过Hook函数钩住合并资源任务。
在本申请实施例中,合并资源任务是用于对应用程序所使用的资源进行合并的任务。其中应用程序所使用的资源是指应用程序对应的诸如文字、图片、视频等资源,该应用程序所使用的资源可以包括应用程序项目中的资源、从第三方依赖库中获取的资源和下述步骤生成的不同版本的图片资源集等。
Hook函数用于在应用程序的项目构建过程中,勾住目标任务,并得到该任务的控制权。此时,可以对该任务进行诸如目标对象、作用、范围等修改处理,还可以在该任务之前增加一个自定义任务。以安卓应用为例,在Gradle构建项目流程中,在构建出最终的Bundle之前,会先执行一合并资源任务MergeResourceTsak,该任务用于将项目中的资源按分类进行压缩,生成一个压缩文件包base.zip。但在执行合并资源任务MergeResourceTsak之前,通过Hook函数先Hook住合并资源任务MergeResourceTsak,并***自定义任务,该自定义任务可以包括对图片资源的分辨率压缩,以及将完成分辨率压缩的图片资源分发到各个分辨率文件夹。
参考图5,其示例性示出了一个应用程序的项目构建过程的流程图。应用程序的项目构建过程主要包括创建锚点任务、合并资源任务、Res(Resources,资源)文件处理任务、构建打包任务等。在本申请实施例中,在应用程序的项目构建中,通过Hook函数勾住了合并资源任务51,并使该合并资源任务51暂停,去执行新的自定义任务,以生成不同分辨率等级的图片资源集,待不同分辨率等级的图片资源集生成完成,再继续从合并资源任务51开始往下执行。
步骤402,通过自定义任务调用资源获取函数,资源获取函数用于获取应用程序的资源目录,该资源目录包括图片资源目录。
可选地,在执行合并资源任务之前,执行自定义任务,该自定义任务包括调用资源获取函数。其中,资源获取函数用于获取应用程序的资源目录,该资源目录包括图片资源目录。以安卓应用为例,在Hook合并资源任务MergeResourceTask之前,通过调用GetRawAndriodResources()函数(即上述资源获取函数),获取应用程序的资源目录。
应用程序的资源目录是指应用程序的资源文件的目录。资源目录中可以记录各个资源文件的文件名和文件地址,或者其他文件信息,本申请实施例在此不作限定。图片资源目录是指用于存储图片资源的文件夹。可选地,图片资源目录中可以包括各个图片资源的文件名和文件地址。
步骤403,基于图片资源目录,获取应用程序所使用的图片资源集。
可选地,可以根据图片资源目录中记录的图片资源的文件名和文件地址,获取应用程序所使用的图片资源集。
步骤404,基于图片资源集中第一分辨率等级的目标图片资源,生成第一分辨率等级的低分辨率等级的目标图片资源。
目标图片资源可以是图片资源集中的任一图片资源,第一分辨率等级即是该目标图片资源的分辨率等级。基于该目标图片资源,进行复制操作,然后对复制得到的目标图片资源进行分辨率等级压缩操作,生成新的目标图片资源,即低分辨率等级的图片资源,然后将其保存。
其中,新的目标图片资源与原目标图片资源内容相同,且新的目标图片资源的分辨率等级低于原目标图片资源的分辨率等级。可选地,根据应用程序的需求,该过程可以生成第一分辨率等级之下的多个不同低分辨率等级的目标图片资源。例如,参考图3,目标图片资源的分辨率等级为Xxhdpi(144*144),基于该目标图片资源,其还可以生成Xhdpi(96*96)、Hdpi(72*72)、Mdpi(48*48)等不同低分辨率等级的图片资源。
可选地,不同分辨率等级的图片资源在下文提及的文件包中占用的体积不同。例如,Xhdpi分辨率等级的图片资源的占用体积高于Hdpi分辨率等级的图片资源的占用体积。参考图6,当Xxhdpi分辨率等级下的分辨率为1080*1920时,其倍率为12,当Hdpi分辨率等级下的分辨率为480*480时,其倍率为6,Xxhdpi分辨率等级的图片资源的倍率是Hdpi分辨率等级的图片资源的倍率的2倍,即Xxhdpi分辨率等级的图片资源比Hdpi分辨率等级的图片资源占用的体积多了1倍。其中,图片资源的倍率大小与图片资源的占用体积呈正相关,例如,若A图片资源的倍率是B图片资源的倍率的2倍,则A图片资源的占用体积是B图片资源的占用体积的2倍。
可选地,不同分辨率等级的图片资源可以存储在对应分辨率等级的资源文件夹中。一个分辨率等级的资源文件夹里存放一种分辨率等级的图片资源。该资源文件夹的名称可以是存放的图片资源的分辨率等级。可选地,基于图片资源分辨率等级的种类数量,生成对应数量的资源文件夹。
在一个示例中,生成第一分辨率等级的低分辨率等级的目标图片资源具体内容可以是:按照分辨率等级由高到低的顺序,依次遍历比第一分辨率等级低的分辨率等级所对应的资源文件夹,检测资源文件夹中是否包含相应分辨率等级的目标图片资源;若资源文件夹中不包含相应分辨率等级的目标图片资源,则生成相应分辨率等级的目标图片资源;若资源文件夹中包含相应分辨率等级的目标图片资源,则不需要在生成相应分辨率等级的目标图片资源,可直接进行下一资源文件夹的检测。例如,参考图3,目标图片资源的分辨率等级为Xxhdpi(144*144),按照分辨率等级由高低到底检测,检测到Xhdpi(96*96)分辨率等级资源文件夹中不包含Xhdpi(96*96)分辨率等级的图片资源,则复制生成Xhdpi(96*96)分辨率等级的图片资源,并存储到Xhdpi(96*96)分辨率等级资源文件夹中。当检测到Hdpi(72*72)分辨率等级资源文件夹中包含Hdpi(72*72)分辨率等级的图片资源,则不需要再复制生成Hdpi(72*72)分辨率等级的图片资源,可直接进行下一个资源文件夹的检测。
可选地,在本申请实施例中,为了避免界面显示的失真,不进行将图片资源向高分辨等级复制目标图片资源的操作。
可选地,可以通过检测资源文件夹中是否存在具有对应文件名的目标图片资源,来判断资源文件夹中是否包含相应分辨率的目标图片资源。例如,目标图片资源的文件名为A,若在次级分辨率等级的资源文件夹中存在文件名为A的对应分辨率等级的目标图片资源,则可判断该分辨率等级的目标图片资源已经存在,则无需再进行生成该分辨率等级的目标图片资源的操作。若在次级分辨率等级的资源文件夹中不存在文件名为A的对应分辨率等级的目标图片资源,则进行生成该分辨率等级的目标图片资源的操作,并将其文件名命名为A。如此可避免一个资源文件夹中出现文件名相同但格式不同的图片资源。
可选地,可以根据上述提到的指定插件,获取应用程序所使用的图片资源集,进行复制和分辨率等级压缩操作,生成多套不同版本的图片资源集。例如,以安卓应用为例,在生成多套不同版本的图片资源集过程中,调用了Python脚本对图片资源进行分辨率等级压缩,并复制到对应分辨率等级的资源文件夹汇总。可选地,压缩工具还可以采用本地压缩或者Webp(Weppy,一种图片文件格式)化。需要说明的是,可以根据不同的压缩工具生成不同格式的图片资源,但是在一个资源文件夹中,不允许生成同文件名不同格式的图片资源,如此可以防止类型干扰。以安卓应用为例,若一个资源文件夹中包括A.png资源图片,则在该资源文件夹中不可再生成A.webp资源图片。
步骤405,将各个分辨率等级的目标图片资源,分别放入对应分辨率等级的资源文件夹中。
可选地,可以按照分辨率等级的高低,依次将图片资源存入对应分辨率等级的资源文件夹中,若各个分辨率等级的目标图片资源存储完成时,则将该目标图片资源的文件名存储至缓存中,即表示该目标图片资源已被处理完成。可选地,可以通过检测缓存中是否存在目标图片资源的文件名,确认目标图片资源是否已被处理。
在一个示例中,在从图片资源集中获取目标图片资源之后,检测目标图片资源的文件名是否存在于缓存中;其中,缓存用于存储已处理过的图片资源的文件名;若目标图片资源的文件名不存在于缓存中,则执行生成第一分辨率等级的低分辨率等级的目标图片资源的步骤;若目标图片资源的文件名存在于所述缓存中,则从图片资源集中获取下一个图片资源。
其中,执行生成第一分辨率等级的低分辨率等级的目标图片资源的步骤包括:广度优先检测所有次级分辨率等级资源文件中是否存在该目标图片资源的低分辨率等级的图片资源。若不存在,则执行生成该分辨率等级的图片资源的步骤,然后检查下一次级分辨率等级资源文件。若存在,则检查下一次级分辨率等级资源文件,直到所有次级分辨率等级资源文件全部检测完成,执行检测下一图片资源。
例如,参考图7,在获取目标图片资源之后,检测缓存中是否存在该目标图片资源的文件名。若缓存中存在目标图片资源的文件名,则表示该目标图片资源已经处理完成,则执行检测下一图片资源。若缓存中不存在该目标图片资源的文件名,则检测该目标图片资源所对应的次一级分辨率等级资源文件中是否存在该目标图片资源的对应分辨率等级的图片资源,若不存在,则执行生成该分辨率等级的图片资源的步骤,然后检查次二级分辨率等级资源文件。若存在,则检查次二级分辨率等级资源文件。待次N级分辨率等级资源文件全部检测完成,即所有分辨率等级资源文件全部检测完成,执行检测下一图片资源。
步骤406,对应用程序的文件进行打包,生成应用程序的文件包;其中,应用程序的文件包括的图片资源文件。
借助打包工具,可以对应用程序的文件进行打包操作,进而生成应用程序的文件包。应用程序的文件可以包括应用程序项目中的文件、从第三方依赖库中获取的文件以及上述生成的多套不同版本的图片资源文件等。以安卓应用为例,可以使用资源处理工具AAPT(Android Asset Packaging Tool,安卓资源打包工具)、AAPT2等对应用程序的文件进行打包操作。
综上所述,本申请实施例提供的技术方案,在生成不同分辨率等级的目标图片资源时,通过检测资源文件中是否存在目标图片资源,防止重复生成不同分辨率等级目标图片资源,减少冗余资源损耗。
另外通过检测缓存中是否存在目标图片资源的文件名,判断目标图片资源是否被处理完成,若完成则做出相应地补充动作,从而保证图片资源文件的完整性,进而提高应用程序文件包的完整性。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图8,其示出了本申请一个实施例提供的应用程序的打包装置的框图。该装置具有实现上述应用程序的打包方法示例的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以是计算机设备,也可以设置在计算机设备中。该装置800可以包括:资源获取模块801、资源生成模块802和文件打包模块803。
资源获取模块801,用于在应用程序的项目构建过程中,获取所述应用程序所使用的图片资源集,所述图片资源集包括第三方依赖库中的图片资源。
资源生成模块802,用于基于获取的所述图片资源集,生成多套不同版本的图片资源集;其中,不同版本对应于不同分辨率等级。
文件打包模块803,用于对所述应用程序的文件进行打包,生成所述应用程序的文件包;其中,所述应用程序的文件包括所述多套不同版本的图片资源集。
在一个示例性实施例中,如图9所示,所述资源获取模块801包括:任务Hook子模块801a、目录获取子模块801b和资源集获取子模块801c。
任务Hook子模块801a,用于在所述应用程序的项目构建过程中,通过Hook函数钩住合并资源任务,所述合并资源任务是用于对所述应用程序所使用的资源进行合并的任务。
目录获取子模块801b,用于在执行所述合并资源任务之前,获取所述应用程序的图片资源目录。
资源获取子模块801c,用于基于所述图片资源目录,获取所述应用程序所使用的所述图片资源集。
在一个示例性实施例中,所述目录获取子模块801b用于:
在执行所述合并资源任务之前,执行自定义任务;
通过所述自定义任务调用资源获取函数,所述资源获取函数用于获取所述应用程序的资源目录,所述资源目录包括所述图片资源目录。
在一个示例性实施例中,所述资源集生成模块802包括:
图片资源生成子模块802a,用于对于所述图片资源集中第一分辨率等级的目标图片资源,生成所述第一分辨率等级的低分辨率等级的所述目标图片资源;
图片资源存放子模块802b,用于将各个分辨率等级的所述目标图片资源,分别放入对应所述分辨率等级的资源文件夹中。其中,每个分辨率等级的资源文件夹,用于存放一种分辨率等级的图片资源集。
在一个示例性实施例中,所述图片资源生成子模块802a用于按照所述分辨率等级由高到低的顺序,依次遍历比所述第一分辨率等级低的分辨率等级所对应的资源文件夹,检测所述资源文件夹中是否包含相应分辨率等级的所述目标图片资源;若所述资源文件夹中不包含相应分辨率等级的所述目标图片资源,则生成相应分辨率等级的所述目标图片资源。
在一个示例性实施例中,所述图片资源生成子模块802a还用于在从所述图片资源集中获取所述目标图片资源之后,检测所述目标图片资源的文件名是否存在于缓存中;其中,所述缓存用于存储已处理过的图片资源的文件名;若所述目标图片资源的文件名不存在于所述缓存中,则执行所述生成所述第一分辨率等级的低分辨率等级的所述目标图片资源的步骤;若所述目标图片资源的文件名存在于所述缓存中,则从所述图片资源集中获取下一个图片资源。
在一个示例性实施例中,所述应用程序的指定项目文件中添加有对于指定插件的依赖,所述指定插件用于获取所述应用程序所使用的图片资源集,并生成多套不同版本的图片资源集。所述装置800还包括:插件执行模块804。
插件执行模块804,用于在应用程序的项目构建过程中,执行所述指定插件。
综上所述,本申请实施例提供的技术方案,通过在应用程序的项目构建过程中,基于应用程序对应的图片资源集,生成多套不同版本(即不同分辨率等级)的图片资源集,从而实现了自动生成多套不同版本的图片资源集,而不需要人为的配置,进而提高了图片资源集的配置效率。
需要说明的是,上述实施例提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
在一个示例性实施例中,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现上述应用程序的打包方法。
在一个示例性实施例中,还提供了一种计算机可读存储介质,所述存储介质中存储有计算机程序,所述计算机程序在被处理器执行时以实现上述应用程序的打包方法。
在一个示例性实施例中,还提供了一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从所述计算机可读存储介质中读取所述计算机指令,所述处理器执行所述计算机指令,使得所述计算机设备执行上述应用程序的打包方法。
以上所述仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种应用程序的打包方法,其特征在于,所述方法包括:
在应用程序的项目构建过程中,获取所述应用程序所使用的图片资源集,所述图片资源集包括第三方依赖库中的图片资源;
基于获取的所述图片资源集,生成多套不同版本的图片资源集;其中,不同版本对应于不同分辨率等级;
对所述应用程序的文件进行打包,生成所述应用程序的文件包;其中,所述应用程序的文件包括所述多套不同版本的图片资源集。
2.根据权利要求1所述的方法,其特征在于,所述在应用程序的项目构建过程中,获取所述应用程序所使用的图片资源集,包括:
在所述应用程序的项目构建过程中,通过Hook函数钩住合并资源任务,所述合并资源任务是用于对所述应用程序所使用的资源进行合并的任务;
在执行所述合并资源任务之前,获取所述应用程序的图片资源目录;
基于所述图片资源目录,获取所述应用程序所使用的所述图片资源集。
3.根据权利要求2所述的方法,其特征在于,所述在执行所述合并资源任务之前,获取所述应用程序的图片资源目录,包括:
在执行所述合并资源任务之前,执行自定义任务;
通过所述自定义任务调用资源获取函数,所述资源获取函数用于获取所述应用程序的资源目录,所述资源目录包括所述图片资源目录。
4.根据权利要求1所述的方法,其特征在于,所述基于获取的所述图片资源集,生成多套不同版本的图片资源集,包括:
对于所述图片资源集中第一分辨率等级的目标图片资源,生成所述第一分辨率等级的低分辨率等级的所述目标图片资源;
将各个分辨率等级的所述目标图片资源,分别放入对应所述分辨率等级的资源文件夹中;
其中,每个分辨率等级的资源文件夹,用于存放一种分辨率等级的图片资源集。
5.根据权利要求4所述的方法,其特征在于,所述生成所述第一分辨率等级的低分辨率等级的所述目标图片资源,包括:
按照所述分辨率等级由高到低的顺序,依次遍历比所述第一分辨率等级低的分辨率等级所对应的资源文件夹,检测所述资源文件夹中是否包含相应分辨率等级的所述目标图片资源;
若所述资源文件夹中不包含相应分辨率等级的所述目标图片资源,则生成相应分辨率等级的所述目标图片资源。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在从所述图片资源集中获取所述目标图片资源之后,检测所述目标图片资源的文件名是否存在于缓存中;其中,所述缓存用于存储已处理过的图片资源的文件名;
若所述目标图片资源的文件名不存在于所述缓存中,则执行所述生成所述第一分辨率等级的低分辨率等级的所述目标图片资源的步骤;
若所述目标图片资源的文件名存在于所述缓存中,则从所述图片资源集中获取下一个图片资源。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述应用程序的指定项目文件中添加有对于指定插件的依赖,所述指定插件用于获取所述应用程序所使用的图片资源集,并生成多套不同版本的图片资源集;
所述方法还包括:
在应用程序的项目构建过程中,执行所述指定插件。
8.一种应用程序的打包装置,其特征在于,所述装置包括:
资源获取模块,用于在应用程序的项目构建过程中,获取所述应用程序所使用的图片资源集,所述图片资源集包括第三方依赖库中的图片资源;
资源生成模块,用于基于获取的所述图片资源集,生成多套不同版本的图片资源集;其中,不同版本对应于不同分辨率等级;
文件打包模块,用于对所述应用程序的文件进行打包,生成所述应用程序的文件包;其中,所述应用程序的文件包括所述多套不同版本的图片资源集。
9.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求1至7任一项所述的应用程序的打包方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序由处理器加载并执行以实现如权利要求1至7任一项所述的应用程序的打包方法。
CN202010842561.1A 2020-08-20 2020-08-20 应用程序的打包方法、装置、设备及存储介质 Active CN112000364B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010842561.1A CN112000364B (zh) 2020-08-20 2020-08-20 应用程序的打包方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010842561.1A CN112000364B (zh) 2020-08-20 2020-08-20 应用程序的打包方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN112000364A true CN112000364A (zh) 2020-11-27
CN112000364B CN112000364B (zh) 2024-05-28

Family

ID=73472830

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010842561.1A Active CN112000364B (zh) 2020-08-20 2020-08-20 应用程序的打包方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN112000364B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102289378A (zh) * 2011-09-30 2011-12-21 互动在线(北京)科技有限公司 自动生成应用程序的方法
CN107729041A (zh) * 2017-07-26 2018-02-23 上海壹账通金融科技有限公司 应用程序热更新方法、装置、终端和存储介质
CN108319460A (zh) * 2018-01-24 2018-07-24 广东小天才科技有限公司 应用程序安装包的生成方法、装置、电子设备及存储介质
CN109710265A (zh) * 2018-12-28 2019-05-03 北京金山安全软件有限公司 一种软件安装包的获取方法、装置及电子设备
CN109857405A (zh) * 2019-02-02 2019-06-07 Oppo广东移动通信有限公司 应用程序安装包的编译方法、装置、存储介质及终端
WO2020061731A1 (zh) * 2018-09-25 2020-04-02 深圳市欢太科技有限公司 资源处理方法、电子设备和计算机可读存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102289378A (zh) * 2011-09-30 2011-12-21 互动在线(北京)科技有限公司 自动生成应用程序的方法
CN107729041A (zh) * 2017-07-26 2018-02-23 上海壹账通金融科技有限公司 应用程序热更新方法、装置、终端和存储介质
CN108319460A (zh) * 2018-01-24 2018-07-24 广东小天才科技有限公司 应用程序安装包的生成方法、装置、电子设备及存储介质
WO2020061731A1 (zh) * 2018-09-25 2020-04-02 深圳市欢太科技有限公司 资源处理方法、电子设备和计算机可读存储介质
CN109710265A (zh) * 2018-12-28 2019-05-03 北京金山安全软件有限公司 一种软件安装包的获取方法、装置及电子设备
CN109857405A (zh) * 2019-02-02 2019-06-07 Oppo广东移动通信有限公司 应用程序安装包的编译方法、装置、存储介质及终端

Also Published As

Publication number Publication date
CN112000364B (zh) 2024-05-28

Similar Documents

Publication Publication Date Title
CN109885324B (zh) 一种应用程序安装包的处理方法、装置、终端及存储介质
US8965890B2 (en) Context sensitive media and information
CN110347341B (zh) 数据清除方法及控制设备
CN107526623B (zh) 一种数据处理方法及装置
CN110362547A (zh) 日志文件的编码、解析、存储方法和装置
CN110806913A (zh) 网页截图方法、装置及设备
CN112069468A (zh) 一种页面动态水印的方法及设备
CN110865981A (zh) 用于移动终端的文件访问方法及其移动终端
CN112000364B (zh) 应用程序的打包方法、装置、设备及存储介质
CN116595086A (zh) 一种基于插件的空间数据服务实现方法和***
CN111597020A (zh) 一种应用程序编程接口api调试方法以及调试终端
CN115640066A (zh) 一种安全检测方法、装置、设备及存储介质
CN115062340A (zh) 设备访问方法、接口处理方法及设备
CN115426375A (zh) 一种数据处理方法和数据处理***
CN110007937B (zh) 一种***更新的方法和***
CN113129431A (zh) 三维模型处理方法、高速浏览方法、电子设备及存储介质
CN114205645B (zh) 分布式视频内容审核方法及装置
CN112558975B (zh) 组件的代码切换方法、装置、电子设备及可读存储介质
CN118093010B (zh) 一种应用包生成方法及装置
CN110908958B (zh) 一种文件处理方法、装置、终端及存储介质
CN114519039B (zh) 一种数据在线管理方法、装置、终端设备以及存储介质
CN118093010A (zh) 一种应用包生成方法及装置
CN114398073A (zh) 基于rn的应用更新方法及装置
CN115878585A (zh) Hdfs空目录定位方法、装置、设备及介质
CN117215616A (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