CN117850841A - 一种插件升级的方法和相关装置 - Google Patents
一种插件升级的方法和相关装置 Download PDFInfo
- Publication number
- CN117850841A CN117850841A CN202410020263.2A CN202410020263A CN117850841A CN 117850841 A CN117850841 A CN 117850841A CN 202410020263 A CN202410020263 A CN 202410020263A CN 117850841 A CN117850841 A CN 117850841A
- Authority
- CN
- China
- Prior art keywords
- dynamic link
- link library
- plug
- target
- package
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 74
- 230000008569 process Effects 0.000 claims abstract description 21
- 230000009471 action Effects 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 3
- 230000003993 interaction Effects 0.000 abstract description 7
- 238000004891 communication Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 5
- 238000009434 installation Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供一种插件升级的方法和相关装置,方案包括:当用户终端的宿主APP需要升级目标插件时,可以先下载插件包,基于插件包对所述目标软件进行升级,如果采用宿主APP在运行所述目标插件时,判断是否需要升级动态链接库,如果需要升级,再下载所述动态链接库,如果不需要升级,无需下载所述动态链接库。由此,降低了插件升级过程中的数据交互量,可以大大降低插件包体积,减少插件包下载流量,同时减小插件安装时间,提高插件安装效率。
Description
技术领域
本发明涉及软件管理技术领域,具体涉及一种插件升级的方法和相关装置。
背景技术
目前常规的插件升级做法是将插件APK包(包含dex文件、res文件、asset文件、动态链接库等文件)整体压缩打包下发。但是对于带有动态链接库文件的插件包来说,其包含的动态链接库文件更新频率远远低于插件包中的dex、res等其他文件,即在插件升级时,常常会将不需要更新的动态链接库文件重复下载、解压、安装。另外,对于插件和宿主应用复用同一动态链接库业务模块的场景,插件可以直接使用宿主已安装释放的动态链接库文件,并不需要重复下载。
因此,如何降低插件升级时的数据交互量,提高插件的升级效率,为本领域技术人员亟待解决的技术问题之一。
发明内容
有鉴于此,本发明实施例提供一种插件升级的方法和相关装置,以降低插件升级过程中的数据交互量,提高插件升级效率。
为实现上述目的,本发明实施例提供如下技术方案:
一种插件升级的方法,包括:
获取目标插件的插件包、动态链接库文件列表中各个动态链接库的下载地址和描述信息,所述动态链接库文件列表内包含所述目标插件所有的动态链接库,所述描述信息至少用于描述所述动态链接库的特征信息,所述插件包中包含有除所述动态链接库之外的其他文件;
基于获取到的所述插件包对所述目标插件进行升级;
基于所述描述信息判断是否需要更新所述目标插件的动态链接库;
当需要更新所述动态链接库时,基于所需更新的动态链接库的下载并更新所述动态链接库。
可选的,上述插件升级的方法中,基于获取到的所述插件包对所述目标插件进行升级之后,还包括:
判断宿主APP运行升级后的目标插件的过程中是否用到所述目标插件的动态链接库,如果用到,继续执行动作:基于所述描述信息判断是否需要更新所述目标插件的动态链接库,以及后续动作;
如果未用到动态链接库,则目标插件升级结束。
可选的,上述插件升级的方法中,
基于所述描述信息判断是否需要更新所述目标插件的动态链接库;当需要更新所述动态链接库时,基于所需更新的动态链接库的下载地址下载并更新所述动态链接库,包括:
获取所述目标插件的插件运行系统,运行所述插件包时所用到的abi指令集;
基于所述描述信息获取所述abi指令集中的指令对应的动态链接库的特征信息;
基于所述特征信息,判断所述目标插件对应的插件动态链接库存放目录和宿主动态链接库存放目录中,是否包含所述指令集中的指令对应的动态链接库;
如果不包含所述指令集中的指令对应的动态链接库,基于所述动态链接库对应的下载地址下载所述动态链接库,并将所述动态链接库存储至所述插件动态链接库目录;
将所下载的动态链接库的存储路径注册到所述目标插件的目标路径中;
调用目标接口,完成插件动态连接文件库的加载。
可选的,上述插件升级的方法中,所述特征信息包括:动态链接库的文件名和md5值,所述描述信息还包括abi指令集,所述abi指令集为运行所述插件包时所用到的指令集。
可选的,上述插件升级的方法中,
判断所述目标插件对应的插件动态链接库存放目录和宿主动态链接库存放目录中,是否包含所述指令集中的指令对应的动态链接库,包括:
基于所述特征信息中的动态链接库的文件名,在与所述插件动态链接库存放目录对应的第一路径中查找,是否存在名称一致动态链接库,如果存在,判断查找到的动态链接库的md5值与所述特征信息中的md5值是否相同,如果相同,表明所述插件动态链接库存放目录包含所述指令集中的指令对应的动态链接库,否则,表明所述插件动态链接库存放目录不包含所述指令集中的指令对应的动态链接库;
当所述插件动态链接库存放目录不包含所述指令集中的指令对应的动态链接库时,在与所述宿主动态链接库存放目录对应的第二路径中查找,是否存在名称一致动态链接库,如果存在,判断查找到的动态链接库的md5值与所述特征信息中的md5值是否相同,如果相同,表明所述宿主动态链接库存放目录包含所述指令集中的指令对应的动态链接库,否则,表明所述宿主动态链接库存放目录不包含所述指令集中的指令对应的动态链接库。
一种插件升级的装置,包括:
插件包升级单元,用于获取目标插件的插件包、动态链接库文件列表中各个动态链接库的下载地址和描述信息,所述动态链接库文件列表内包含所述目标插件所有的动态链接库,所述描述信息至少用于描述所述动态链接库的特征信息,所述插件包中包含有除所述动态链接库之外的其他文件;基于获取到的所述插件包对所述目标插件进行升级;
动态链接库升级单元,用于基于所述描述信息判断是否需要更新所述目标插件的动态链接库;当需要更新所述动态链接库时,基于所需更新的动态链接库的下载并更新所述动态链接库。
一种电子设备,包括:
第一存储器和第一处理器;
所述第一存储器,用于存储程序;
所述第一处理器,用于执行所述程序,实现上述任一项所述的插件升级的方法的各个步骤。
一种插件升级的方法,包括:
获取目标插件;
将所述目标插件将所述目标插件拆分为插件包、动态链接库文件列表中各个动态链接库的下载地址和描述信息;所述动态链接库文件列表内包含所述目标插件所有的动态链接库,所述描述信息至少用于描述所述动态链接库的特征信息,所述插件包中包含有除所述动态链接库之外的其他文件;
当获取到用户终端上传的所述目标插件的升级指令时,将所述插件包下发至所述用户终端;
当获取到动态链接库的下载指令时,将所述动态链接库下发至所述用户终端。
一种插件升级的装置,包括:
插件拆分单元,用于获取目标插件;将所述目标插件将所述目标插件拆分为插件包、动态链接库文件列表中各个动态链接库的下载地址和描述信息;所述动态链接库文件列表内包含所述目标插件所有的动态链接库,所述描述信息至少用于描述所述动态链接库的特征信息,所述插件包中包含有除所述动态链接库之外的其他文件;
升级响应单元,用于当获取到用户终端上传的所述目标插件的升级指令时,将所述插件包下发至所述用户终端;当获取到动态链接库的下载指令时,将所述动态链接库下发至所述用户终端。
一种服务器,包括:
第二存储器和第二处理器;
所述第二存储器,用于存储程序;
所述第二处理器,用于执行所述程序,实现上述所述的插件升级的方法的各个步骤。
基于上述技术方案,本发明实施例提供的上述方案,当用户终端的宿主APP需要升级目标插件时,可以先下载插件包,基于插件包对所述目标软件进行升级,如果采用宿主APP在运行所述目标插件时,判断是否需要升级动态链接库,如果需要升级,再下载所述动态链接库,如果不需要升级,无需下载所述动态链接库,由此,降低了插件升级过程中的数据交互量,可以大大降低插件包体积,减少插件包下载流量,同时减小插件安装时间,提高插件安装效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例公开的一种插件的升级方法流程示意图;
图2为本申请实施例公开的插件的拆分过程示意图;
图3为本申请实施例公开的宿主APP和插件升级配置管理平台的交互流程示意图;
图4为本申请另一实施例公开的插件的升级方法流程示意图;
图5为本申请实施例公开的判断动态链接库存放目录中,是否包含所述指令集对应的动态链接库的流程试图。
图6为本申请另一实施例公开的插件的升级方法流程示意图;
图7为本申请实施例公开的一种插件的升级装置的结构示意图;
图8为本申请实施例公开的一种插件的升级装置的结构示意图;
图9为本申请实施例公开的电子设备和服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请将目标插件拆分成插件包和动态链接库文件列表,当用户终端的宿主APP需要升级目标插件时,可以先下载插件包,基于插件包对所述目标软件进行升级,如果在运行所述目标插件时,判断是否需要升级动态链接库,如果需要升级,再下载所述动态链接库,如果不需要升级,无需下载所述动态链接库,由此,降低了插件升级过程中的数据交互量,提高了插件的升级效率。
本实施例公开的插件升级的方法可以应用于用户终端中,所述用户终端可以为手机、电脑或者是其他能够安装并运行插件的电子设备,参见图1,该方法可以包括:
步骤S101:获取目标插件的插件包、动态链接库文件列表中各个动态链接库的下载地址和描述信息。
在使用本方案之前,该过程如图2所示,目标插件源码工程在自动编译打包平台上编译生成目标插件升级包xx.apk,再由插件动态链接库抽离脚本程序对所述目标插件升级包xx.apk进行拆分,拆分成瘦身插件包和动态链接库文件列表,在这里将所述瘦身包定义为插件包,将所述动态链接库文件列表并压缩成zip文件,上传到CDN,并获取所述动态链接库文件列表中各个动态链接库的下载地址。将所述目标插件升级包xx.apk、插件包和动态链接库文件列表中的动态链接库的以及下载地址配置到插件升级配置管理平台后台,后台入库保存这些信息,保证后续插件升级服务接口可以获取到最新配置信息,所述插件升级配置管理平台用于负责插件的升级管理。
参见图3,需要升级目标插件的宿主APP请求插件升级接口,将插件升级指令上传至插件升级配置管理平台后,插件升级配置管理平台中的插件升级管理服务根据已有配置从CDN处下发对应的插件包,此时,所述宿主APP会获取所述插件升级配置管理平台下发的所述目标插件的插件包、与所述目标插件对应的动态链接库文件列表中各个动态链接库的下载地址动态链接库文件列表和描述信息,其中,如上文所述,动态链接库文件列表内包含所述目标插件所对应的所有的动态链接库,所述描述信息至少用于描述所述动态链接库文件列表中的各个动态链接库的特征信息,所述插件包中包含有除所述动态链接库之外的其他文件。
步骤S102:基于获取到的所述插件包对所述目标插件进行升级。
在获取到所述插件包并安装,对所述目标插件进行初步升级,在该过程中并未涉及到动态链接库的更新。
步骤S103:基于所述描述信息判断是否需要更新所述目标插件的动态链接库。
所述插件包安装成功后,运行初步升级后的目标插件,当检测到运行所述目标插件对应的业务需要加载某个动态链接库时,基于所述描述信息确定所述动态链接库的特征信息,基于该特征信息对本地动态链接库目录进行查找,判断本地是否存储有所述动态链接库,如果本地没有所述动态链接库,则需要更新所述目标插件的动态链接库,否则暂时不需要更新所述目标插件的动态链接库。
步骤S104:当需要更新所述动态链接库时,基于所需更新的动态链接库的下载地址,下载并更新所述动态链接库。
参见图3,当需要更新所述动态链接库时,再基于所述动态链接库文件列表中所需更新的动态链接库的下载地址,生成动态链接库的下载请求,基于该请求从CDN处下载未在本地存储的动态链接库。
由上述方案可见,当用户终端的宿主APP需要升级目标插件时,可以先下载插件包,基于插件包对所述目标软件进行升级,如果采用宿主APP在运行所述目标插件时,判断是否需要升级动态链接库,如果需要升级,再单独下载动态链接库,如果不需要升级,无需下载所述动态链接库,由此,降低了插件升级过程中的数据交互量,可以大大降低插件包体积,减少插件包下载流量,同时减小插件安装时间,提高插件安装效率,对于低存储容量设备还能有效提高插件安装成功率的好处。
在本实施例公开的技术方案中,考虑到部分目标插件在安装后到宿主APP后,所述宿主APP在运行过程中并不会仅可能会用到所述目标插件的部分功能,在运行该部分功能时,有可能并不会用到所述目标插件的动态链接库,此时,就无需判断是否需要更新所述目标插件的动态链接库了,因此,在本实施例中,基于获取到的所述插件包对所述目标插件进行升级之后,还包括:判断宿主APP运行升级后的目标插件的过程中是否用到所述目标插件的动态链接库,如果用到,继续执行动作:基于所述描述信息判断是否需要更新所述目标插件的动态链接库,以及后续动作,如果未用到动态链接库,则目标插件升级结束。在该过程中,采用所述宿主APP运行升级后的目标插件,对所述目标插件的运行过程进行监测,判断所述目标插件在运行时是否涉需要调用目标插件的动态链接库,如果需调用,执行动作基于所述描述信息判断是否需要更新所述目标插件的动态链接库,如果无需调用,则所述目标插件升级完成。
在本实施例中,参见图4,基于所述描述信息判断是否需要更新所述目标插件的动态链接库,具体可以包括:
步骤S401:获取所述目标插件的插件运行系统,运行所述插件包时所用到的abi指令集。
所述abi(Application Binary Interface)指令集存储有多条指令,每条指令均可以对应一个或多个动态链接库,这些动态链接库就是在执行该指令时所需用到的文件。
步骤S402:基于所述描述信息获取所述abi指令集中的指令对应的动态链接库的特征信息。
本步骤中,依次遍历所述abi指令集中的各个指令,确定各个指令对应的动态链接库,再基于所述描述信息确定所述动态链接库的特征信息,在本实施例中,所述特征信息可以指的是所述动态链接库的名称和md5值。动态链接库的md5值的作用是防止被篡改。md5值可以验证动态链接库的完整性,以确保下载或传输的动态链接库与原始文件相同。在本实施例中,可以通过比较md5值是否相同的方式,判断本地存储的动态链接库与未下载的动态链接库是否相同。
步骤S403:基于所述特征信息,判断所述目标插件对应的插件动态链接库存放目录和宿主动态链接库存放目录中,是否包含所述指令集中的指令对应的动态链接库。
在假设原目标插件的应用对应的apk包含armeabi-v7a(插件动态链接库存放目录)和arm64-v8a(宿主动态链接库存放目录)两个目录,两个目录下都可存放运行过程中所需用到的动态链接库。
在本步骤中,获取所述abi指令集中的各个指令对应的动态链接库的特征信息,基于所述特征信息在本地的动态链接库存放目录进行查找,判断是否查找到所述特征信息对应的动态链接库,如果查找到该动态链接库,则表明本地动态链接库存放目录中包含该指令对应的动态链接库。在本实施例中,本地动态链接库存放目录可以包括插件动态链接库存放目录和宿主动态链接库存放目录,通过对所述插件动态链接库存放目录和宿主动态链接库存放目录依次查找,可以判断所述本地动态链接库存放目录是否包含所述特征信息对应的动态链接库。
步骤S404:如果不包含所述指令集中的指令对应的动态链接库,基于所述动态链接库对应的下载地址下载所述动态链接库,并将所述动态链接库存储至所述插件动态链接库目录。
当本地动态链接库存放目录不包含所述特征信息对应的动态链接库时,表明该动态链接库需要更新,可以直接基于所述动态链接库的下载地址下载所述动态链接库。在下载完成所述动态链接库以后,将下载的动态链接库存储至所述本地动态链接库目录中,具体的,可以存储至插件动态链接库目录中,同时记录该动态链接库的存储路径。
步骤S405:将所下载的动态链接库的存储路径注册到所述目标插件的目标路径中。
在本步骤中,所述目标路径可以指的是classloader的nativeLibraryDirectories路径,classloader的nativeLibraryDirectories路径包括BaseDexClassLoader构造函数中传递的libraryPath。BaseDexClassLoader构造函数中传递的libraryPath是apk下lib中添加的so库路径。
步骤S406:调用目标接口,完成插件动态连接库的加载。
本步骤具体可以为直接调用system.loadlibrary()接口,则完成插件动态链接库加载。当然也可以采用其他方法完成动态链接库的加载。
具体的的,该过程可以包括:
在本实施例公开的技术方案中,所述特征信息可以包括动态链接库的文件名和md5值,所述描述信息还包括abi指令集,所述abi指令集为运行所述插件包时所用到的指令集。通过描述信息的方式将所述插件包运行过程中所需用到的指令集发送至宿主APP。通过所述文件名和md5值的方式判断本地动态链接库目录中是否存储有所述特征信息所对应的动态链接库。此时,可以通过文件名和md5值对比的方式,判断所述本地动态链接库目录中是否存储有所述特征信息所对应的动态链接库。在该过程中,先基于文件名对所述本地动态链接库目录进行查找,判断是否包含该文件名对应的动态链接库,如果存在,再基于所述本地动态链接库目录对应的存储路径,获取查找到的动态链接库,提取所述动态链接库的md5值,将该md5值与所述特征信息中的md5值进行对比,如果两者相同,则本地存储的动态链接库目录无需更新升级,否则,本地存储的动态链接库目录需更新升级。
参见图5,本实施例中,判断所述目标插件对应的插件动态链接库存放目录和宿主动态链接库存放目录中,是否包含所述指令集中的指令对应的动态链接库,具体过程可以包括:
步骤S501:基于所述特征信息中的动态链接库的文件名,在与所述插件动态链接库存放目录对应的第一路径中查找,是否存在名称一致动态链接库,如果存在,执行步骤S502;否则执行步骤S503。
假设特征信息中的动态链接库的文件名为libnative1.so,宿主APP对应的宿主包名为com.demo.host,目标插件对应的插件包名为com.demo.plugin,则插件动态链接库目录对应的存储路径为/data/data/com.demo.host/plugin/com.demo.plugin/lib/,宿主动态链接库目录对应的目录为/data/data/com.demo.host/lib。
在本方案中,先由描述信息中获取所述目标插件对应的abi指令集,如指令集为armeabi-v7a,获取abi指令集中的指令所对应的动态链接库的文件名(libnative1.so)和md5值,在插件动态链接库目录对应的动态链接库的存储路径(/data/data/com.demo.host/plugin/com.demo.plugin/lib/native1)下查找是否有同名文件libnative1.so,如果存在同名文件,执行步骤S502,否则执行步骤S505;
步骤S502:判断查找到的动态链接库的md5值与所述特征信息中的md5值是否相同;
本步骤中,当找到同名文件后,获取该同名文件的md5值,判断所述md5值与所述特征信息中的md5值是否相同,如果相同,表明所述插件动态链接库存放目录包含该指令对应的动态链接库,该动态连接库检查通过,直接记录当前将动态链接库路径(/data/data/com.demo.host/plugin/com.demo.plugin/lib/native1),继续遍历所述abi指令集中的下一条指令,如果不相同,表明所述插件动态链接库存放目录不包含该指令对应的动态链接库,执行步骤S503;
步骤S503:当所述插件动态链接库存放目录不包含所述指令集中的指令对应的动态链接库时,在与所述宿主动态链接库存放目录对应的第二路径中查找,是否存在名称一致动态链接库;
本步骤与步骤S501过程类似,只是查询的地址不同,在宿主动态链接库目录对应的动态链接库的存储路径(/data/data/com.demo.host/li)下查找是否有同名文件libnative1.so;若存在,执行步骤S504,否则执行步骤S505;
步骤S504:判断查找到的动态链接库的md5值与所述描述信息中的md5值是否相同;
本步骤与所述步骤S502类似,当找到同名文件后,获取该同名文件的md5值,判断所述md5值与所述特征信息中的md5值是否相同,如果相同,表明所述宿主动态链接库存放目录包含所述指令集对应的动态链接库,该动态连接库检查通过,直接记录当前将动态链接库路径(/data/data/com.demo.host/lib),继续便利所述abi指令集中的下一条指令,如果不相同,表明所述插件动态链接库存放目录不包含该指令对应的动态链接库,执行步骤S505。
步骤S505:获取所述动态链接库下载地址,基于所述下载地址下载并更新所述动态链接库。
当由基于所需更新的所述下载地址下载并更新所述动态链接库时,仍需继续遍历所述abi指令集中的后续指令。
此外,对应于服务器端,本申请同样公开了一种插件升级的方法,参见图6,该方法包括:
步骤S601:获取目标插件。
本步骤中,获取到的目标插件可以为未拆分的完成目标插件。
步骤S602:将所述目标插件将所述目标插件拆分为插件包、动态链接库文件列表以及动态链接库文件列表中各个动态链接库的下载地址和描述信息;
所述动态链接库文件列表内包含所述目标插件所有的动态链接库,所述描述信息至少用于描述所述动态链接库的特征信息,所述插件包中包含有除所述动态链接库之外的其他文件。
步骤S603:当获取到用户终端上传的所述目标插件的升级指令时,将所述插件包下发至所述用户终端。
所述升级指令可以为用户终端上的宿主APP发送的目标插件的升级指令。在获取到该指令时,将所述目标插件对应的插件包下发至所述用户终端。
步骤S604:当获取到动态链接库的下载指令时,将所述动态链接库下发至所述用户终端。
本步骤中,当所述宿主APP需要更新所述目标插件的动态链接库时,会上传动态链接库的下载指令当获取到所述下载指令时,将所述下载指令对应的动态链接库下发至所述用户终端。
针对于上述用户终端对应的插件升级的方法,本实施例还公开了一种插件升级的装置,装置各个单元的具体工作内容,请参见上述用户终端对应的插件升级的方法实施例的内容。
下面对本发明实施例提供的插件升级的装置进行描述,下文描述的插件升级的装置与上文描述的插件升级的方法可相互对应参照。
参见图7,所述插件升级的装置可以包括:
插件包升级单元10,用于获取目标插件的插件包、动态链接库文件列表中各个动态链接库的下载地址和描述信息,所述动态链接库文件列表内包含所述目标插件所有的动态链接库,所述描述信息至少用于描述所述动态链接库的特征信息,所述插件包中包含有除所述动态链接库之外的其他文件;基于获取到的所述插件包对所述目标插件进行升级;
动态链接库升级单元20,用于基于所述描述信息判断是否需要更新所述目标插件的动态链接库;当需要更新所述动态链接库时,基于所需更新的动态链接库的下载并更新所述动态链接库。
针对于上述服务器端对应的插件升级的方法,本实施例还公开了一种插件升级的装置,装置各个单元的具体工作内容,请参见上述服务器端对应的插件升级的方法实施例的内容。
下面对本发明实施例提供的插件升级的装置进行描述,下文描述的插件升级的装置与上文描述的插件升级的方法可相互对应参照。
参见图8,所述插件升级的装置可以包括:
插件拆分单元30,用于获取目标插件;将所述目标插件将所述目标插件拆分为插件包、动态链接库文件列表以及动态链接库文件列表中各个动态链接库的下载地址和描述信息;所述动态链接库文件列表内包含所述目标插件所有的动态链接库,所述描述信息至少用于描述所述动态链接库的特征信息,所述插件包中包含有除所述动态链接库之外的其他文件;
升级响应单元40,用于当获取到用户终端上传的所述目标插件的升级指令时,将所述插件包下发至所述用户终端;当获取到动态链接库的下载指令时,将所述动态链接库下发至所述用户终端。
对应于上述插件升级的方法,本申请还公开了一种电子设备和服务器,电子设备可以为手机、电脑等能够加载运行APP的智能终端,所述电子设备和服务器,参见图9所示,电子设备和服务器可以包括:至少一个处理器100,至少一个通信接口200,至少一个存储器300和至少一个通信总线400;
在本发明实施例中,处理器100、通信接口200、存储器300、通信总线400的数量为至少一个,且处理器100、通信接口200、存储器300通过通信总线400完成相互间的通信;显然,图9所示的处理器100、通信接口200、存储器300和通信总线400所示的通信连接示意仅是可选的;
可选的,通信接口200可以为通信模块的接口,如GSM模块的接口;
处理器100可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
存储器300可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器,所述存储器300内存储有预设程序。
所述处理器100具体用于执行所述存储器中的程序,以实现用户终端和服务器端对应的插件升级的方法。
在本实施例中,将与用户终端对应的插件升级的方法相匹配的电子设备中的存储器和处理器分别记为第一存储器和第一处理器,所述第一存储器用于存储所述用户终端对应的插件升级的方法相匹配的程序,所述第一处理器用于执行所述程序,以实现上述与用户终端对应的插件升级的方法的各个步骤。
在本实施例中,将与服务器端对应的插件升级的方法相匹配的电子设备中的存储器和处理器分别记为第二存储器和第二处理器,所述第二存储器用于存储所述服务器端对应的插件升级的方法相匹配的程序,所述第二处理器用于执行所述程序,以实现上述与服务器端对应的插件升级的方法的各个步骤。
为了描述的方便,描述以上系统时以功能分为各种模块分别描述。当然,在实施本发明时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种插件升级的方法,其特征在于,包括:
获取目标插件的插件包、动态链接库文件列表中各个动态链接库的下载地址和描述信息,所述动态链接库文件列表内包含所述目标插件所有的动态链接库,所述描述信息至少用于描述所述动态链接库的特征信息,所述插件包中包含有除所述动态链接库之外的其他文件;
基于获取到的所述插件包对所述目标插件进行升级;
基于所述描述信息判断是否需要更新所述目标插件的动态链接库;
当需要更新所述动态链接库时,基于所需更新的动态链接库的下载并更新所述动态链接库。
2.根据权利要求1所述的插件升级的方法,其特征在于,基于获取到的所述插件包对所述目标插件进行升级之后,还包括:
判断宿主APP运行升级后的目标插件的过程中是否用到所述目标插件的动态链接库,如果用到,继续执行动作:基于所述描述信息判断是否需要更新所述目标插件的动态链接库,以及后续动作;
如果未用到动态链接库,则目标插件升级结束。
3.根据权利要求1所述的插件升级的方法,其特征在于,基于所述描述信息判断是否需要更新所述目标插件的动态链接库;当需要更新所述动态链接库时,基于所需更新的动态链接库的下载地址下载并更新所述动态链接库,包括:
获取所述目标插件的插件运行系统运行所述插件包时所用到的abi指令集;
基于所述描述信息获取所述abi指令集中的指令对应的动态链接库的特征信息;
基于所述特征信息,判断所述目标插件对应的插件动态链接库存放目录和宿主动态链接库存放目录中,是否包含所述指令集中的指令对应的动态链接库;
如果不包含所述指令集中的指令对应的动态链接库,基于所述动态链接库对应的下载地址下载所述动态链接库,并将所述动态链接库存储至所述插件动态链接库目录;
将所下载的动态链接库的存储路径注册到所述目标插件的目标路径中;
调用目标接口,完成插件动态连接文件库的加载。
4.根据权利要求3所述的插件升级的方法,其特征在于,所述特征信息包括:动态链接库的文件名和md5值,所述描述信息还包括abi指令集,所述abi指令集为运行所述插件包时所用到的指令集。
5.根据权利要求4所述的插件升级的方法,其特征在于,判断所述目标插件对应的插件动态链接库存放目录和宿主动态链接库存放目录中,是否包含所述指令集中的指令对应的动态链接库,包括:
基于所述特征信息中的动态链接库的文件名,在与所述插件动态链接库存放目录对应的第一路径中查找,是否存在名称一致动态链接库,如果存在,判断查找到的动态链接库的md5值与所述特征信息中的md5值是否相同,如果相同,表明所述插件动态链接库存放目录包含所述指令集中的指令对应的动态链接库,否则,表明所述插件动态链接库存放目录不包含所述指令集中的指令对应的动态链接库;
当所述插件动态链接库存放目录不包含所述指令集中的指令对应的动态链接库时,在与所述宿主动态链接库存放目录对应的第二路径中查找,是否存在名称一致动态链接库,如果存在,判断查找到的动态链接库的md5值与所述特征信息中的md5值是否相同,如果相同,表明所述宿主动态链接库存放目录包含所述指令集中的指令对应的动态链接库,否则,表明所述宿主动态链接库存放目录不包含所述指令集中的指令对应的动态链接库。
6.一种插件升级的方法,其特征在于,包括:
获取目标插件;
将所述目标插件将所述目标插件拆分为插件包、动态链接库文件列表以及动态链接库文件列表中各个动态链接库的下载地址和描述信息;所述动态链接库文件列表内包含所述目标插件所有的动态链接库,所述描述信息至少用于描述所述动态链接库的特征信息,所述插件包中包含有除所述动态链接库之外的其他文件;
当获取到用户终端上传的所述目标插件的升级指令时,将所述插件包下发至所述用户终端;
当获取到动态链接库的下载指令时,将所述动态链接库下发至所述用户终端。
7.一种插件升级的装置,其特征在于,包括:
插件包升级单元,用于获取目标插件的插件包、动态链接库文件列表中各个动态链接库的下载地址和描述信息,所述动态链接库文件列表内包含所述目标插件所有的动态链接库,所述描述信息至少用于描述所述动态链接库的特征信息,所述插件包中包含有除所述动态链接库之外的其他文件;基于获取到的所述插件包对所述目标插件进行升级;
动态链接库升级单元,用于基于所述描述信息判断是否需要更新所述目标插件的动态链接库;当需要更新所述动态链接库时,基于所需更新的动态链接库的下载并更新所述动态链接库。
8.一种插件升级的装置,其特征在于,包括:
插件拆分单元,用于获取目标插件;将所述目标插件将所述目标插件拆分为插件包、动态链接库文件列表中各个动态链接库的下载地址和描述信息;所述动态链接库文件列表内包含所述目标插件所有的动态链接库,所述描述信息至少用于描述所述动态链接库的特征信息,所述插件包中包含有除所述动态链接库之外的其他文件;
升级响应单元,用于当获取到用户终端上传的所述目标插件的升级指令时,将所述插件包下发至所述用户终端;当获取到动态链接库的下载指令时,将所述动态链接库下发至所述用户终端。
9.一种电子设备,其特征在于,包括:
第一存储器和第一处理器;
所述第一存储器,用于存储程序;
所述第一处理器,用于执行所述程序,实现如权利要求1-6中任一项所述的插件升级的方法的各个步骤。
10.一种服务器,其特征在于,包括:
第二存储器和第二处理器;
所述第二存储器,用于存储程序;
所述第二处理器,用于执行所述程序,实现如权利要求7所述的插件升级的方法的各个步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410020263.2A CN117850841A (zh) | 2024-01-05 | 2024-01-05 | 一种插件升级的方法和相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410020263.2A CN117850841A (zh) | 2024-01-05 | 2024-01-05 | 一种插件升级的方法和相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117850841A true CN117850841A (zh) | 2024-04-09 |
Family
ID=90532056
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410020263.2A Pending CN117850841A (zh) | 2024-01-05 | 2024-01-05 | 一种插件升级的方法和相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117850841A (zh) |
-
2024
- 2024-01-05 CN CN202410020263.2A patent/CN117850841A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105867947B (zh) | 预置应用程序升级后的数据处理方法及装置 | |
JP5658283B2 (ja) | アプリケーションの稼働方法、装置及びシステム | |
CN107506221B (zh) | 应用程序升级方法、装置及设备 | |
US20160054990A1 (en) | Method Of And Terminal For Updating Library File In System Application | |
CN111427596B (zh) | 一种软件升级的方法、装置及终端设备 | |
CN105373396A (zh) | 插件平台中的插件更新方法和装置 | |
JP2001147826A (ja) | 一次メモリのハッシュインデックスからオブジェクトをロードするための装置及び方法 | |
CN108540509B (zh) | 一种终端浏览器的处理方法、装置及服务器、智能终端 | |
CN107797818A (zh) | 应用程序升级方法及装置 | |
CN111263354B (zh) | 一种ota差分升级方法及装置 | |
CN110968331B (zh) | 应用程序运行的方法和装置 | |
CN110457049B (zh) | 实现插件自动化的方法、装置、电子设备及存储介质 | |
CN110417828A (zh) | 一种物联网终端的升级方法和装置 | |
CN104699511A (zh) | 插件升级方法及装置 | |
CN110765394A (zh) | so文件加载方法、装置、存储介质及终端设备 | |
CN113342419B (zh) | 一种推送系统加载方法、装置、电子设备及存储介质 | |
CN111552517A (zh) | 应用程序启动方法、装置、电子设备及计算机存储介质 | |
CN113094064A (zh) | 网关软件模块升级方法、装置、设备及存储介质 | |
CN117850841A (zh) | 一种插件升级的方法和相关装置 | |
CN115878138A (zh) | 应用预下载方法、装置、计算机、存储介质 | |
CN115357260A (zh) | 终端设备的程序升级方法、装置、终端设备和存储介质 | |
CN107783837B (zh) | 一种进行存储扩展的方法、装置及电子设备 | |
CN112416386A (zh) | 软件升级的方法、装置、系统以及介质 | |
CN113961841A (zh) | 原生应用网页加载方法、系统、存储介质及设备 | |
CN112988686A (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 |