CN116382796B - 一种h5小程序运行器的插件管理方法、装置及电子设备 - Google Patents

一种h5小程序运行器的插件管理方法、装置及电子设备 Download PDF

Info

Publication number
CN116382796B
CN116382796B CN202310325761.3A CN202310325761A CN116382796B CN 116382796 B CN116382796 B CN 116382796B CN 202310325761 A CN202310325761 A CN 202310325761A CN 116382796 B CN116382796 B CN 116382796B
Authority
CN
China
Prior art keywords
plug
applet
interface
information
memory
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.)
Active
Application number
CN202310325761.3A
Other languages
English (en)
Other versions
CN116382796A (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.)
Shanghai Shijiu Information Technology Co ltd
Original Assignee
Shanghai Shijiu 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 Shanghai Shijiu Information Technology Co ltd filed Critical Shanghai Shijiu Information Technology Co ltd
Priority to CN202310325761.3A priority Critical patent/CN116382796B/zh
Publication of CN116382796A publication Critical patent/CN116382796A/zh
Application granted granted Critical
Publication of CN116382796B publication Critical patent/CN116382796B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供一种H5小程序运行器的插件管理方法、装置及电子设备,所述方法包括:接收H5小程序发送的原生功能请求信息,并通过预置挂载规则将插件管理模块的接口函数挂载至所述H5小程序的代码中以得到load接口;通过所述load接口接收加载指令,并按照系统原生动态加载的方式将预置插件资源中的插件程序加载进内存;基于插件对插件加载完成的响应,通过预置沟通接口接收所述插件发送的接口信息;根据所述接口信息得到所述H5小程序可使用的对应插件接口,并发送所述插件接口至所述H5小程序,以使所述H5小程序通过所述插件接口控制所述插件。采用本申请,使H5小程序可以使用系统的原生功能的同时,减小了对内核模块造成的不利影响。

Description

