CN115774578A - 应用处理方法、装置、电子设备、存储介质及程序产品 - Google Patents

应用处理方法、装置、电子设备、存储介质及程序产品 Download PDF

Info

Publication number
CN115774578A
CN115774578A CN202111043390.7A CN202111043390A CN115774578A CN 115774578 A CN115774578 A CN 115774578A CN 202111043390 A CN202111043390 A CN 202111043390A CN 115774578 A CN115774578 A CN 115774578A
Authority
CN
China
Prior art keywords
dynamic link
link library
application
information table
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.)
Pending
Application number
CN202111043390.7A
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 Youzhuju Network Technology Co Ltd
Original Assignee
Beijing Youzhuju Network 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 Youzhuju Network Technology Co Ltd filed Critical Beijing Youzhuju Network Technology Co Ltd
Priority to CN202111043390.7A priority Critical patent/CN115774578A/zh
Publication of CN115774578A publication Critical patent/CN115774578A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本申请涉及一种应用处理方法、装置、电子设备、存储介质及程序产品,应用于计算机技术领域,所述方法包括:响应于应用安装操作,获取待安装应用的安装包中的第一动态链接库,以及第一动态链接库在待安装应用的应用目录下的安装路径;查询动态链接库信息表中是否存在第一动态链接库的信息;如果动态链接库信息表中存在第一动态链接库的信息,针对第一动态链接库建立该安装路径到第一动态链接库的存储路径的硬链接;如果动态链接库信息表中不存在第一动态链接库的信息,将第一动态链接库拷贝至安装路径下,并在动态链接库信息表中添加第一动态链接库与存储路径的映射关系。本申请可以降低内存和存储空间。

Description

