CN111552524B - 一种插件加载方法、装置及计算机可读存储介质 - Google Patents

一种插件加载方法、装置及计算机可读存储介质 Download PDF

Info

Publication number
CN111552524B
CN111552524B CN202010371142.4A CN202010371142A CN111552524B CN 111552524 B CN111552524 B CN 111552524B CN 202010371142 A CN202010371142 A CN 202010371142A CN 111552524 B CN111552524 B CN 111552524B
Authority
CN
China
Prior art keywords
plug
event
compiling
target
loading
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
CN202010371142.4A
Other languages
English (en)
Other versions
CN111552524A (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.)
Oppo Chongqing Intelligent Technology Co Ltd
Original Assignee
Oppo Chongqing Intelligent 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 Oppo Chongqing Intelligent Technology Co Ltd filed Critical Oppo Chongqing Intelligent Technology Co Ltd
Priority to CN202010371142.4A priority Critical patent/CN111552524B/zh
Publication of CN111552524A publication Critical patent/CN111552524A/zh
Application granted granted Critical
Publication of CN111552524B publication Critical patent/CN111552524B/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
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供了一种插件加载方法、装置及计算机可读存储介质,该插件加载方法包括:在检测到目标应用的私有数据目录中存在待安装插件时,生成对应于待安装插件的目标插件编译事件;调用目标插件编译事件对待安装插件进行编译;对编译完成所得到的已优化插件进行加载。通过本申请方案的实施,在应用有插件需要更新时,提前对插件进行优化后再加载,加快了插件的加载速度,提升了插件运行效率,并增加了应用流畅性。

Description