一种H5小程序运行器的插件管理方法、装置及电子设备
技术领域
本申请涉及H5小程序开发领域,具体涉及一种H5小程序运行器的插件管理方法、装置及电子设备。
背景技术
随着网络的发展,在网络上可以实现的功能越来越多,通过H5小程序运行器运行多种H5小程序可以在网络中实现多种功能,并且H5小程序不需要经过长时间的下载安装过程,可以在H5小程序运行器上直接打开使用,关闭H5小程序后也不会占用系统内存,给人们的生活带来极大便利。
H5小程序的单纯依靠JavaScript(缩写JS)代码进行开发,此时H5小程序无法使用系统的原生功能,现有技术中为使H5小程序获得原生功能接口,将需要的多种原生功能对应的多种代码直接写入内核模块,即这部分功能由具备系统原生对接能力的H5小程序运行器的内核模块来实现,如果H5小程序需要运用新的系统原生功能,则需要重新下载新的内核模块,新的内核模块为添加了新的系统原生功能对应代码的内核模块,从而使H5小程序可以运用新的系统原生功能。
针对上述现有技术,当H5小程序需要运用的系统原生功能越多,内核模块的体积就越大,下载周期会变长,多次下载内核模块也会使内核模块变得不稳定,另外,某个原生功能并不是所有用户都会用到,对于不需要该原生功能的用户,加入该功能只会占用资源,综上所述,如果将对接功能放到内核模块来使H5小程序使用系统原生功能,会对内核模块造成不利影响。
发明内容
为了在H5小程序可以使用系统的原生功能的情况下,减小对内核模块造成的不利影响,本申请提供一种H5小程序运行器的插件管理方法及装置。
在本申请的第一方面提供了一种H5小程序运行器的插件管理方法。
一种H5小程序运行器的插件管理方法包括:
接收H5小程序发送的原生功能请求信息,并通过预置挂载规则将插件管理模块的接口函数挂载至所述H5小程序的代码中以得到load接口;
通过所述load接口接收加载指令,并按照系统原生动态加载的方式将预置插件资源中的插件程序加载进内存;
基于插件对插件加载完成的响应,通过预置沟通接口接收所述插件发送的接口信息;
根据所述接口信息得到所述H5小程序可使用的对应插件接口,并发送所述插件接口至所述H5小程序,以使所述H5小程序通过所述插件接口控制所述插件。
通过采用上述技术方案,当H5小程序进入特定的场景,需要运用系统原生功能时,小程序运行器接收H5小程序发送的原生功能请求信息,由于在某种业务弹窗或者子页面出现后才开始加载插件,在非特定场景时不加载,具有节省内存资源的作用;接收原生功能请求信息后,通过挂载接口函数的方式使H5小程序与插件管理模块沟通,接收加载指令,插件管理模块将预置插件资源中的插件程序加载进内存,接收插件发送的接口信息,并翻译接口信息,将翻译的接口信息转换为H5小程序可使用的对应的插件接口,H5小程序通过插件接口控制插件,由于插件为具备系统原生对接能力的程序,H5小程序可以通过插件使用系统的原生功能,并且上述方案将系统原生功能对接处理从小程序运行器中的内核模块中剥离出来,同时减小了对内核模块造成的不利影响。
可选的,所述通过预置挂载规则将插件管理模块的接口函数挂载至所述H5小程序的代码中以得到load接口,包括:
通过内核模块中的JavaScript runtime模块,将插件管理模块的load接口函数挂载到所述H5小程序的代码的global全局变量中,得到所述load接口。
通过采用上述技术方案,将插件管理模块的load接口函数挂载到H5小程序的代码中,得到load接口,load接口可用于H5小程序与插件管理模块之间进行关于加载处理方面的沟通。
可选的,所述根据所述接口信息得到所述H5小程序可使用的对应插件接口,包括:
将所述接口信息的语法类型翻译为与所述JavaScript runtime模块的语法类型一致的语法类型;
通过所述JavaScript runtime模块将所述翻译后的接口信息转换为所述H5小程序可使用的对应插件接口。
通过采用上述技术方案,由于插件发送的接口信息的语法类型可能与JavaScriptruntime模块的语法类型不一致,而H5小程序只能识别JavaScript runtime模块的语法类型的数据,所以需要将接收的接口信息进行翻译,并将翻译的接口信息进行转换,才能得到H5小程序可使用的插件接口。
可选的,所述接收加载指令后,还包括:
获取所述内存的插件运行信息以及H5小程序对应的插件信息,判断所述内存中是否存在与所述H5小程序对应的运行插件程序;
若所述内存中存在与所述H5小程序对应的运行插件程序,则复制所述插件对应的插件接口得到复制插件接口,以使所述H5小程序通过所述复制插件接口控制所述插件。
通过采用上述技术方案,获取内存的插件运行信息以及H5小程序对应的插件信息,判断内存中是否存在与H5小程序对应的运行插件程序,若内存中存在与H5小程序对应的运行插件程序,则复制插件对应的插件接口,使用复制的插件接口使H5小程序控制插件,由于内存中已存在与H5小程序对应的运行插件程序,即另外的H5小程序已经加载了需要的插件,通过复制接口的方式,使小程序运行器不需要重新再下载/加载一遍插件,节约了闪存/内存的资源。
可选的,所述判断所述内存中是否存在与所述H5小程序对应的运行插件程序后,还包括:
若所述内存中不存在与所述H5小程序对应的运行插件程序,则查询闪存以获取插件下载列表;
根据所述插件下载列表以及所述插件信息判断所述H5小程序对应的插件资源是否完成下载;
若所述H5小程序对应的插件资源未完成下载,则将所述插件信息发送至服务端,并从所述服务端下载所述插件资源;
当所述插件资源下载完成后,加载所述插件资源,并获取所述插件接口以使所述H5小程序控制插件。
通过采用上述技术方案,若内存中不存在已加载的对应插件程序,则判断闪存中是否存在对应的插件资源,若不存在,则从服务端下载对应插件资源,并加载插件资源使H5小程序控制插件,由于插件模块的功能单一,每个插件一般仅有一个对接的原生功能,所以代码体量较小,下载所需的时间少。
可选的,所述从所述服务端下载所述插件资源,包括:
接收服务端发送的插件下载地址,根据所述下载地址从服务端下载所述插件资源至闪存中;
对所述插件资源进行校验。
通过采用上述技术方案,接收服务端发送的插件下载地址,根据下载地址从服务端下载插件资源至闪存中,由于插件具有多种类型,制作插件的运营商也有所不同,通过不同的下载地址能下载到所需的对应插件,插件资源下载完成后,对插件资源进行校验,保证运用的插件不会出现错误。
可选的,所述根据所述插件下载列表以及所述插件信息判断所述H5小程序对应的插件资源是否完成下载后,还包括:
根据所述插件下载列表以及所述插件信息判断所述H5小程序需要的插件是否为迭代插件,所述迭代插件为与原有插件的插件名称相同,插件版本信息不同的插件;
若所述H5小程序需要的插件为迭代插件,则下载所述迭代插件;
删除所述原有插件。
通过采用上述技术方案,根据插件下载列表以及插件信息判断H5小程序需要的插件是否为迭代插件,若H5小程序需要的插件为迭代插件,则下载迭代插件,删除原有插件,当插件的版本更新后, H5小程序给定指定版本的插件后,立刻开始下载插件并加载此版本的插件,保证版本匹配,不用处理由于版本偏差引起的接口兼容问题。
可选的,所述以使所述H5小程序通过所述插件接口控制插件后,还包括:
获取所述H5小程序的状态,所述状态包括关闭状态以及开启状态;
若所述H5小程序的状态为所述关闭状态,则获取预置unload接口,通过所述预置unload接口发起插件卸载处理,使得所述插件管理模块卸载所述插件。
通过采用上述技术方案,当小程序关闭后,通过获得的预置unload接口直接卸载插件,使得在不需要使用H5小程序时,插件不会占用内存资源。
在本申请的第二方面提供了一种H5小程序运行器的插件管理装置,所述装置包括:
挂载模块,用于接收H5小程序发送的原生功能请求信息,并通过预置挂载规则将插件管理模块的接口函数挂载至所述H5小程序的代码中以得到load接口;
插件加载模块,用于接收加载指令,并按照系统原生动态加载的方式将预置插件资源中的插件程序加载进内存;
响应模块,用于基于插件对插件加载完成的响应,通过预置沟通接口接收所述插件发送的接口信息;
接口模块,用于根据所述接口信息得到所述H5小程序可使用的对应插件接口,并通过所述load接口发送所述插件接口至所述H5小程序,以使所述H5小程序通过所述插件接口控制所述插件。
在本申请的第三方面提供了一种电子设备,包括处理器、存储器、用户接口及网络接口,所述存所述存储器用于存储指令,所述用户接口和网络接口用于给其他设备通信,所述处理器用于执行所述存储器中存储的指令,以使所述电子设备执行一种H5小程序运行器的插件管理方法。
综上所述,本申请包括以下至少一种有益技术效果:
1.使用本申请,将系统原生功能对接处理从小程序运行器中的内核模块中剥离出来,通过本申请中具备系统原生对接能力的插件进行对接,使H5小程序可以使用系统的原生功能,同时减小了对内核模块造成的不利影响;
2.使用本申请,若另外的H5小程序已经加载了需要的插件,通过复制接口的方式,使小程序运行器不需要重新再下载/加载一遍插件,节约了闪存/内存的资源;
3.使用本申请,当插件的版本更新后,H5小程序给定指定版本的插件后,立刻开始下载插件并加载此版本的插件,保证版本匹配,不用处理由于版本偏差引起的接口兼容问题。
附图说明
图1是本申请实施例的一种H5小程序运行器的插件管理方法的流程示意图;
图2是本申请实施例的一种H5小程序运行器的插件管理方法的另一种流程示意图;
图3是本申请实施例的一种H5小程序运行器内部结构示意图;
图4是本申请实施例的模块沟通方法的结构示意图;
图5是本申请实施例的插件资源的下载及加载的判断步骤流程示意图;
图6是本申请实施例的一种H5小程序运行器的插件管理装置的模块示意图;
图7是本申请实施例的一种电子设备的结构示意图。
附图标记说明:1、挂载模块;2、插件加载模块;3、响应模块;4、接口模块;1000、电子设备;1001、处理器;1002、通信总线;1003、用户接口;1004、网络接口;1005、存储器。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。
在本申请实施例的描述中,“示性的”、“例如”或者“举例来说”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示性的”、“例如”或者“举例来说”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示性的”、“例如”或者“举例来说”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,单独存在B,同时存在A和B这三种情况。另外,除非另有说明,术语“多个”的含义是指两个或两个以上。例如,多个系统是指两个或两个以上的系统,多个屏幕终端是指两个或两个以上的屏幕终端。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
参照图1与图2,一种H5小程序运行器的插件管理方法,具体包括:
S10:接收H5小程序发送的原生功能请求信息。
参照图3,在本申请实施例中,小程序运行器为本申请的执行主体,可以解释为虚拟机,H5小程序运行在小程序运行器内,小程序运行器包括内核模块,内核模块包括插件管理模块以及JavaScript runtime(JavaScript 运行)模块,内核模块主要用于执行和渲染H5小程序,内核模块中的插件管理模块用于与插件进行数据沟通。
H5小程序为内嵌在小程序运行器内不需要下载安装即可使用的应用程序,H5小程序的部分内容通过超文本标记语言5.0(Hyper Text Markup Language,简称H5)进行开发,使用的代码为JavaScript代码。
原生功能请求信息为H5小程序发送的请求得到系统某种原生功能的信息,原生功能请求信息包括插件信息,插件信息包括H5小程序所需插件的插件名称以及插件版本信息,插件信息位于H5小程序源码的预置程序模块中,预置程序模块具体可以是JavaScript程序模块。本申请实施例中的插件为具备系统原生对接能力的程序。
具体的,当H5小程序进入特定的场景,即某种特定业务弹窗或者子页面出现,需要运用系统原生功能时,小程序运行器接收H5小程序发送的原生功能请求信息。
S20:通过预置挂载规则将插件管理模块的接口函数挂载至H5小程序的代码中以得到load接口。
参照图4,在本实施例中,load接口为H5小程序与插件管理模块之间用于加载方面的数据沟通的虚拟接口,可以理解为H5小程序此时可以通过load接口在一定程度上控制插件管理模块。
具体的,当接收到H5小程序发送的原生功能请求信息后,内核模块中的JavaScript runtime模块将插件管理模块的load接口函数挂载到H5小程序的代码中,并调用load接口函数,得到load接口。
load接口函数的具体挂载位置为H5小程序代码中的global全局变量中,具体的load接口函数可以是global.LoadPlugin()。
S30:通过load接口接收加载指令,按照系统原生动态加载的方式将预置插件资源中的插件程序加载进内存。
内存为计算机/终端内存储运算数据的存储空间,插件加载完成后,插件程序在内存中运行。
预置插件资源为预先安装在闪存(快闪存储器)中的资源文件,插件资源包括插件程序以及相关资源文件。
具体的,得到load接口后,插件管理模块接收H5小程序通过load接口发送的加载指令,基于加载指令,插件管理模块按照系统原生动态加载的方式加载闪存中的预置插件资源,即将位于闪存中的插件程序加载至内存中,并解析相关资源文件,此时插件管理模块通过上述得到的load接口将插件加载的进度发送至H5小程序,以使H5小程序显示插件加载的进度,当插件加载的进度到达100%,即插件资源加载完成。
S40:基于插件对插件加载完成的响应,通过预置沟通接口接收所述插件发送的接口信息。
接口信息为插件对插件加载完成的响应信息,即插件检测到插件资源加载完成后,插件对插件管理模块发送的可操作接口对象。
参照图4,预置沟通接口为插件管理模块与插件之间的虚拟沟通接口,插件管理模块会预先与插件约定接口暴露方式,并根据约定的接口暴露方式生成沟通接口。
具体的,插件加载完成后,小程序运行器中的插件管理模块通过预置的沟通接口接收插件发送的接口信息。
S50:根据接口信息得到H5小程序可使用的对应插件接口,并发送插件接口至H5小程序,以使H5小程序通过插件接口控制插件。
参照图4,插件接口为一种具备预置通信规则的虚拟接口,用于H5小程序与插件进行数据沟通,即H5小程序可以通过插件接口控制插件,从而通过插件实现运用系统原生功能的目的。
具体的,插件管理模块接收到接口信息后,将接收的接口信息的语法类型翻译为JavaScript runtime模块可操作的语法类型,插件管理模块将翻译后的接口信息通过预置沟通通道发送至JavaScript runtime模块,JavaScript runtime模块接收到插件管理模块发送的翻译的接口信息后,将翻译后的接口信息转换为H5小程序可使用的插件接口,并通过load接口将转换后得到的插件接口以异步返回值的形式发送至H5小程序,使得H5小程序通过插件接口控制插件。
S60:获取H5小程序的状态,若H5小程序的状态为关闭状态,则获取预置unload接口,通过预置unload接口发起插件卸载处理。
H5小程序的状态包括关闭状态以及开启状态,状态的获取方式具体可以是:查询内存中是否存在对应的H5小程序运行,若内存中存在对应的H5小程序运行,则H5小程序的状态为开启状态,若内存中不存在对应的H5小程序运行,则H5小程序的状态为关闭状态。
参照图4,预置unload接口为内核模块卸载插件时需调用的接口,unload接口的得到方式为:当接收到H5小程序发送的原生功能请求信息后,内核模块中的JavaScript运行模块将插件管理模块的unload接口函数挂载到H5小程序的代码中,当检测到H5小程序的状态为关闭状态时,调用unload接口函数代码,得到unload接口。
unload接口函数的具体挂载位置可以是H5小程序代码中的global全局变量中,具体的load接口函数可以是global.UnloadPlugin()。
具体的,获取H5小程序的状态,若H5小程序的状态为关闭状态,则调用unload接口函数得到unload接口,H5小程序通过unload接口发送卸载指令至插件管理模块,使插件管理模块控制插件进行卸载,内核模块确认插件从内存中卸载完成后,结束卸载进程。需要注意的是,插件卸载过程不会删除闪存中的插件资源。
参照图5,接收加载指令后,插件资源的下载及加载的判断步骤具体包括:
S100:获取内存的插件运行信息,判断内存中是否存在与H5小程序对应的运行插件程序。
内存的插件运行信息为已加载完成,运行在内存中的插件程序的信息,内存的插件运行信息包括插件程序的运行状态以及插件程序对应的插件信息,
具体的,获取内存的插件运行信息,将上述得到的原生功能请求信息中的插件信息,即H5小程序需要的目标插件对应的插件信息与所有运行插件程序的插件信息进行依次比较,若比较的结果为二者的插件名称与插件版本信息中至少有一个不同,则内存中不存在与H5小程序需要插件对应的运行插件程序,若比较的结果为二者完全相同,则内存中存在与H5小程序需要插件对应的运行插件程序,即此时存在多个H5小程序需要使用同一插件。
S101:若内存中存在与H5小程序对应的运行插件程序,则复制插件对应的插件接口得到复制插件接口,以使H5小程序通过复制插件接口控制插件。
具体的,判断内存中是否存在与H5小程序对应的运行插件程序后,若内存中存在与H5小程序对应的运行插件程序,则在内存中根据预置的数据存放地址查找运行插件程序的插件接口对应的数据,并复制该数据,将复制的插件接口发送至H5小程序,使H5小程序通过复制插件接口控制插件。
S102:若内存中不存在与H5小程序对应的运行插件程序,则查询闪存以获取插件下载列表,根据插件下载列表以及插件信息判断H5小程序对应的插件资源是否完成下载。
插件下载列表为包括所有已下载插件的插件信息的表,已下载插件被存储在闪存中,在闪存中查询插件下载列表所需的时间多于获取内存的插件运行信息所需的时间,因此在本申请实施例中,需首先判断内存中是否存在与H5小程序对应的运行插件程序。
具体的,判断内存中是否存在与H5小程序对应的运行插件程序后,若内存中不存在与H5小程序对应的运行插件程序,则查询闪存以获取插件下载列表,得到闪存中所有已下载插件的插件信息。将上述得到的原生功能请求信息中的插件信息,即H5小程序需要的目标插件对应的插件信息与所有已下载插件的插件信息进行比较,若比较的结果为二者完全相同,则闪存中存在与H5小程序需要插件对应的已下载插件,此时H5小程序对应的插件资源已完成下载;若比较的结果为二者的插件名称与插件版本信息中至少有一个不同,则闪存中不存在与H5小程序需要插件对应的已下载插件,此时H5小程序对应的插件资源未完成下载。
S103:若H5小程序对应的插件资源已完成下载,则加载插件资源以使H5小程序控制插件。
具体的,判断H5小程序对应的插件资源是否完成下载后,若H5小程序对应的插件资源已完成下载,则直接加载插件资源以使H5小程序控制插件,加载插件资源以使H5小程序控制插件的具体步骤参照S30-S50。
S104:若H5小程序对应的插件资源未完成下载,则将插件信息发送至服务端。
具体的,判断H5小程序对应的插件资源是否完成下载后,若H5小程序对应的插件资源未完成下载,即二者的插件名称与插件版本信息中至少有一个不同,则判断H5小程序所需的插件是否为迭代插件,若二者的插件名称相同,插件版本信息不同,则H5小程序所需的插件为迭代插件,若二者的插件名称不同,插件版本信息相同或插件名称以及插件版本信息均不相同,则H5小程序所需的插件不为迭代插件。
若H5小程序所需的插件为迭代插件,则将迭代插件的插件信息发送至服务端以下载迭代插件,并在下载完成后,删除闪存中存储的原有插件,原有插件为与迭代插件的插件名称相同,插件版本信息不同的插件。
若H5小程序所需的插件为不为迭代插件,则将非迭代插件的插件信息发送至服务端。
S105:接收服务端发送的插件下载地址,根据下载地址从服务端下载插件资源至闪存中,并对插件资源进行校验。
服务端是为客户端服务的数据存储库,服务端具有数据库,在本实施例中,服务端的数据库中存储了所有插件的下载地址,当客户端发送插件的插件信息,服务端可以根据客户端发送的插件信息在数据库中查找对应插件的下载地址,下载地址为各插件运营商存储插件的网站地址,并将对应的下载地址发送至客户端的小程序运行器。
具体的,小程序运行器中的插件管理模块接收到服务端发送的下载地址后,解析下载地址并从下载地址对应的存储云端下载插件资源,下载完成后对下载的插件资源进行校验,判断下载的插件资源是否为正确的插件资源,若是正确的插件资源,则加载插件资源以使H5小程序控制插件,加载插件资源以使H5小程序控制插件的具体步骤参照S30-S50。
本申请实施例一种H5小程序运行器的插件管理方法的实施原理为:接收H5小程序发送的原生功能请求信息,得到load接口,接收加载指令后判断插件资源是否加载,若未加载,则再次判断插件资源是否下载,若未下载,则进行下载,并在下载完成后,按照系统原生动态加载的方式将预置插件资源中的插件程序加载进内存,接收插件发送的接口信息,并翻译接口信息,将翻译的接口信息转换为H5小程序可使用的对应的插件接口,以使H5小程序通过插件接口控制插件。采用本申请,将系统原生功能对接处理从小程序运行器中的内核模块中剥离出来,通过本申请中具备系统原生对接能力的插件进行对接,使H5小程序可以使用系统的原生功能的同时,减小了对内核模块造成的不利影响。
参照图6,一种H5小程序运行器的插件管理装置包括:挂载模块1、插件加载模块2、响应模块3以及接口模块4。
挂载模块1,用于接收H5小程序发送的原生功能请求信息,并通过预置挂载规则将插件管理模块的接口函数挂载至H5小程序的代码中以得到load接口;
插件加载模块2,用于通过load接口接收加载指令,并按照系统原生动态加载的方式将预置插件资源中的插件程序加载进内存;
响应模块3,用于基于插件对插件加载完成的响应,通过预置沟通接口接收插件发送的接口信息;
接口模块4,用于根据接口信息得到H5小程序可使用的对应插件接口,并发送插件接口至H5小程序,以使H5小程序通过插件接口控制插件。
需要说明的是:上述实施例提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置和方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
请参照图7,为本申请实施例提供了一种电子设备的结构示意图。如图7所示,所述电子设备1000可以包括:至少一个处理器1001,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。
其中,通信总线1002用于实现这些组件之间的连接通信。
其中,用户接口1003可以包括显示屏(Display)、摄像头(Camera),可选用户接口1003还可以包括标准的有线接口、无线接口。
其中,网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。
其中,处理器1001可以包括一个或者多个处理核心。处理器1001利用各种接口和线路连接整个服务器内的各个部分,通过运行或执行存储在存储器1005内的指令、程序、代码集或指令集,以及调用存储在存储器1005内的数据,执行服务器的各种功能和处理数据。可选的,处理器1001可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(ProgrammableLogic Array,PLA)中的至少一种硬件形式来实现。处理器1001可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器1001中,单独通过一块芯片进行实现。
其中,存储器1005可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选的,该存储器1005包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器1005可用于存储指令、程序、代码、代码集或指令集。存储器1005可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及的数据等。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图7所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及一种H5小程序运行器的插件管理方法的应用程序。
在图7所示的电子设备1000中,用户接口1003主要用于为用户提供输入的接口,获取用户输入的数据;而处理器1001可以用于调用存储器1005中存储一种H5小程序运行器的插件管理方法的应用程序,当由一个或多个处理器执行时,使得电子设备执行如上述实施例中一个或多个所述的方法。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必需的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所披露的装置,可通过其他的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些服务接口,装置或单元的间接耦合或通信连接,可以是电性或其他的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述者,仅为本公开的示例性实施例,不能以此限定本公开的范围。即但凡依本公开教导所作的等效变化与修饰,皆仍属本公开涵盖的范围内。本领域技术人员在考虑说明书及实践真理的公开后,将容易想到本公开的其他实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未记载的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的范围和精神由权利要求限定。