应用处理方法、装置、电子设备、存储介质及程序产品
技术领域
本申请涉及计算机技术领域,尤其涉及一种应用处理方法、装置、电子设备、存储介质及程序产品。
背景技术
在应用安装包开发过程中,可以将要使用的动态链接库文件打包进安装包中,包括应用自行开发的动态链接库,及应用使用的三方SDK(软件开发工具包)提供的动态链接库。在安装应用时,这些动态链接库会存储至对应的应用目录下。
目前,不同应用通过集成SDK的方式使用了相同的动态链接库。在安装应用时,相同的动态链接库会被存储至不同的应用目录下,导致存储空间的浪费。另外,在应用启动后,不同应用中相同的动态链接库会被加载多次,也耗费了不必要的内存。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请提供了一种应用处理方法、装置、电子设备、存储介质及程序产品。
根据本申请的第一方面,提供了一种应用处理方法,包括:
响应于应用安装操作,获取待安装应用的安装包中的第一动态链接库,以及所述第一动态链接库在所述待安装应用的应用目录下的安装路径;
查询动态链接库信息表中是否存在所述第一动态链接库的信息;其中,所述动态链接库信息表中包含系统中已存储的动态链接库与存储路径的映射关系;
如果所述动态链接库信息表中存在所述第一动态链接库的信息,针对所述第一动态链接库建立所述安装路径到第一动态链接库的存储路径的硬链接;
如果所述动态链接库信息表中不存在所述第一动态链接库的信息,将所述第一动态链接库拷贝至所述安装路径下,并在所述动态链接库信息表中添加所述第一动态链接库与存储路径的映射关系。
在一种可选的实施方式中,所述动态链接库信息表中还包含所述系统中已存储的动态链接库的使用次数;
所述方法还包括:
在针对所述第一动态链接库建立所述安装路径到第一动态链接库的存储路径的硬链接之后,将所述第一动态链接库的使用次数加1;或者,
在所述动态链接库信息表中添加所述第一动态链接库与存储路径的映射关系之后,将所述第一动态链接库的使用次数设置为1。
在一种可选的实施方式中,所述方法还包括:
响应于应用卸载操作,获取待卸载应用所使用的所有第二动态链接库;
针对每个第二动态链接库,查询所述动态链接库信息表中该第二动态链接库的存储路径和使用次数;
如果该第二动态链接库的使用次数大于1,且该第二动态链接库的存储路径在所述待卸载应用的应用目录下,保留该第二动态链接库,删除该第二动态链接库所在的目录,并将所述动态链接库信息表中该第二动态链接库的使用次数减1;
如果该第二动态链接库的使用次数大于1,且该第二动态链接库的存储路径未在所述待卸载应用的应用目录下,将到该第二动态链接库的存储路径的硬链接移除,并将所述动态链接库信息表中该第二动态链接库的使用次数减1;
如果所述使用次数等于1,删除该第二动态链接库,并将所述动态链接库信息表中该第二动态链接库的信息删除。
在一种可选的实施方式中,在所述获取待安装应用的安装包中的第一动态链接库之前,所述方法还包括:
响应于ROM(只读内存镜像)编译操作,获取多个系统自带应用的安装包中的第三动态链接库;
如果所述多个系统自带应用对应的第三动态链接库中存在相同的第三动态链接库,将所述相同的第三动态链接库编译至系统路径;
针对每个所述系统自带应用,将该系统自带应用对应的第三动态链接库中除所述相同的第三动态链接库之外的第三动态链接库,编译至该第三动态链接库在该系统自带应用的应用目录的安装路径下,以生成ROM包。
在一种可选的实施方式中,所述动态链接库信息表包括:所述系统中已存储的动态链接库的哈希值和所述系统中已存储的动态链接库对应的存储路径。
在一种可选的实施方式中,所述查询动态链接库信息表中是否存在所述第一动态链接库的信息,包括:
查询动态链接库信息表中是否存在与所述第一动态链接库的哈希值相同的哈希值。
根据本申请的第二方面,提供了一种应用处理装置,包括:
第一动态链接库获取模块,用于响应于应用安装操作,获取待安装应用的安装包中的第一动态链接库,以及所述第一动态链接库在所述待安装应用的应用目录下的安装路径;
信息表查询模块,用于查询动态链接库信息表中是否存在所述第一动态链接库的信息;其中,所述动态链接库信息表中包含系统中已存储的动态链接库与存储路径的映射关系;
硬链接建立模块,用于如果所述动态链接库信息表中存在所述第一动态链接库的信息,针对所述第一动态链接库建立所述安装路径到第一动态链接库的存储路径的硬链接;
动态链接库拷贝模块,用于如果所述动态链接库信息表中不存在所述第一动态链接库的信息,将所述第一动态链接库拷贝至所述安装路径下;
动态链接库信息更新模块,用于在所述动态链接库信息表中添加所述第一动态链接库与存储路径的映射关系。
在一种可选的实施方式中,所述动态链接库信息表中还包含所述系统中已存储的动态链接库的使用次数;
所述装置还包括:
使用次数更新模块,用于针对所述第一动态链接库建立所述安装路径到第一动态链接库的存储路径的硬链接之后,将所述第一动态链接库的使用次数加1;
使用次数设置模块,用于在所述动态链接库信息表中添加所述第一动态链接库与存储路径的映射关系之后,将所述第一动态链接库的使用次数设置为1。
在一种可选的实施方式中,所述装置还包括:
第二动态链接库获取模块,用于响应于应用卸载操作,获取待卸载应用所使用的所有第二动态链接库;
所述信息表查询模块,还用于针对每个第二动态链接库,查询所述动态链接库信息表中该第二动态链接库的存储路径和使用次数;
第一卸载模块,用于如果该第二动态链接库的使用次数大于1,且该第二动态链接库的存储路径在所述待卸载应用的应用目录下,保留该第二动态链接库,删除该第二动态链接库所在的目录,并将所述动态链接库信息表中该第二动态链接库的使用次数减1;
第二卸载模块,用于如果该第二动态链接库的使用次数大于1,且该第二动态链接库的存储路径未在所述待卸载应用的应用目录下,将到该第二动态链接库的存储路径的硬链接移除,并将所述动态链接库信息表中该第二动态链接库的使用次数减1;
第三卸载模块,用于如果所述使用次数等于1,删除所述第二动态链接库,并将所述动态链接库信息表中该第二动态链接库的信息删除。
在一种可选的实施方式中,所述装置还包括:
第三动态链接库获取模块,用于响应于ROM编译操作,获取多个系统自带应用的安装包中的第三动态链接库;
第一编译模块,用于如果所述多个系统自带应用对应的第三动态链接库中存在相同的第三动态链接库,将所述相同的第三动态链接库编译至系统路径;
第二编译模块,用于针对每个所述系统自带应用,将该系统自带应用对应的第三动态链接库中除所述相同的第三动态链接库之外的第三动态链接库,编译至该第三动态链接库在该系统自带应用的应用目录的安装路径下,以生成ROM包。
在一种可选的实施方式中,所述动态链接库信息表包括:所述系统中已存储的动态链接库的哈希值和所述系统中已存储的动态链接库对应的存储路径。
在一种可选的实施方式中,所述信息表查询模块,具体用于查询动态链接库信息表中是否存在与所述第一动态链接库的哈希值相同的哈希值。
根据本申请的第三方面,提供了一种电子设备,包括:处理器,所述处理器用于执行存储于存储器的计算机程序,所述计算机程序被处理器执行时实现第一方面所述的方法。
根据本申请的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的方法。
根据本申请的第五方面,提供了一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行第一方面所述的方法。
本申请实施例提供的技术方案与现有技术相比具有如下优点:
由于动态链接库信息表中包含系统中已存储的动态链接库与存储路径的映射关系,因此,在安装应用时,可以查询动态链接库信息表,以确认系统中是否已经存储有安装待安装应用所需的第一动态链接库。如果动态链接库信息表中存在第一动态链接库的信息,表示系统中已经存储有第一动态链接库,可以直接建立硬链接,避免了将相同的动态链接库存储在系统的不同位置,节省存储空间。否则,将第一动态链接库存储在相应的目录下,并在动态链接库信息表中添加第一动态链接库与存储路径的映射关系。这样,在后续安装其他应用时,如果其他应用也使用第一动态链接库,同样也可以建立硬链接,避免第一动态链接库的重复存储。相应地,在应用启动时,不同应用中相同的动态链接库被加载一次,而不会被单独加载多次,节省了内存空间,避免因内存不足导致卡顿而影响用户体验。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为适用于本申请实施例的应用处理方法的应用场景示意图;
图2为本申请实施例中应用处理方法的一种流程图;
图3为本申请实施例中应用处理方法的又一种流程图;
图4为本申请实施例中应用处理方法的又一种流程图;
图5为本申请实施例中应用处理方法的又一种流程图;
图6为本申请实施例中应用处理装置的一种结构示意图;
图7为本申请实施例中电子设备的一种结构示意图。
具体实施方式
为了能够更清楚地理解本申请的上述目的、特征和优点,下面将对本申请的方案进行进一步描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本申请,但本申请还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本申请的一部分实施例,而不是全部的实施例。
互联网的发展为人们的工作和生活提供了便利。用户可以在电子设备(例如智能手机、平板电脑、台式电脑、笔记本电脑等)中安装各种所需的应用,以满足日常工作和生活的需求。
如图1所示,在用户要安装应用C的情况下,可以先获取应用C的安装包,应用C的安装包中通常包含有多个动态链接库。之后,通过点击“安装”按钮,即可将应用C安装在智能手机中,安装完成之后,应用C具有对应的目录,该目录中存储有应用C的安装包中的动态链接库。
假设用户已经安装的应用B和应用C均集成了登陆账号相关的SDK,那么应用B的安装包与应用C的安装包中会存在相同的动态链接库。该相同的动态链接库将被存储两遍,导致存储空间的浪费。如果启动应用B和应用C,相同的动态链接库会被单独加载两次,耗费了不必要的内存。
为了解决上述问题,本申请实施例提供了一种应用处理方法、装置、电子设备、存储介质及程序产品,以降低内存和存储空间。本申请实施例的执行主体可以为系统中的服务,例如,对于安卓系统而言,可以通过packagemanagerservice服务执行应用处理的过程,包括:应用的安装、卸载等。
参见图2,图2为本申请实施例中应用处理方法的一种流程图,可以包括以下步骤:
步骤S210,响应于应用安装操作,获取待安装应用的安装包中的第一动态链接库,以及第一动态链接库在待安装应用的应用目录下的安装路径。
本申请实施例中,待安装应用可以是用户要安装的任意应用,在不同系统下,待安装应用的安装包的格式不同。例如,在Android系统下,待安装应用的安装包为apk(Androidapplication package,Android应用程序包)格式的文件。在Linux系统下,待安装应用的安装包可以为RPM(红帽软件包管理器)包等。
第一动态链接库可以是待安装应用的安装包中的动态链接库,第一动态链接库的数量可以是一个,也可以是多个。针对多个第一动态链接库,各第一动态链接库的处理过程相同,在此以一个为例进行说明。
每个应用分别对应有各自的应用目录,不同的目录下可以存储不同的文件内容。通常情况下,多个动态链接库可以存储在同一个目录中。第一动态链接库在待安装应用的应用目录下的安装路径,即第一动态链接库在安装待安装应用时要存储的路径。例如,应用1的应用目录的根目录为app1,与应用1相关的文件均存储在app1中。如果动态链接库1的安装路径为/data/app/app1/lib/armeabi,那么在安装应用1时,动态链接库1将存储在/data/app/app1/lib/armeabi路径下。
步骤S220,查询动态链接库信息表中是否存在第一动态链接库的信息;其中,动态链接库信息表中包含系统中已存储的动态链接库与存储路径的映射关系。
动态链接库信息表是预先建立的、记录系统中当前已存储的动态链接库的动态链接库信息表。根据该动态链接库信息表,可以查询到系统中已存储的动态链接库,以及系统中已存储的动态链接库对应的存储路径。本申请为了避免对不同应用所使用的相同的动态链接库进行重复存储,通过查询动态链接库信息表,以确认系统中当前是否已经存储有第一动态链接库。
如果动态链接库信息表中存在第一动态链接库的信息,表示当前已经存储有第一动态链接库,可以不再存储该第一动态链接库,执行步骤S230。如果动态链接库信息表中不存在第一动态链接库的信息,表示当前没有存储第一动态链接库,可以执行步骤S240,以存储该第一动态链接库。
步骤S230,针对第一动态链接库建立该安装路径到第一动态链接库的存储路径的硬链接。
本申请实施例中,如果动态链接库信息表中存在第一动态链接库的信息,表明系统中已经存储有第一动态链接库。在不重复存储的情况下,为了使待安装应用也能够使用第一动态链接库,可以在第一动态链接库的安装路径下建立到第一动态链接库的存储路径的硬链接。
其中,硬链接是指在同一个文件系统中,文件链接的是另一个文件的别名。一个文件可以有多个别名,即可以有多个硬链接。硬链接相当于复制了一个文件并进行改名,读写或者删除其中一个文件,其源文件都不会受到影响。由于硬链接文件并非实体文件,因此,不会占用存储空间。
例如,原始的第一动态链接库为xxx.so,第一动态链接库的安装路径为/data/app/app1/lib/armeabi/。现有技术中,需要将xxx.so拷贝至该路径下,本申请可以建立
/data/app/app1/lib/armeabi/xxx.so到xxx.so的实际存储路径的硬链接。/data/app/app1/lib/armeabi/xxx.so为硬链接文件。
步骤S240,将第一动态链接库拷贝至安装路径下,并在动态链接库信息表中添加第一动态链接库与存储路径的映射关系。
本申请实施例中,如果动态链接库信息表中不存在第一动态链接库的信息,表明系统中当前没有存储第一动态链接库。此时可以按照现有的处理方式,将第一动态链接库拷贝至安装路径下。拷贝完成之后,系统中当前已经存储有第一动态链接库,因此,可以将第一动态链接库与存储路径的映射关系添加至动态链接库信息表中。这样,在后续安装其他应用时,如果其他应用也使用该第一动态链接库,也可以不再重复存储该第一动态链接库,以节省存储空间。由于不同应用所使用的相同的动态链接库存储了一次,在不同的应用启动时,相同的动态链接库加载一次即可,从而节省了内存。
本申请实施例的应用处理方法,由于动态链接库信息表中包含系统中已存储的动态链接库与存储路径的映射关系,因此,在安装应用时,可以查询动态链接库信息表,以确认系统中是否已经存储有安装待安装应用所需的第一动态链接库。如果动态链接库信息表中存在第一动态链接库的信息,表示系统中已经存储有第一动态链接库,可以直接建立硬链接,避免了将相同的动态链接库存储在系统的不同位置,节省存储空间。否则,将第一动态链接库存储在相应的目录下,并在动态链接库信息表中添加第一动态链接库与存储路径的映射关系。这样,在后续安装其他应用时,如果其他应用也使用第一动态链接库,同样也可以建立硬链接,避免第一动态链接库的重复存储。相应地,在应用启动时,不同应用中相同的动态链接库被加载一次,而不会被单独加载多次,节省了内存空间,避免因内存不足导致卡顿而影响用户体验。
参见图3,图3为本申请实施例中应用处理方法的又一种流程图,可以包括以下步骤:
步骤S310,响应于应用安装操作,获取待安装应用的安装包中的第一动态链接库,以及第一动态链接库在待安装应用的应用目录下的安装路径。
本步骤与图2实施例步骤S210相同,具体参见图2实施例中的描述即可,在此不再赘述。
步骤S320,查询动态链接库信息表中是否存在第一动态链接库的信息;其中,动态链接库信息表中包含系统中已存储的动态链接库对应的存储路径和使用次数。
本申请实施例中,动态链接库信息表可以表示为哈希表的形式。动态链接库信息表可以包括:系统中已存储的动态链接库的哈希值(例如MD4、MD5值等)和系统中已存储的动态链接库对应的存储路径。动态链接库信息表的键值为系统中已存储的动态链接库的哈希值,存储数据为系统中已存储的动态链接库的存储路径。
动态链接库信息表中除了包含系统中已存储的动态链接库对应的存储路径,还可以包含系统中已存储的动态链接库的使用次数,即动态链接库信息表中可以包含:系统中已存储的动态链接库与存储路径、使用次数的映射关系。此时动态链接库信息表的键值为系统中已存储的动态链接库的哈希值,存储数据为系统中已存储的动态链接库的存储路径和使用次数。根据使用次数可以确定使用该系统中已存储的动态链接库的应用的数量。
相应地,通过查询动态链接库信息表中是否存在与第一动态链接库的哈希值相同的哈希值,可以判断动态链接库信息表中是否存在第一动态链接库的信息。这样,即使两个动态链接库的名称不同但内容相同的情况下,也可以正确识别出两个动态链接库实际相同,以及两个动态链接库的名称相同但内容不同的情况下,也可以正确识别出两个动态链接库实际不同。可见,本申请实施例中相同的动态链接库是指内容相同的动态链接库,而名称可以相同,也可以不同。如果动态链接库信息表中存在第一动态链接库的信息,可以执行步骤S330;如果动态链接库信息表中不存在第一动态链接库的信息,可以执行步骤S340。
步骤S330,针对第一动态链接库建立该安装路径到第一动态链接库的存储路径的硬链接,并将第一动态链接库的使用次数加1。
可以理解的是,每建立一次硬链接,表明第一动态链接库的使用次数增加一次,因此可以将动态链接库信息表中第一动态链接库的使用次数加1。
步骤S340,将第一动态链接库拷贝至安装路径下,并在动态链接库信息表中添加第一动态链接库与存储路径的映射关系,以及将第一动态链接库的使用次数设置为1。
类似地,如果将第一动态链接库拷贝至安装路径下,表示首次将第一动态链接库存储至系统中,因此,在动态链接库信息表中添加第一动态链接库与存储路径的映射关系的同时,可以将第一动态链接库的使用次数设置为1。
本申请实施例的应用处理方法,通过在动态链接库信息表中记录已经存储的动态链接库的使用次数,可以知晓当前使用该动态链接库的应用的数量。进而,在卸载应用时,可以根据动态链接库的使用次数判断是否删除该动态链接库。
以下对应用的卸载过程进行详细介绍。
参见图4,图4为本申请实施例中应用处理方法的又一种流程图,可以包括以下步骤:
步骤S410,响应于应用卸载操作,获取待卸载应用所使用的所有第二动态链接库。
本申请实施例中,用户也可以对应用进行卸载操作,针对用户要卸载的应用,用户点击“卸载”之后,可以获取待卸载应用所使用的所有第二动态链接库。
步骤S420,针对每个第二动态链接库,查询动态链接库信息表中该第二动态链接库的存储路径和使用次数。
与安装应用过程类似,在获取第二动态链接库之后,查询动态链接库信息表中该第二动态链接库的存储路径和使用次数。与安装应用不同的是,由于待卸载应用已经安装在系统中,因此系统中当前存储有第二动态链接库,并且动态链接库信息表中包含第二动态链接库的存储路径和使用次数。在此直接查询第二动态链接库的存储路径和使用次数即可。
步骤S430,判断该第二动态链接库的使用次数是否大于1。
如前所述,根据第二动态链接库的使用次数可以判断当前使用第二动态链接库的应用的数量。如果第二动态链接库的使用次数大于1,表示当前除了待卸载应用使用该第二动态链接库之外,还有其他应用使用第二动态链接库,不能删除第二动态链接库的原始文件,可以执行步骤S440,如果第二动态链接库的使用次数不大于1,即等于1,表示当前只有待卸载应用使用该第二动态链接库,可以直接删除第二动态链接库,执行步骤S470。
步骤S440,判断第二动态链接库的存储路径是否在待卸载应用的应用目录下。
如果第二动态链接库的存储路径在待卸载应用的应用目录下,执行步骤S450;如果第二动态链接库的存储路径未在待卸载应用的应用目录下,步骤S460。
步骤S450,保留第二动态链接库,删除第二动态链接库所在的目录,并将动态链接库信息表中第二动态链接库的使用次数减1。
如果第二动态链接库的存储路径在待卸载应用的应用目录下,表示是由待卸载应用将第二动态链接库存储至系统中。而在卸载待卸载应用时,由于此时其他应用也在使用该第二动态链接库,因此,第二动态链接库不会被删除,而第二动态链接库所在目录会被删除。使用第二动态链接库的应用的数量减少了一个,因此,将动态链接库信息表中第二动态链接库的使用次数减1。
步骤S460,将到第二动态链接库的存储路径的硬链接移除,并将动态链接库信息表中第二动态链接库的使用次数减1。
如果第二动态链接库的存储路径未在待卸载应用的应用目录下,表示待卸载应用是通过建立硬链接的方式使用第二动态链接库的,在卸载待卸载应用时,直接将硬链接移除即可。同样地,将动态链接库信息表中第二动态链接库的使用次数减1。
步骤S470,删除第二动态链接库,并将动态链接库信息表中第二动态链接库的信息删除。
在删除第二动态链接库之后,表示系统中已经不再存储有第二动态链接库,因此,可以将动态链接库信息表中第二动态链接库的信息删除。
可见,通过在动态链接库信息表中记录已经存储的动态链接库的存储路径和使用次数,在卸载应用时,可以基于存储路径和使用次数执行对应的卸载操作。在其他应用使用第二动态链接库的情况下,避免造成其他应用的不可用;在其他应用不使用第二动态链接库的情况下,可以删除第二动态链接库以避免占用存储空间。
参见图5,图5为本申请实施例中应用处理方法的又一种流程图,可以包括以下步骤:
步骤S510,响应于ROM编译操作,获取多个系统自带应用的安装包中的第三动态链接库。
在生成ROM包时,通常可以在系统中自带多个应用,即系统自带应用,这样,用户在开机之后,可以无需安装即可直接使用系统自带应用。与用户手动安装的过程类似,在ROM编译阶段,也可以获取多个系统自带应用的安装包中的第三动态链接库。
步骤S520,如果多个系统自带应用对应的第三动态链接库中存在相同的第三动态链接库,将相同的第三动态链接库编译至系统路径。
在多个系统自带应用对应的第三动态链接库中存在相同的第三动态链接库的情况下,为了避免重复存储,可以将相同的第三动态链接库编译至系统路径下。这样,多个系统自带应用均可以使用该相同的第三动态链接库。
步骤S530,针对每个系统自带应用,将该系统自带应用对应的第三动态链接库中除相同的第三动态链接库之外的第三动态链接库,编译至该第三动态链接库在该系统自带应用的应用目录的安装路径下,以生成ROM包。
而对于除相同的第三动态链接库之外的第三动态链接库,可以按照现有的方式拷贝至对应的安装路径下。通过上述两种不同的编译方式,最终生成ROM包。
本申请实施例的应用处理方法,在ROM编译阶段,可以将不同应用使用到的相同的动态链接库编译一次至系统路径,避免了相同的动态链接库的重复编译,从而节省了内存和存储空间。
相应于上述方法实施例,本申请实施例还提供了一种应用处理装置,参见图6,该应用处理装置600包括:
第一动态链接库获取模块610,用于响应于应用安装操作,获取待安装应用的安装包中的第一动态链接库,以及第一动态链接库在待安装应用的应用目录下的安装路径;
信息表查询模块620,用于查询动态链接库信息表中是否存在第一动态链接库的信息;其中,动态链接库信息表中包含系统中已存储的动态链接库对应的存储路径;
硬链接建立模块630,用于如果动态链接库信息表中存在第一动态链接库的信息,针对第一动态链接库建立该安装路径到第一动态链接库的存储路径的硬链接;
动态链接库拷贝模块640,用于如果动态链接库信息表中不存在第一动态链接库的信息,将第一动态链接库拷贝至安装路径下;
动态链接库信息更新模块650,用于在动态链接库信息表中添加第一动态链接库与存储路径的映射关系。
在一种可选的实施方式中,动态链接库信息表中还包含系统中已存储的动态链接库的使用次数;
上述应用处理装置600还包括:
使用次数更新模块,用于针对第一动态链接库建立该安装路径到第一动态链接库的存储路径的硬链接之后,将第一动态链接库的使用次数加1;
使用次数设置模块,用于在动态链接库信息表中添加第一动态链接库与存储路径的映射关系之后,将第一动态链接库的使用次数设置为1。
在一种可选的实施方式中,上述应用处理装置600还包括:
第二动态链接库获取模块,用于响应于应用卸载操作,获取待卸载应用所使用的所有第二动态链接库;
信息表查询模块,还用于针对每个第二动态链接库,查询动态链接库信息表中该第二动态链接库的存储路径和使用次数;
第一卸载模块,用于如果第二动态链接库的使用次数大于1,且第二动态链接库的存储路径在待卸载应用的应用目录下,保留第二动态链接库,删除第二动态链接库所在的目录,并将动态链接库信息表中第二动态链接库的使用次数减1;
第二卸载模块,用于如果第二动态链接库的使用次数大于1,且第二动态链接库的存储路径未在待卸载应用的应用目录下,将到第二动态链接库的存储路径的硬链接移除,并将动态链接库信息表中第二动态链接库的使用次数减1;
第三卸载模块,用于如果使用次数等于1,删除第二动态链接库,并将动态链接库信息表中第二动态链接库的信息删除。
在一种可选的实施方式中,上述应用处理装置600还包括:
第三动态链接库获取模块,用于响应于只读内存镜像ROM编译操作,获取多个系统自带应用的安装包中的第三动态链接库;
第一编译模块,用于如果多个系统自带应用对应的第三动态链接库中存在相同的第三动态链接库,将相同的第三动态链接库编译至系统路径;
第二编译模块,用于针对每个系统自带应用,将该系统自带应用对应的第三动态链接库中除相同的第三动态链接库之外的第三动态链接库,编译至该第三动态链接库在该系统自带应用的应用目录的安装路径下,以生成ROM包。
在一种可选的实施方式中,动态链接库信息表包括:系统中已存储的动态链接库的哈希值和系统中已存储的动态链接库对应的存储路径。
在一种可选的实施方式中,信息表查询模块,具体用于查询动态链接库信息表中是否存在与第一动态链接库的哈希值相同的哈希值。
上述装置中各模块或单元的具体细节已经在对应的方法中进行了详细的描述,因此此处不再赘述。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
在本申请的示例性实施例中,还提供一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行本示例实施方式中上述应用处理方法。
图7为本申请实施例中电子设备的一种结构示意图。需要说明的是,图7示出的电子设备700仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图7所示,电子设备700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有系统操作所需的各种程序和数据。中央处理单元701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如局域网(LAN)卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元701执行时,执行本申请的装置中限定的各种功能。
本申请实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述应用处理方法。
需要说明的是,本申请所示的计算机可读存储介质例如可以是—但不限于—电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器、只读存储器、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、射频等等,或者上述的任意合适的组合。
本申请实施例中,还提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述应用处理方法。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种应用处理方法,其特征在于,所述方法包括:
响应于应用安装操作,获取待安装应用的安装包中的第一动态链接库,以及所述第一动态链接库在所述待安装应用的应用目录下的安装路径;
查询动态链接库信息表中是否存在所述第一动态链接库的信息;其中,所述动态链接库信息表中包含系统中已存储的动态链接库与存储路径的映射关系;
如果所述动态链接库信息表中存在所述第一动态链接库的信息,针对所述第一动态链接库建立所述安装路径到第一动态链接库的存储路径的硬链接;
如果所述动态链接库信息表中不存在所述第一动态链接库的信息,将所述第一动态链接库拷贝至所述安装路径下,并在所述动态链接库信息表中添加所述第一动态链接库与存储路径的映射关系。
2.根据权利要求1所述的方法,其特征在于,所述动态链接库信息表中还包含所述系统中已存储的动态链接库的使用次数;
所述方法还包括:
在针对所述第一动态链接库建立所述安装路径到第一动态链接库的存储路径的硬链接之后,将所述第一动态链接库的使用次数加1;或者,
在所述动态链接库信息表中添加所述第一动态链接库与存储路径的映射关系之后,将所述第一动态链接库的使用次数设置为1。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
响应于应用卸载操作,获取待卸载应用所使用的所有第二动态链接库;
针对每个第二动态链接库,查询所述动态链接库信息表中该第二动态链接库的存储路径和使用次数;
如果该第二动态链接库的使用次数大于1,且该第二动态链接库的存储路径在所述待卸载应用的应用目录下,保留该第二动态链接库,删除该第二动态链接库所在的目录,并将所述动态链接库信息表中该第二动态链接库的使用次数减1;
如果该第二动态链接库的使用次数大于1,且该第二动态链接库的存储路径未在所述待卸载应用的应用目录下,将到该第二动态链接库的存储路径的硬链接移除,并将所述动态链接库信息表中该第二动态链接库的使用次数减1;
如果所述使用次数等于1,删除该第二动态链接库,并将所述动态链接库信息表中该第二动态链接库的信息删除。
4.根据权利要求1所述的方法,其特征在于,在所述获取待安装应用的安装包中的第一动态链接库之前,所述方法还包括:
响应于只读内存镜像ROM编译操作,获取多个系统自带应用的安装包中的第三动态链接库;
如果所述多个系统自带应用对应的第三动态链接库中存在相同的第三动态链接库,将所述相同的第三动态链接库编译至系统路径;
针对每个所述系统自带应用,将该系统自带应用对应的第三动态链接库中除所述相同的第三动态链接库之外的第三动态链接库,编译至该第三动态链接库在该系统自带应用的应用目录的安装路径下,以生成ROM包。
5.根据权利要求1所述的方法,其特征在于,所述动态链接库信息表包括:所述系统中已存储的动态链接库的哈希值和所述系统中已存储的动态链接库对应的存储路径。
6.根据权利要求5所述的方法,其特征在于,所述查询动态链接库信息表中是否存在所述第一动态链接库的信息,包括:
查询动态链接库信息表中是否存在与所述第一动态链接库的哈希值相同的哈希值。
7.一种应用处理装置,其特征在于,所述装置包括:
第一动态链接库获取模块,用于响应于应用安装操作,获取待安装应用的安装包中的第一动态链接库,以及所述第一动态链接库在所述待安装应用的应用目录下的安装路径;
信息表查询模块,用于查询动态链接库信息表中是否存在所述第一动态链接库的信息;其中,所述动态链接库信息表中包含系统中已存储的动态链接库与存储路径的映射关系;
硬链接建立模块,用于如果所述动态链接库信息表中存在所述第一动态链接库的信息,针对所述第一动态链接库建立所述安装路径到第一动态链接库的存储路径的硬链接;
动态链接库拷贝模块,用于如果所述动态链接库信息表中不存在所述第一动态链接库的信息,将所述第一动态链接库拷贝至所述安装路径下;
动态链接库信息更新模块,用于在所述动态链接库信息表中添加所述第一动态链接库与存储路径的映射关系。
8.一种电子设备,其特征在于,包括:处理器,所述处理器用于执行存储于存储器的计算机程序,所述计算机程序被处理器执行时实现权利要求1-6任一项所述的方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-6任一项所述的方法的步骤。
10.一种计算机程序产品,其特征在于,当所述计算机程序产品在计算机上运行时,使得所述计算机执行权利要求1-6任一项所述的方法的步骤。
CN202111043390.7A 2021-09-07 2021-09-07 应用处理方法、装置、电子设备、存储介质及程序产品 Pending CN115774578A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111043390.7A CN115774578A (zh) 2021-09-07 2021-09-07 应用处理方法、装置、电子设备、存储介质及程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111043390.7A CN115774578A (zh) 2021-09-07 2021-09-07 应用处理方法、装置、电子设备、存储介质及程序产品