一种插件加载方法、装置及计算机可读存储介质
技术领域
本申请涉及电子技术领域,尤其涉及一种插件加载方法、装置及计算机可读存储介质。
背景技术
随着终端技术的不断发展,终端应用所承载的业务和功能种类也不断增长,导致应用越来越臃肿、应用开发难度越来越大,给应用开发人员带来了较大的挑战。
插件是一种遵循一定规范的应用程序接口编写出来的程序,采用插件化开发方法,可以解决应用程序体积大、功能复杂、无法部分更新应用的功能等缺点,越来越受到开发人员的欢迎。然而,目前终端系统对应用插件化开发的支持较不完善,在应用开发中通常系统在插件加载后,采用解释执行的方式运行代码,插件运行效率较低,应用流畅性较差。
发明内容
本申请实施例提供了一种插件加载方法、装置及计算机可读存储介质,至少能够解决相关技术中在插件加载后采用解释执行的方式运行代码,所导致的插件运行效率较低、应用流畅性较差的问题。
本申请实施例第一方面提供了一种插件加载方法,包括:
在检测到目标应用的私有数据目录中存在待安装插件时,生成对应于所述待安装插件的目标插件编译事件;
调用所述目标插件编译事件对所述待安装插件进行编译;
对编译完成所得到的已优化插件进行加载。
本申请实施例第二方面提供了一种插件加载装置,包括:
生成模块,用于在检测到目标应用的私有数据目录中存在待安装插件时,生成对应于所述待安装插件的目标插件编译事件;
编译模块,用于调用所述目标插件编译事件对所述待安装插件进行编译;
加载模块,用于对编译完成所得到的已优化插件进行加载。
本申请实施例第三方面提供了一种电子装置,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,实现上述本申请实施例第一方面提供的插件加载方法中的各步骤。
本申请实施例第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时,实现上述本申请实施例第一方面提供的插件加载方法中的各步骤。
由上可见,根据本申请方案所提供的插件加载方法、装置及计算机可读存储介质,在检测到目标应用的私有数据目录中存在待安装插件时,生成对应于待安装插件的目标插件编译事件;调用目标插件编译事件对待安装插件进行编译;对编译完成所得到的已优化插件进行加载。通过本申请方案的实施,在应用有插件需要更新时,提前对插件进行优化后再加载,加快了插件的加载速度,提升了插件运行效率,并增加了应用流畅性。
附图说明
图1为本申请第一实施例提供的插件加载方法的基本流程示意图;
图2为本申请第一实施例提供的一种事件队列维护方法的流程示意图;
图3为本申请第一实施例提供的一种插件编译事件生成方法的流程示意图;
图4为本申请第一实施例提供的一种具体的插件加载方法的流程示意图;
图5为本申请第二实施例提供的插件加载方法的细化流程示意图;
图6为本申请第三实施例提供的一种插件加载装置的程序模块示意图;
图7为本申请第三实施例提供的另一种插件加载装置的程序模块示意图;
图8为本申请第四实施例提供的电子装置的结构示意图。
具体实施方式
为使得本申请的发明目的、特征、优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而非全部实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了解决相关技术中在插件加载后采用解释执行的方式运行代码,所导致的终端资源浪费较大、插件运行效率较低、应用流畅性较差的缺陷,本申请第一实施例提供了一种插件加载方法,如图1为本实施例提供的插件加载方法的基本流程图,该插件加载方法包括以下的步骤:
步骤101、在检测到目标应用的私有数据目录中存在待安装插件时,生成对应于待安装插件的目标插件编译事件。
具体的,本实施例的插件加载方法可以应用于Android平台或IOS平台。本实施例配置有插件管理器(Plugin Manager),用于响应来自开发人员的终端中客户端应用的请求,以实现客户端应用加载、控制、使用或卸载插件。
在本实施例中,针对系统安装的每一个应用都可以在插件管理器中设置一个插件观察PluginObserver对象,用于检测应用私有数据目录中的文件变化。当插件观察对象检测到有新文件通过网络下载或推送时,通过该文件的文件类型判断该文件是否为插件,若是,则确定有待安装插件,触发生成对应插件编译事件的动作。应当说明的是,在判断网络下载或推送的文件是否为插件时,可以判断该文件格式是否为dex或apk格式,若是,则确定该文件为插件。应当说明的是,dex文件为Android平台的可执行文件,里面包含了插件的所有源码。
进一步地,在实际应用中,在插件观察对象检测到网络下载或推送的文件为插件时,还可以进一步获取该插件的插件属性(例如类型、大小、版本等),然后基于插件属性判断该插件是否满足预设安装条件,若是,则确定为待安装插件。
在本实施例的一些实施方式中,在生成对应于待安装插件的目标插件编译事件之前,还包括:对待安装插件进行合法性校验;在合法性校验通过时,执行生成对应于待安装插件的目标插件编译事件的步骤。
具体的,在本实施例中,插件管理器可以使用预设校验算法(例如MD5算法、CRC算法等)对待安装插件的数据进行运算,然后将计算得到的校验值与插件自身所携带的校验值进行比对,在两者比对通过时,确定待安装插件验证合法,从而可以保证应用功能更新的安全性。
在本实施例的一些实施方式中,在生成对应于待安装插件的目标插件编译事件之前,还包括:获取对应于待安装插件的待优化方法数量;判断待优化方法数量是否大于预设数量阈值。
在本实施例中,当待优化方法数量大于预设数量阈值时,执行生成对应于待安装插件的目标插件编译事件的步骤。在实际应用中,不同插件在加载时所需优化的方法数量有所不同,方法数量越多,插件的安装时长越长,为了保证运行性能和安装时间的均衡,本实施例针对待优化方法数量较大的待安装插件执行提前优化。
步骤102、调用目标插件编译事件对待安装插件进行编译。
具体的,在本实施例中,当插件观察对象检测到待安装插件时,发送一个插件编译事件至插件管理器触发插件优化动作,以待安装插件为dex文件为例,则插件编译事件为dex2oat事件,ART虚拟机执行dex2oat命令,对dex文件中的字节码进行编译,优化得到机器码。整个dex2oat过程所涉及的步骤如下:读取dex-以类为粒度编译-生成许多中间文件-合并为.oat(odex)文件。
其中,插件编译事件中包括但不限于以下三个参数:文件名、线程数、编译模式。其中,文件名指需要进行编译优化的插件的文件名;线程数指执行编译优化事件的编译器开启的线程数;编译模式指进行此编译优化所选择的编译模式,可选speed-profile模式或speed模式,在实际应用中可默认为speed模式。
在本实施例一些实施方式中,在调用目标插件编译事件对待安装插件进行编译之前,还包括:周期性获取系统运行状态;判断系统运行状态是否满足预设的事件调用条件。
具体的,本实施例在系统运行状态满足事件调用条件时,执行调用目标插件编译事件对待安装插件进行编译的步骤。在本实施例中,插件管理器周期性(例如每间隔15秒)检测系统运行状态,并根据系统运行状况来决定插件优化策略,在系统实时运行状态满足事件调用条件时才执行插件优化,而并非一定在生成插件编译事件即对插件进行优化。
进一步地,在本实施例一些实施方式中,判断系统运行状态是否满足预设的事件调用条件包括但不限于以下几种方式至少之一:
方式一,在系统运行状态为处理器占用率时,判断处理器占用率是否低于预设的占用率阈值。
其中,在低于占用率阈值时,例如有超过50%的CPU处于空闲状态,从而可以保证优化过程中的处理性能。
方式二,在系统运行状态为可用内存量时,判断可用内存量是否大于预设的内存量阈值。
其中,在大于内存量阈值时,确认系统没有处于低内存状态,从而满足对优化后的oat文件的存储。
方式三,在系统运行状态为系统编译操作状态时,判断系统编译操作状态是否为空闲状态。
其中,在系统编译操作状态为空闲状态时,确定系统当前没有向待安装插件之外的其它插件提供编译优化服务,从而可以在最大程度满足对待安装插件进行编译优化时的系统资源供给。
步骤103、对编译完成所得到的已优化插件进行加载。
具体的,本实施例在应用有插件需要更新时,提前对插件进行优化后再加载,加快了插件的加载速度,提升了插件运行效率,并增加了应用流畅性。
在本实施例的一些实施方式中,对编译完成所得到的已优化插件进行加载之后,还包括:获取插件加载状态,其中,插件加载状态包括成功状态和失败状态;在插件加载状态为失败状态时,返回执行调用目标插件编译事件对待安装插件进行编译的步骤。
具体的,在实际应用中,可能由于编译器编译出错而导致最终所加载的插件加载失败的情况,本实施例为了保证应用更新的有效性,在插件加载失败时自动触发重新编译优化插件的动作。
另外,在实际应用中,在插件加载状态为失败状态时,还可以生成插件重新加载请求,根据插件重新加载请求重新下载待安装插件,然后再执行调用目标插件编译事件对待安装插件进行编译的步骤。
具体的,本实施例考虑到插件加载失败可能是由于插件损坏引起,基于此,本实施例重新获取待安装插件并再次执行插件的编译优化并加载,以提高应用更新的有效性。
在本实施例的一些实施方式中,在调用目标插件编译事件对待安装插件进行编译之前,还包括:将目标插件编译事件添加至预设的事件队列。
相对应的,调用目标插件编译事件对待安装插件进行编译包括:按照事件队列中的事件排列顺序,在目标插件编译事件的调用回合调用目标插件编译事件对待安装插件进行编译。
具体的,在本实施例中,插件管理器维护有一个插件编译事件队列,用于接收从插件观察对象发送过来的插件编译事件,从而实现对各插件编译事件的有序优化。在实际应用中,插件管理器判断插件编译事件队列的长度是否为0,若为0则等待,若不为0则取出排序在前的第一个事件准备执行。
如图2所示为本实施例提供的一种事件队列维护方法的流程示意图,在本实施例的一些实施方式中,将目标插件编译事件添加至预设的事件队列具体包括以下步骤:
步骤201、获取对应于目标插件编译事件的事件调用优先级;
步骤202、根据事件调用优先级确定对应于目标插件编译事件的队列位置;
步骤203、按照队列位置将目标插件编译事件添加至预设的事件队列。
具体的,在实际应用中,插件管理器的编译器可能同时具备多个优化任务,而执行多个优化任务的轻重缓急程度有所不同,本实施例基于插件编译事件的事件属性或应用的应用属性来对应确定事件调用优先级,然后根据目标插件编译事件的事件调用优先级,以及已添加至事件队列中的插件编译事件的调用优先级,确定目标插件编译事件在事件队列中的排列位置,然后基于该排列位置将目标插件编译事件添加至事件队列,可有效保证插件优化的合理性和灵活性。
如图3所示为本实施例提供的一种插件编译事件生成方法的流程示意图,在本实施例的一些实施方式中,生成对应于待安装插件的目标插件编译事件具体包括以下步骤:
步骤301、获取当前的系统运行状态;
步骤302、根据系统运行状态确定事件参数指标;
步骤303、基于事件参数指标生成对应于待安装插件的目标插件编译事件。
具体的,本实施例的事件参数指标包括编译开启线程数、编译模式中至少一种。在本实施例中,编译器根据插件编译事件进行插件优化,为了保证优化效率和有效性,本实施例在生成插件编译事件时,对实时系统运行状态进行考虑,然后根据系统资源情况来对应生成待安装插件的插件编译事件。
如图4所示为本实施例提供的一种具体的插件加载方法的流程示意图,在本实施例的一些实施方式中,对编译完成所得到的已优化插件进行加载具体包括以下步骤:
步骤401、获取目标应用相对于已优化插件的使用权限;
步骤402、基于使用权限确定对应的加载策略;
步骤403、按照所确定的加载策略对编译完成所得到的已优化插件进行加载。
具体的,本实施例考虑到应用在不同更新场景下所需要安装的插件有所不同,而针对不同插件设置不同的加载方式,可以保证插件更新的灵活性和有效性。在本实施例中,可以确定当前应用对于插件的使用权限,然后根据使用权限来对应配置加载策略来对该插件进行加载。
基于上述本申请实施例的技术方案,在检测到目标应用的私有数据目录中存在待安装插件时,生成对应于待安装插件的目标插件编译事件;调用目标插件编译事件对待安装插件进行编译;对编译完成所得到的已优化插件进行加载。通过本申请方案的实施,在应用有插件需要更新时,提前对插件进行优化后再加载,加快了插件的加载速度,提升了插件运行效率,并增加了应用流畅性。
图5中的方法为本申请第二实施例提供的一种细化的插件加载方法,该插件加载方法包括:
步骤501、在检测到目标应用的私有数据目录中存在待安装插件时,获取当前的系统运行状态。
本实施例配置有插件管理器,用于响应来自开发人员的终端中客户端应用的请求,以实现客户端应用加载卸载插件。
步骤502、基于系统运行状态生成对应于待安装插件的目标插件编译事件。
在本实施例中,插件管理器内的编译器根据插件编译事件进行插件优化。为了保证优化效率和有效性,本实施例在生成插件编译事件时,对实时系统运行状态进行考虑,然后根据系统资源情况来对应生成待安装插件的插件编译事件。
步骤503、根据目标插件编译事件的事件调用优先级确定对应的队列位置,并按照队列位置将目标插件编译事件添加至预设的事件队列。
本实施例根据目标插件编译事件的事件调用优先级,以及已添加至事件队列中的插件编译事件的调用优先级,确定目标插件编译事件在事件队列中的排列位置,然后基于该排列位置将目标插件编译事件添加至事件队列,可有效保证插件优化的合理性和灵活性。
步骤504、按照事件队列中的事件排列顺序,在目标插件编译事件的调用回合调用目标插件编译事件对待安装插件进行编译。
在实际应用中,插件管理器判断插件编译事件队列的长度是否为0,若为0则等待,若不为0则取出排序在前的第一个事件准备执行。
步骤505、获取目标应用相对于编译完成所得到的已优化插件的使用权限。
步骤506、基于使用权限确定对应于已优化插件的加载策略。
步骤507、按照所确定的加载策略对已优化插件进行加载。
本实施例考虑到应用在不同更新场景下所需要安装的插件有所不同,而针对不同插件设置不同的加载方式,可以保证插件更新的灵活性和有效性。在本实施例中,可以确定当前应用对于插件的使用权限,然后根据使用权限来对应配置加载策略来对该插件进行加载。
应当理解的是,本实施例中各步骤的序号的大小并不意味着步骤执行顺序的先后,各步骤的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成唯一限定。
本申请实施例公开了一种插件加载方法,在检测到目标应用的私有数据目录中存在待安装插件时,基于系统运行状态生成对应于待安装插件的目标插件编译事件;按照目标编译事件的事件调用优先级,将目标编译事件添加至事件队列中的对应位置,然后在目标插件编译事件的调用回合调用目标插件编译事件对待安装插件进行编译;基于对应于编译完成所得到的已优化插件的使用权限确定对应的加载策略,按照所确定的加载策略对已优化插件进行加载。通过本申请方案的实施,在应用有插件需要更新时,提前对插件进行优化后再加载,加快了插件的加载速度,提升了插件运行效率,并增加了应用流畅性。
图6为本申请第三实施例提供的一种插件加载装置。该插件加载装置可用于实现前述实施例中的插件加载方法。如图6所示,该插件加载装置主要包括:
生成模块601,用于在检测到目标应用的私有数据目录中存在待安装插件时,生成对应于待安装插件的目标插件编译事件;
编译模块602,用于调用目标插件编译事件对待安装插件进行编译;
加载模块603,用于对编译完成所得到的已优化插件进行加载。
如图7所示为本实施例提供的另一种插件加载装置,进一步地,在本实施例一些实施方式中,插件加载装置还包括:添加模块604,用于在调用目标插件编译事件对待安装插件进行编译之前,将目标插件编译事件添加至预设的事件队列。相对应的,编译模块602具体用于:按照事件队列中的事件排列顺序,在目标插件编译事件的调用回合调用目标插件编译事件对待安装插件进行编译。
在本实施例一些实施方式中,添加模块604具体用于:获取对应于目标插件编译事件的事件调用优先级;根据事件调用优先级确定对应于目标插件编译事件的队列位置;按照队列位置将目标插件编译事件添加至预设的事件队列。
请再次参阅图7,进一步地,在本实施例的一些实施方式中,插件加载装置还包括:判断模块605,用于在调用目标插件编译事件对待安装插件进行编译之前,周期性获取系统运行状态;判断系统运行状态是否满足预设的事件调用条件。相对应的,在满足事件调用条件时,编译模块602执行调用目标插件编译事件对待安装插件进行编译的功能。
进一步地,在本实施例的一些实施方式中,在系统运行状态为处理器占用率时,判断模块605具体用于:判断处理器占用率是否低于预设的占用率阈值;其中,在低于占用率阈值时,满足事件调用条件。在系统运行状态为可用内存量时,判断模块605具体用于:判断可用内存量是否大于预设的内存量阈值;其中,在大于内存量阈值时,满足事件调用条件。
在本实施例的一些实施方式中,生成模块601具体用于:获取当前的系统运行状态;根据系统运行状态确定事件参数指标,其中,事件参数指标包括编译开启线程数、编译模式中至少一种;基于事件参数指标生成对应于待安装插件的目标插件编译事件。
请再次参阅图7,进一步地,在本实施例的一些实施方式中,插件加载装置还包括:校验模块606,用于在生成对应于待安装插件的目标插件编译事件之前,对待安装插件进行合法性校验。相对应的,在合法性校验通过时,生成模块601执行生成对应于待安装插件的目标插件编译事件的功能。
应当说明的是,第一、二实施例中的插件加载方法均可基于本实施例提供的插件加载装置实现,所属领域的普通技术人员可以清楚的了解到,为描述的方便和简洁,本实施例中所描述的插件加载装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
根据本实施例所提供的插件加载装置,在检测到目标应用的私有数据目录中存在待安装插件时,生成对应于待安装插件的目标插件编译事件;调用目标插件编译事件对待安装插件进行编译;对编译完成所得到的已优化插件进行加载。通过本申请方案的实施,在应用有插件需要更新时,提前对插件进行优化后再加载,加快了插件的加载速度,提升了插件运行效率,并增加了应用流畅性。
请参阅图8,图8为本申请第四实施例提供的一种电子装置。该电子装置可用于实现前述实施例中的插件加载方法。如图8所示,该电子装置主要包括:
存储器801、处理器802、总线803及存储在存储器801上并可在处理器802上运行的计算机程序,存储器801和处理器802通过总线803连接。处理器802执行该计算机程序时,实现前述实施例中的插件加载方法。其中,处理器的数量可以是一个或多个。
存储器801可以是高速随机存取记忆体(RAM,Random Access Memory)存储器,也可为非不稳定的存储器(non-volatile memory),例如磁盘存储器。存储器801用于存储可执行程序代码,处理器802与存储器801耦合。
进一步的,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是设置于上述各实施例中的电子装置中,该计算机可读存储介质可以是前述图8所示实施例中的存储器。
该计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现前述实施例中的插件加载方法。进一步的,该计算机可存储介质还可以是U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个可读存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的可读存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上为对本申请所提供的插件加载方法、装置及计算机可读存储介质的描述,对于本领域的技术人员,依据本申请实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种插件加载方法,其特征在于,包括:
在检测到目标应用的私有数据目录中存在待安装插件时,获取当前的系统运行状态,根据所述系统运行状态确定事件参数指标,其中,所述事件参数指标包括编译开启线程数、编译模式中至少一种,基于所述事件参数指标生成对应于所述待安装插件的目标插件编译事件;
将所述目标插件编译事件添加至预设的事件队列;按照所述事件队列中的事件排列顺序,在所述目标插件编译事件的调用回合调用所述目标插件编译事件对所述待安装插件进行编译;
对编译完成所得到的已优化插件进行加载。
2.根据权利要求1所述的插件加载方法,其特征在于,所述在检测到目标应用的私有数据目录中存在待安装插件时包括:
针对系统安装的每一个应用,在插件管理器中设置一个插件观察对象;所述插件观察对象用于检测应用私有数据目录中的文件变化;
当所述插件观察对象检测到有新文件通过网络下载或推送时,通过所述文件的文件类型判断所述文件是否为插件,若是,则确定有待安装插件。
3.根据权利要求1所述的插件加载方法,其特征在于,所述将所述目标插件编译事件添加至预设的事件队列包括:
获取对应于所述目标插件编译事件的事件调用优先级;
根据所述事件调用优先级确定对应于所述目标插件编译事件的队列位置;
按照所述队列位置将所述目标插件编译事件添加至预设的事件队列。
4.根据权利要求1所述的插件加载方法,其特征在于,所述按照所述事件队列中的事件排列顺序,在所述目标插件编译事件的调用回合调用所述目标插件编译事件对所述待安装插件进行编译之前,还包括:
周期性获取系统运行状态;
判断所述系统运行状态是否满足预设的事件调用条件;
在满足所述事件调用条件时,执行所述调用所述目标插件编译事件对所述待安装插件进行编译的步骤。
5.根据权利要求4所述的插件加载方法,其特征在于,在所述系统运行状态为处理器占用率时,所述判断所述系统运行状态是否满足预设的事件调用条件包括:
判断所述处理器占用率是否低于预设的占用率阈值;其中,在低于所述占用率阈值时,满足所述事件调用条件;
或,在所述系统运行状态为可用内存量时,所述判断所述系统运行状态是否满足预设的事件调用条件包括:
判断所述可用内存量是否大于预设的内存量阈值;其中,在大于所述内存量阈值时,满足所述事件调用条件。
6.根据权利要求1所述的插件加载方法,其特征在于,所述对编译完成所得到的已优化插件进行加载包括:
获取所述目标应用相对于所述已优化插件的使用权限;
基于所述使用权限确定对应的加载策略;
按照所确定的所述加载策略对编译完成所得到的已优化插件进行加载。
7.根据权利要求1至6中任意一项所述的插件加载方法,其特征在于,所述生成对应于所述待安装插件的目标插件编译事件之前,还包括:
对所述待安装插件进行合法性校验;
在所述合法性校验通过时,执行所述生成对应于所述待安装插件的目标插件编译事件的步骤。
8.一种插件加载装置,其特征在于,包括:
生成模块,用于在检测到目标应用的私有数据目录中存在待安装插件时,获取当前的系统运行状态,根据所述系统运行状态确定事件参数指标,其中,所述事件参数指标包括编译开启线程数、编译模式中至少一种,基于所述事件参数指标生成对应于所述待安装插件的目标插件编译事件;
编译模块,用于将所述目标插件编译事件添加至预设的事件队列;按照所述事件队列中的事件排列顺序,在所述目标插件编译事件的调用回合调用所述目标插件编译事件对所述待安装插件进行编译;
加载模块,用于对编译完成所得到的已优化插件进行加载。
9.一种电子装置,其特征在于,包括:存储器、处理器及总线;
所述总线用于实现所述存储器、处理器之间的连接通信;
所述处理器用于执行存储在所述存储器上的计算机程序;
所述处理器执行所述计算机程序时,实现权利要求1至7中任意一项所述方法中的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现权利要求1至7中的任意一项所述方法中的步骤。
CN202010371142.4A 2020-05-06 2020-05-06 一种插件加载方法、装置及计算机可读存储介质 Active CN111552524B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010371142.4A CN111552524B (zh) 2020-05-06 2020-05-06 一种插件加载方法、装置及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010371142.4A CN111552524B (zh) 2020-05-06 2020-05-06 一种插件加载方法、装置及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN111552524A CN111552524A (zh) 2020-08-18
CN111552524B true CN111552524B (zh) 2023-10-13