Claims (8)

1.一种H5小程序运行器的插件管理方法,其特征在于,应用于H5小程序运行器,所述方法包括:
接收H5小程序发送的原生功能请求信息,并通过预置挂载规则将插件管理模块的接口函数挂载至所述H5小程序的代码中以得到load接口;
通过所述load接口接收加载指令,获取内存的插件运行信息以及所述H5小程序对应的插件信息,判断所述内存中是否存在与所述H5小程序对应的运行插件程序;
若所述内存中存在与所述H5小程序对应的运行插件程序,则复制插件对应的插件接口得到复制插件接口,以使所述H5小程序通过所述复制插件接口控制所述插件;
若所述内存中不存在与所述H5小程序对应的运行插件程序,则查询闪存以获取插件下载列表;根据所述插件下载列表以及所述插件信息判断所述H5小程序对应的插件资源是否完成下载;若所述H5小程序对应的插件资源未完成下载,则将所述插件信息发送至服务端,并从所述服务端下载所述插件资源;当所述插件资源下载完成后,加载所述插件资源,并获取所述插件接口以使所述H5小程序控制所述插件;
并按照系统原生动态加载的方式将预置插件资源中的插件程序加载进所述内存;
基于插件对插件加载完成的响应,通过预置沟通接口接收所述插件发送的接口信息;
根据所述接口信息得到所述H5小程序可使用的对应插件接口,并发送所述插件接口至所述H5小程序,以使所述H5小程序通过所述插件接口控制所述插件。
2.根据权利要求1所述的一种H5小程序运行器的插件管理方法,其特征在于,所述通过预置挂载规则将插件管理模块的接口函数挂载至所述H5小程序的代码中以得到load接口,包括:
通过内核模块中的JavaScript runtime模块,将插件管理模块的load接口函数挂载到所述H5小程序的代码的global全局变量中,得到所述load接口。
3.根据权利要求2所述的一种H5小程序运行器的插件管理方法,其特征在于,所述根据所述接口信息得到所述H5小程序可使用的对应插件接口,包括:
将所述接口信息的语法类型翻译为与所述JavaScript runtime模块的语法类型一致的语法类型;
通过所述JavaScript runtime模块将翻译后的接口信息转换为所述H5小程序可使用的对应插件接口。
4.根据权利要求1所述的一种H5小程序运行器的插件管理方法,其特征在于,所述从所述服务端下载所述插件资源,包括:
接收服务端发送的插件下载地址,根据所述下载地址从服务端下载所述插件资源至闪存中;
对所述插件资源进行校验。
5.根据权利要求1所述的一种H5小程序运行器的插件管理方法,其特征在于,所述根据所述插件下载列表以及所述插件信息判断所述H5小程序对应的插件资源是否完成下载后,还包括:
根据所述插件下载列表以及所述插件信息判断所述H5小程序需要的插件是否为迭代插件,所述迭代插件为与原有插件的插件名称相同,插件版本信息不同的插件;
若所述H5小程序需要的插件为迭代插件,则下载所述迭代插件;
删除所述原有插件。
6.根据权利要求1所述的一种H5小程序运行器的插件管理方法,其特征在于,所述以使所述H5小程序通过所述插件接口控制插件后,还包括:
获取所述H5小程序的状态,所述状态包括关闭状态以及开启状态;
若所述H5小程序的状态为所述关闭状态,则获取预置unload接口,通过所述预置unload接口发起插件卸载处理,使得所述插件管理模块卸载所述插件。
7.一种H5小程序运行器的插件管理装置,其特征在于,所述装置包括:
挂载模块(1),用于接收H5小程序发送的原生功能请求信息,并通过预置挂载规则将插件管理模块的接口函数挂载至所述H5小程序的代码中以得到load接口;
插件加载模块(2),用于通过所述load接口接收加载指令,获取内存的插件运行信息以及所述H5小程序对应的插件信息,判断所述内存中是否存在与所述H5小程序对应的运行插件程序;若所述内存中存在与所述H5小程序对应的运行插件程序,则复制插件对应的插件接口得到复制插件接口,以使所述H5小程序通过所述复制插件接口控制所述插件;
若所述内存中不存在与所述H5小程序对应的运行插件程序,则查询闪存以获取插件下载列表;根据所述插件下载列表以及所述插件信息判断所述H5小程序对应的插件资源是否完成下载;若所述H5小程序对应的插件资源未完成下载,则将所述插件信息发送至服务端,并从所述服务端下载所述插件资源;当所述插件资源下载完成后,加载所述插件资源,并获取所述插件接口以使所述H5小程序控制所述插件;并按照系统原生动态加载的方式将预置插件资源中的插件程序加载进所述内存;
响应模块(3),用于基于插件对插件加载完成的响应,通过预置沟通接口接收所述插件发送的接口信息;
接口模块(4),用于根据所述接口信息得到所述H5小程序可使用的对应插件接口,并发送所述插件接口至所述H5小程序,以使所述H5小程序通过所述插件接口控制所述插件。
8.一种电子设备,其特征在于,包括处理器、存储器、用户接口及网络接口,所述存储器用于存储指令,所述用户接口和网络接口用于给其他设备通信,所述处理器用于执行所述存储器中存储的指令,以使所述电子设备执行如权利要求1-6任意一项所述的方法。
CN202310325761.3A 2023-03-29 2023-03-29 一种h5小程序运行器的插件管理方法、装置及电子设备 Active CN116382796B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310325761.3A CN116382796B (zh) 2023-03-29 2023-03-29 一种h5小程序运行器的插件管理方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310325761.3A CN116382796B (zh) 2023-03-29 2023-03-29 一种h5小程序运行器的插件管理方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN116382796A CN116382796A (zh) 2023-07-04
CN116382796B true CN116382796B (zh) 2024-02-13