Publications (1)

Publication Number Publication Date
CN115774578A true CN115774578A (zh) 2023-03-10

Family

ID=85387596

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111043390.7A Pending CN115774578A (zh) 2021-09-07 2021-09-07 应用处理方法、装置、电子设备、存储介质及程序产品

Country Status (1)

Country Link
CN (1) CN115774578A (zh)

Similar Documents

Publication Publication Date Title
US6467088B1 (en) Reconfiguration manager for controlling upgrades of electronic devices
KR101343148B1 (ko) 자동화된 디바이스 드라이버 관리
US6618857B1 (en) Method and system for installing software on a computer system
US20150154224A1 (en) Method, device, processing center and system for desktop synchronization
CN105159788B (zh) 一种Android应用间动态共享资源的方法及系统
CN111309335B (zh) 插件应用的编译方法、装置及计算机可读存储介质
CN106055375B (zh) 应用程序安装方法及装置
JP7231518B2 (ja) パッケージ化支援システムおよびパッケージ化支援方法
US7216344B2 (en) Side-by-side drivers
CN111045683A (zh) 小程序代码编译方法、装置、设备及介质
CN112769706B (zh) 组件化路由方法及系统
CN112486552A (zh) 服务器热更新方法、装置、设备和存储介质
CN111198709A (zh) 一种rpm软件包管理方法、系统、装置及可读存储介质
CN113760306A (zh) 安装软件的方法、装置、电子设备及存储介质
CN111694585A (zh) 替换系统分区文件的方法、系统、终端和存储介质
CN108595192B (zh) 一种应用程序的安装方法及终端设备
CN113094085B (zh) 组件集成方法、装置、计算机可读存储介质及电子设备
CN113778477A (zh) 文件处理方法及装置、计算机可读存储介质、电子设备
CN111338699A (zh) 电脑主板初始化方法、装置、计算机设备及存储介质
CN113535254A (zh) 一种微服务的处理方法、部署方法和相关装置
CN115774578A (zh) 应用处理方法、装置、电子设备、存储介质及程序产品
CN112732276A (zh) U盾的控制方法及u盾设备
CN108363614B (zh) 一种应用的业务模块管理方法、装置及服务器
CN111273940B (zh) 将程序文件上传至代码仓库的方法及装置
CN112506574A (zh) ARM服务器中基于CentOS带内修改BIOS配置选项的方法

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