Family

ID=72006035

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010371142.4A Active CN111552524B (zh) 2020-05-06 2020-05-06 一种插件加载方法、装置及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN111552524B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113419735B (zh) * 2021-05-31 2022-04-19 荣耀终端有限公司 插件优化方法及装置
CN113849320A (zh) * 2021-08-20 2021-12-28 阿里巴巴新加坡控股有限公司 开发方法、控制方法及计算设备
CN118092920A (zh) * 2022-11-25 2024-05-28 蔚来移动科技有限公司 一种插件安装的优化方法及控制装置

Citations (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103646656A (zh) * 2013-11-29 2014-03-19 腾讯科技(成都)有限公司 音效处理方法、装置、插件管理器及音效插件
CN103761136A (zh) * 2014-02-25 2014-04-30 上海斐讯数据通信技术有限公司 一种基于插件的数据模型动态加载的方法
CN104102477A (zh) * 2013-04-08 2014-10-15 腾讯科技(深圳)有限公司 移动终端应用插件化方法及框架平台系统
CN104185249A (zh) * 2014-07-31 2014-12-03 合一网络技术(北京)有限公司 基于安卓系统的局域网设备发现方法及动态链接库
CN104424002A (zh) * 2013-09-10 2015-03-18 中国科学院声学研究所 一种基于插件机制的动态加载组件方法和系统
CN105320503A (zh) * 2014-06-24 2016-02-10 深圳市茁壮网络股份有限公司 中间件插件框架设计系统及方法
CN106506256A (zh) * 2016-09-28 2017-03-15 中国电子科技集团公司第五十四研究所 一种基于平台+插件的设备监控系统及方法
CN106502757A (zh) * 2016-12-27 2017-03-15 北京恒华伟业科技股份有限公司 一种插件管理方法及装置
CN106528113A (zh) * 2016-10-25 2017-03-22 北京小米移动软件有限公司 文件编译方法及装置
CN107562489A (zh) * 2017-08-22 2018-01-09 上海斐讯数据通信技术有限公司 一种基于网页管理模块管理插件的方法及系统
CN108132844A (zh) * 2016-12-01 2018-06-08 腾讯科技(深圳)有限公司 插件下载方法及装置
CN108415737A (zh) * 2018-02-07 2018-08-17 北京奇虎科技有限公司 一种在虚拟机中加载插件的方法及电子终端
CN108418717A (zh) * 2018-03-02 2018-08-17 平安科技(深圳)有限公司 安卓应用打包上传方法、装置、计算机设备及存储介质
CN108460254A (zh) * 2018-03-13 2018-08-28 北京顶象技术有限公司 固件保护方法及装置
CN108510146A (zh) * 2017-12-28 2018-09-07 国家安全生产监督管理总局通信信息中心 煤矿安全生产风险预警方法和系统
CN108563472A (zh) * 2018-04-03 2018-09-21 北京奇虎科技有限公司 基于多开应用的服务插件加载方法及装置
CN108595221A (zh) * 2018-04-26 2018-09-28 Oppo广东移动通信有限公司 PaaS平台的插件加载方法、装置、服务器及存储介质
CN108628727A (zh) * 2018-04-19 2018-10-09 山东省计算中心(国家超级计算济南中心) 一种基于模式运行时特征的模式作业运行状态分析方法
CN108874399A (zh) * 2017-05-11 2018-11-23 龙芯中科技术有限公司 安装插件的方法、装置及终端
CN108966018A (zh) * 2017-12-29 2018-12-07 北京视联动力国际信息技术有限公司 一种基于视联网的视频播放方法及装置
CN108989293A (zh) * 2018-06-27 2018-12-11 武汉虹信技术服务有限责任公司 一种智能建筑管理平台适配系统及适配方法
CN109189663A (zh) * 2018-07-12 2019-01-11 武汉精测电子集团股份有限公司 一种插件调试方法、测试方法及微内核架构系统
CN109388416A (zh) * 2018-09-29 2019-02-26 智器云南京信息科技有限公司 一种应用软件的插件化实现方法及系统
CN109462656A (zh) * 2018-12-03 2019-03-12 深圳智慧园区信息技术有限公司 一种智能管控系统
CN109491678A (zh) * 2018-11-16 2019-03-19 重庆瑞盾科技发展有限公司 一种通信监控终端数据采集系统及采集方法
CN109542445A (zh) * 2017-08-01 2019-03-29 北京京东尚科信息技术有限公司 一种Android插件化开发的方法和装置
CN109561085A (zh) * 2018-11-26 2019-04-02 平安科技(深圳)有限公司 一种基于设备识别码的身份验证方法、服务器及介质
CN109558725A (zh) * 2018-12-05 2019-04-02 南京大学 一种基于插桩的针对Android系统动态加载情况的隐私保护方法
CN109582518A (zh) * 2018-12-06 2019-04-05 广东浪潮大数据研究有限公司 一种用于bios调试模式的控制方法、装置及设备
CN109614167A (zh) * 2018-12-07 2019-04-12 杭州数澜科技有限公司 一种管理插件的方法和系统
CN109660526A (zh) * 2018-12-05 2019-04-19 国网江西省电力有限公司信息通信分公司 一种应用于信息安全领域的大数据分析方法
CN109725952A (zh) * 2019-01-07 2019-05-07 深圳市网心科技有限公司 一种应用程序插件化的方法、系统以及相关装置
CN109977670A (zh) * 2019-03-12 2019-07-05 福建天晴数码有限公司 基于插件加载的安卓应用安全监测方法、存储介质
CN110245003A (zh) * 2019-06-06 2019-09-17 中信银行股份有限公司 一种机器学习单机算法编排系统及方法
CN110275810A (zh) * 2018-03-16 2019-09-24 厦门靠谱云股份有限公司 一种基于插件形式云服务器性能收集管理系统
CN110275923A (zh) * 2019-06-20 2019-09-24 美林数据技术股份有限公司 插件化图形的管理方法及设备
CN110362363A (zh) * 2019-06-10 2019-10-22 北京大学 一种基于运行时模型实现对终端应用控制的方法
CN110457049A (zh) * 2019-06-27 2019-11-15 北京奇艺世纪科技有限公司 实现插件自动化的方法、装置、电子设备及存储介质
CN110472516A (zh) * 2019-07-23 2019-11-19 腾讯科技(深圳)有限公司 一种人物图像识别系统的构建方法、装置、设备及系统
CN110505511A (zh) * 2019-08-20 2019-11-26 海南车智易通信息技术有限公司 一种在网页中播放视频的方法、装置、系统及计算设备
CN110515673A (zh) * 2019-07-24 2019-11-29 百度在线网络技术(北京)有限公司 插件化系统及其方法
CN110554965A (zh) * 2019-09-05 2019-12-10 腾讯科技(深圳)有限公司 自动化模糊测试方法及相关设备、计算机可读存储介质
CN110688175A (zh) * 2019-10-09 2020-01-14 网易(杭州)网络有限公司 文件加载的方法、装置、终端设备和存储介质
CN110750582A (zh) * 2018-07-23 2020-02-04 阿里巴巴集团控股有限公司 数据处理方法、装置和系统
CN110780930A (zh) * 2019-09-23 2020-02-11 广州视源电子科技股份有限公司 启动Android系统的方法、装置、电子设备及存储介质
CN110826031A (zh) * 2019-10-31 2020-02-21 北京东软望海科技有限公司 加密方法、装置、计算机设备及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8941664B2 (en) * 2006-11-22 2015-01-27 Take Two Interactive Software, Inc. System and method for real-time pose-based deformation of character models
US9305057B2 (en) * 2009-12-28 2016-04-05 Oracle International Corporation Extensible indexing framework using data cartridges
US9749447B2 (en) * 2014-06-30 2017-08-29 Mark Spence Distributed Process Framework

Patent Citations (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104102477A (zh) * 2013-04-08 2014-10-15 腾讯科技(深圳)有限公司 移动终端应用插件化方法及框架平台系统
CN104424002A (zh) * 2013-09-10 2015-03-18 中国科学院声学研究所 一种基于插件机制的动态加载组件方法和系统
CN103646656A (zh) * 2013-11-29 2014-03-19 腾讯科技(成都)有限公司 音效处理方法、装置、插件管理器及音效插件
CN103761136A (zh) * 2014-02-25 2014-04-30 上海斐讯数据通信技术有限公司 一种基于插件的数据模型动态加载的方法
CN105320503A (zh) * 2014-06-24 2016-02-10 深圳市茁壮网络股份有限公司 中间件插件框架设计系统及方法
CN104185249A (zh) * 2014-07-31 2014-12-03 合一网络技术(北京)有限公司 基于安卓系统的局域网设备发现方法及动态链接库
CN106506256A (zh) * 2016-09-28 2017-03-15 中国电子科技集团公司第五十四研究所 一种基于平台+插件的设备监控系统及方法
CN106528113A (zh) * 2016-10-25 2017-03-22 北京小米移动软件有限公司 文件编译方法及装置
CN108132844A (zh) * 2016-12-01 2018-06-08 腾讯科技(深圳)有限公司 插件下载方法及装置
CN106502757A (zh) * 2016-12-27 2017-03-15 北京恒华伟业科技股份有限公司 一种插件管理方法及装置
CN108874399A (zh) * 2017-05-11 2018-11-23 龙芯中科技术有限公司 安装插件的方法、装置及终端
CN109542445A (zh) * 2017-08-01 2019-03-29 北京京东尚科信息技术有限公司 一种Android插件化开发的方法和装置
CN107562489A (zh) * 2017-08-22 2018-01-09 上海斐讯数据通信技术有限公司 一种基于网页管理模块管理插件的方法及系统
CN108510146A (zh) * 2017-12-28 2018-09-07 国家安全生产监督管理总局通信信息中心 煤矿安全生产风险预警方法和系统
CN108966018A (zh) * 2017-12-29 2018-12-07 北京视联动力国际信息技术有限公司 一种基于视联网的视频播放方法及装置
CN108415737A (zh) * 2018-02-07 2018-08-17 北京奇虎科技有限公司 一种在虚拟机中加载插件的方法及电子终端
CN108418717A (zh) * 2018-03-02 2018-08-17 平安科技(深圳)有限公司 安卓应用打包上传方法、装置、计算机设备及存储介质
CN108460254A (zh) * 2018-03-13 2018-08-28 北京顶象技术有限公司 固件保护方法及装置
CN110275810A (zh) * 2018-03-16 2019-09-24 厦门靠谱云股份有限公司 一种基于插件形式云服务器性能收集管理系统
CN108563472A (zh) * 2018-04-03 2018-09-21 北京奇虎科技有限公司 基于多开应用的服务插件加载方法及装置
CN108628727A (zh) * 2018-04-19 2018-10-09 山东省计算中心(国家超级计算济南中心) 一种基于模式运行时特征的模式作业运行状态分析方法
CN108595221A (zh) * 2018-04-26 2018-09-28 Oppo广东移动通信有限公司 PaaS平台的插件加载方法、装置、服务器及存储介质
CN108989293A (zh) * 2018-06-27 2018-12-11 武汉虹信技术服务有限责任公司 一种智能建筑管理平台适配系统及适配方法
CN109189663A (zh) * 2018-07-12 2019-01-11 武汉精测电子集团股份有限公司 一种插件调试方法、测试方法及微内核架构系统
CN110750582A (zh) * 2018-07-23 2020-02-04 阿里巴巴集团控股有限公司 数据处理方法、装置和系统
CN109388416A (zh) * 2018-09-29 2019-02-26 智器云南京信息科技有限公司 一种应用软件的插件化实现方法及系统
CN109491678A (zh) * 2018-11-16 2019-03-19 重庆瑞盾科技发展有限公司 一种通信监控终端数据采集系统及采集方法
CN109561085A (zh) * 2018-11-26 2019-04-02 平安科技(深圳)有限公司 一种基于设备识别码的身份验证方法、服务器及介质
CN109462656A (zh) * 2018-12-03 2019-03-12 深圳智慧园区信息技术有限公司 一种智能管控系统
CN109558725A (zh) * 2018-12-05 2019-04-02 南京大学 一种基于插桩的针对Android系统动态加载情况的隐私保护方法
CN109660526A (zh) * 2018-12-05 2019-04-19 国网江西省电力有限公司信息通信分公司 一种应用于信息安全领域的大数据分析方法
CN109582518A (zh) * 2018-12-06 2019-04-05 广东浪潮大数据研究有限公司 一种用于bios调试模式的控制方法、装置及设备
CN109614167A (zh) * 2018-12-07 2019-04-12 杭州数澜科技有限公司 一种管理插件的方法和系统
CN109725952A (zh) * 2019-01-07 2019-05-07 深圳市网心科技有限公司 一种应用程序插件化的方法、系统以及相关装置
CN109977670A (zh) * 2019-03-12 2019-07-05 福建天晴数码有限公司 基于插件加载的安卓应用安全监测方法、存储介质
CN110245003A (zh) * 2019-06-06 2019-09-17 中信银行股份有限公司 一种机器学习单机算法编排系统及方法
CN110362363A (zh) * 2019-06-10 2019-10-22 北京大学 一种基于运行时模型实现对终端应用控制的方法
CN110275923A (zh) * 2019-06-20 2019-09-24 美林数据技术股份有限公司 插件化图形的管理方法及设备
CN110457049A (zh) * 2019-06-27 2019-11-15 北京奇艺世纪科技有限公司 实现插件自动化的方法、装置、电子设备及存储介质
CN110472516A (zh) * 2019-07-23 2019-11-19 腾讯科技(深圳)有限公司 一种人物图像识别系统的构建方法、装置、设备及系统
CN110515673A (zh) * 2019-07-24 2019-11-29 百度在线网络技术(北京)有限公司 插件化系统及其方法
CN110505511A (zh) * 2019-08-20 2019-11-26 海南车智易通信息技术有限公司 一种在网页中播放视频的方法、装置、系统及计算设备
CN110554965A (zh) * 2019-09-05 2019-12-10 腾讯科技(深圳)有限公司 自动化模糊测试方法及相关设备、计算机可读存储介质
CN110780930A (zh) * 2019-09-23 2020-02-11 广州视源电子科技股份有限公司 启动Android系统的方法、装置、电子设备及存储介质
CN110688175A (zh) * 2019-10-09 2020-01-14 网易(杭州)网络有限公司 文件加载的方法、装置、终端设备和存储介质
CN110826031A (zh) * 2019-10-31 2020-02-21 北京东软望海科技有限公司 加密方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN111552524A (zh) 2020-08-18

Similar Documents

Publication Publication Date Title
CN111552524B (zh) 一种插件加载方法、装置及计算机可读存储介质
CN107392619B (zh) 智能合约处理方法及装置
CN107967139B (zh) 游戏的热更新方法及装置
RU2658190C2 (ru) Управление доступом во время выполнения к интерфейсам прикладного программирования
US20080066063A1 (en) System and method for preparing runtime checks
US8799889B2 (en) Application downloading
CN111625289B (zh) 应用程序快速启动方法、装置和电子设备
CN108388793B (zh) 一种基于主动防御的虚拟机逃逸防护方法
US9122842B2 (en) Apparatus and method for enhancing security in heterogeneous computing environment
CN108958785B (zh) 一种应用程序升级方法及装置
CN108563472B (zh) 基于多开应用的服务插件加载方法及装置
CN112363731A (zh) 一种应用自动化部署方法、装置和计算机可读存储介质
CN112882694A (zh) 一种程序编译方法、装置、电子设备及可读存储介质
CN111309303B (zh) 代码生成方法、装置、计算机设备和存储介质
CN108415737B (zh) 一种在虚拟机中加载插件的方法及电子终端
CN112199151B (zh) 一种应用程序的运行方法及装置
CN111090442B (zh) 一种应用更新方法、装置和存储介质
CN112711462A (zh) 一种云平台虚拟cpu热绑定方法、装置及计算机可读存储介质
WO2018037292A1 (en) Non-process identifier based service manager
CN112685063B (zh) 特征库更新方法、装置、网络设备及可读存储介质
US20230032581A1 (en) Method and Apparatus for Processing Virtual Machine Component
CN113282363A (zh) 一种优化混合app的方法及装置
Craun et al. Enabling eBPF on Embedded Systems Through Decoupled Verification
CN111694730B (zh) 一种消除错误引用控件资源的方法及装置
CN115658184B (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