Family

ID=86980089

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310325761.3A Active CN116382796B (zh) 2023-03-29 2023-03-29 一种h5小程序运行器的插件管理方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN116382796B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105893094A (zh) * 2016-03-31 2016-08-24 百度在线网络技术(北京)有限公司 应用程序插件化的实现方法和装置
CN113778554A (zh) * 2021-09-01 2021-12-10 粒子文化科技集团(杭州)股份有限公司 插件处理方法、电子装置和存储介质
CN114461954A (zh) * 2021-08-30 2022-05-10 稿定(厦门)科技有限公司 动态插件运行方法、装置、系统及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105893094A (zh) * 2016-03-31 2016-08-24 百度在线网络技术(北京)有限公司 应用程序插件化的实现方法和装置
CN114461954A (zh) * 2021-08-30 2022-05-10 稿定(厦门)科技有限公司 动态插件运行方法、装置、系统及存储介质
CN113778554A (zh) * 2021-09-01 2021-12-10 粒子文化科技集团(杭州)股份有限公司 插件处理方法、电子装置和存储介质

Also Published As

Publication number Publication date
CN116382796A (zh) 2023-07-04

Similar Documents

Publication Publication Date Title
CN109918166B (zh) 小程序处理方法、装置及电子设备
CN107832100B (zh) 一种apk插件的加载方法及其终端
CN108121594B (zh) 一种进程管理方法及装置
CN110851204B (zh) 应用启动的方法及装置、应用打包的方法及装置
CN111666497A (zh) 应用程序的加载方法、装置、电子设备及可读存储介质
CN110543327A (zh) 业务组件复用方法、装置、计算机设备及存储介质
CN114756306A (zh) 服务调用方法、装置、设备及存储介质
CN109408256B (zh) 应用调用方法和装置
CN109032693B (zh) 一种加载展示信息方法、装置、电子设备及可读存储介质
CN113342419B (zh) 一种推送系统加载方法、装置、电子设备及存储介质
CN109683992B (zh) 用于管理对象的方法和装置
CN114168937A (zh) 一种资源访问方法、计算设备及可读存储介质
CN117235017A (zh) 数据升级方法、装置、设备及存储介质
CN117270873A (zh) 一种基于Android应用的实时编译方法、装置、设备及介质
CN116382796B (zh) 一种h5小程序运行器的插件管理方法、装置及电子设备
CN110311935B (zh) 一种分享方法、分享部署系统和客户端
CN107783837B (zh) 一种进行存储扩展的方法、装置及电子设备
CN113656009A (zh) 一种宏处理方法、装置、电子设备及存储介质
CN113515299A (zh) 软件开发工具包sdk热升级方法、装置、设备及存储介质
CN114090069A (zh) 应用程序安装包文件处理方法及电子设备
CN109840156B (zh) 一种数据缓存方法及其设备、存储介质、终端
CN112860300A (zh) 分布式sdk热更新处理方法、应用服务器集群
CN113296781A (zh) 应用程序安装包文件编译构建方法、装置及电子设备
CN112612531A (zh) 应用程序启动方法、装置、电子设备及存储介质
CN111142972A (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