CN110515673B - 插件化系统及其方法 - Google Patents

插件化系统及其方法 Download PDF

Info

Publication number
CN110515673B
CN110515673B CN201910673022.7A CN201910673022A CN110515673B CN 110515673 B CN110515673 B CN 110515673B CN 201910673022 A CN201910673022 A CN 201910673022A CN 110515673 B CN110515673 B CN 110515673B
Authority
CN
China
Prior art keywords
plug
module
application
deployed
function
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
CN201910673022.7A
Other languages
English (en)
Other versions
CN110515673A (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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and 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 Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201910673022.7A priority Critical patent/CN110515673B/zh
Publication of CN110515673A publication Critical patent/CN110515673A/zh
Application granted granted Critical
Publication of CN110515673B publication Critical patent/CN110515673B/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/60Software deployment
    • G06F8/65Updates
    • 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
    • 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

Abstract

本发明提供一种插件化系统及其方法,属于应用程序开发技术领域。所述系统包括:插件化应用和服务系统;该插件化应用包括:插件模块,用于在终端系统内执行已部署的插件且用于执行已部署的插件和终端系统的数据交互;支持模块,用于在终端系统内执行已部署的插件的更新或卸载、用于执行新插件的部署且用于与服务系统进行数据交互;支持模块还用于与插件模块进行关于终端系统性能的日志数据交互,日志数据交互包括日志数据收集、日志数据的可视化展现和日志数据分析等;其中,支持模块具有对插件模块内执行中的已部署的插件进行预设操作的功能。本发明具有高灵活性和高扩展性以及具有低开发成本和低运维成本。

Description

插件化系统及其方法
技术领域
本发明涉及应用程序开发技术领域,具体地涉及一种构建插件化应用的方法、一种构建用于插件化应用的服务系统的方法、一种插件化应用、一种用于插件化应用的服务系统、一种用于插件化应用的设备和一种计算机可读存储介质。
背景技术
目前的插件化系统缺乏有效的多端设备同步扩展能力,会限制产品使用和新内容或新功能推广,存在系统兼容性差的问题;几乎每个应用均有各自的插件开发标准,需要开发者进行针对性学习,并且通常插件和宿主应用使用各自不同的源码,从而增加了开发和运维成本;插件对于宿主的依赖性很强,即宿主应用在运维时,插件也需要中断或进行运维,不能同时支持独立软件和插件的共同运行,不便于同时接入和独立并行开发测试,会延后上线时间;插件框架不能有效同时支持接入大量插件,无法灵活进行扩展和控制;现有系统功能逻辑整体耦合较重,不便进行某个功能模块的调整,进一步造成整体框架难以实现快速实现功能更替和架构升级。
发明内容
本发明的目的是提供插件化系统及其方法,该插件化系统及其方法能够显著优化插件化系统的架构,提供灵活性和扩展性,降低开发和运维的成本。
为了实现上述目的,本发明实施例提供一种构建插件化应用的方法,该方法包括:
S1)获取终端系统中用于插件执行的系统组件,将所述系统组件集成为插件模组;
S2)获取应用组件,并通过所述应用组件和所述插件模组构建插件化应用;
根据不同的终端系统类型,例如开源系统和闭源系统,系统组件的实体形式是不同的,对于开源系统,这里的系统组件可以是代码数据和代码文件,在集成过程,可以存在打包为单一文件、配置文件和编译文件,也可以存在拷贝代码文件或代码数据并更换代码文件或代码数据的当前路径等操作,以让该代码文件或代码数据能置于可链接、可执行和可回调的集成环境内,插件模组可以是已编译的文件(例如.elf文件,可以进行参数透传)或未编译的代码文件(例如.java、.c文件等);而对于闭源系统,系统组件是具有封装的可链接或可执行的文件,在集成过程就可以定义和配置回调函数等,形成调用文件或调用代码数据等,插件模组此时也可以是已编译的文件或部分未编译的代码文件;
具体的,步骤S1)中,
将所述系统组件结合对象代理机制和反射代理机制集成为插件模组。
具体的,步骤S2)中,获取与所述插件模组源码类型匹配的应用组件,例如所述插件模组和所述应用组件选用相同类型的源码。
具体的,步骤S2)中构建插件化应用,包括:
编译形成与所述应用组件对应的支持模块和编译形成与所述插件模组对应的插件模块,再将所述支持模块和所述插件模块集成为插件化应用;
例如,终端系统为开源系统,所述应用组件和所述插件模组为待编译的代码文件,所述应用组件可以包括应用本体源码、应用更新源配置文件和开源系统接口描述语言文件等,所述插件模组可以包括打包的开源系统组件文件,选用与代码文件代码类型匹配的编译器、通过编译器执行编译以及完成共享库配置,最后集成为可以被终端系统执行的插件化应用,集成过程中还可以进一步包括根据具体终端系统环境的部署、安装过程;
插件模块,若是执行文件或能够被回调的组件时,例如安卓系统中,本发明插件模块中具有交互活动组件(Activity),交互活动组件是用于按照后进先出机制对系统堆栈进行操作,操作是创建、停止、恢复和销毁,而在插件模组或系统组件中与交互活动组件对应的部分代码文件或部分代码数据是不能进行堆栈操作的;
此时,支持模块可以是可执行、可链接组件或文件,支持模块是应用组件编译后的执行体,应用组件内的应用本体源码、应用更新源配置文件和开源系统接口描述语言文件是不能执行的。
具体的,步骤S2)在构建插件化应用之前,还配置所述支持模块,所述支持模块被配置为具有插件获取功能、插件管理功能和插宿交互功能;
所述插件获取功能被配置为用于从服务系统获取新插件的部署件和获取已部署的插件的更新件;
所述插件管理功能被配置为用于所述部署件和所述更新件的执行、用于所述已部署的插件的卸载和用于通过所述插件获取功能向所述服务系统发出所述新插件的获取请求;
所述插宿交互功能被配置为用于所述已部署的插件和所述服务系统进行数据交互;
所述已部署的插件被配置为由所述插件模块驱动执行。
具体的,步骤S2)在构建插件化应用之前,还配置所述插件模块,所述插件模块被配置为具有进程分配和调度优化管理功能;
所述进程分配和调度优化管理功能被配置为用于将所述已部署的插件置于主进程中执行和/或将所述已部署的插件中部分插件置于与所述主进程不同的进程中执行。
具体的,步骤S2)在构建插件化应用之前,还配置所述插件模块,所述插件模块被配置为具有显示管理功能;
所述显示管理功能被配置为用于将所述已部署的插件的数据显示于与所述插件化应用对应的用户界面内和/或显示于与所述终端系统内除了所述插件化应用之外的应用对应的用户界面内;
所述显示管理功能还被配置为用于呈现所述插件化应用的用户界面和/ 或所述已部署的插件的用户界面。
本发明实施例提供一种构建用于插件化应用的服务系统的方法,该方法包括:
S1)形成产品渠道模块,其中,所述产品渠道模块被配置为用于根据终端系统中系统组件的插件开发方式形成与独立应用的服务对应的插件源;
S2)形成功能配置模块,其中,所述功能配置模块被配置为用于将所述插件源结合插件化应用进行配置和将配置完成后的插件源形成部署件、卸载件或更新件,其中,所述更新件可以用于插件(例如具有问题的故障插件) 的升级、强制升级、禁用和修复,所述卸载件可以用于插件的卸载和强制卸载等,所述更新件和所述卸载件提供了安全和保障功能;
S3)将所述产品渠道模块和所述功能配置模块集成为服务系统。
具体的,步骤S3)还包括:
形成日志数据统计模块,再将所述产品渠道模块、所述日志数据统计模块和所述功能配置模块集成为服务系统,其中,所述日志数据统计模块被配置为用于获取所述插件化应用的性能状态信息和运行信息。
本发明实施例提供一种插件化应用,该插件化应用包括:
插件模块,用于在终端系统内执行已部署的插件且用于执行所述已部署的插件和所述终端系统的数据交互;
支持模块,用于在所述终端系统内执行所述已部署的插件的更新或卸载、用于执行新插件的部署且用于与服务系统进行数据交互;
所述支持模块还用于与所述插件模块进行关于所述终端系统性能的日志数据交互,日志数据交互包括日志数据收集、日志数据的可视化展现和日志数据分析等;
其中,所述支持模块具有对所述插件模块内执行中的已部署的插件进行预设操作的功能。
可选的,所述插件模块具有与所述终端系统中用于插件执行的系统组件对应的交互处理功能;
所述插件模块用于根据所述交互处理功能执行所述已部署的插件且用于根据所述交互处理功能执行所述已部署的插件和所述终端系统的数据交互。
可选的,所述插件模块被配置为具有进程分配和调度优化管理功能;
所述插件模块通过所述进程分配和调度优化管理功能还用于将所述已部署的插件置于主进程中执行和/或将所述已部署的插件中部分插件置于与所述主进程不同的进程中执行。
可选的,所述支持模块包括:插件获取模块、插件管理模块和插宿交互模块;
所述插件获取模块用于从所述服务系统获取所述新插件的部署件和用于获取所述已部署的插件的更新件;
所述插件管理模块用于所述部署件和所述更新件的执行、用于所述已部署的插件的卸载和用于通过所述插件获取模块向所述服务系统发出所述新插件的获取请求;
所述插宿交互模块用于所述已部署的插件和所述服务系统进行数据交互。
可选的,所述插宿交互模块还用于对应所述已部署的插件的元数据和所述终端系统的元数据记录所述已部署的插件的日志。
本发明实施例提供一种用于插件化应用的服务系统,该服务系统包括:
产品渠道模块,包括多个插件源,其中,每个插件源至少与一个独立应用的服务进行数据交互;
功能配置模块,用于从所述产品渠道模块中确定与插件化应用对应的插件源、将所述插件源结合所述插件化应用进行配置和将配置完成后的插件源形成部署件、卸载件或更新件。
可选的,该服务系统还包括:
日志数据统计模块,用于获取、呈现和分析所述插件化应用的日志;
所述日志包括性能状态信息和运行信息。
再一方面,本发明实施例提供一种用于插件化应用的设备,包括:
至少一个处理器;
存储器,与所述至少一个处理器连接;
其中,所述存储器存储有能被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,所述至少一个处理器通过执行所述存储器存储的指令实现前述的方法。
又一方面,本发明实施例提供一种计算机可读存储介质,存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行前述的方法。
对应上述内容,本发明提供了插件化应用的架构设计标准,使用了终端系统的系统组件,无需开发者再次学习宿主应用的插件标准,突破性降低了应用软件开发更新周期,并容易实现功能模块增删和修改;
本发明实现了相对独立的插件运行和运维环境,支持插件独立开发和上下线;
有效兼容插件,支持插件与应用同套源码开发和运维,以方便插件和应用能在升级时进行共同修复和更新,而且无单独二次学习,节省了开发和维护成本;
服务系统和插件化应用采用灵活可扩展的框架架构,可以有效实现不同的、复杂的模块功能扩展和兼容支持;
本发明支持日志等数据统计,可结合实际情况,根据数据统计设置运维策略。
本发明实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施例,但并不构成对本发明实施例的限制。在附图中:
图1为本发明实施例的系统的主要架构示意图;
图2为本发明实施例的系统架构示意图;
图3为本发明实施例的系统插件平台的功能模块示意图;
图4为本发明实施例的插件化应用内示例性封装接口所对应用户界面示意图;
图5为本发明实施例的插件化应用内一种插件的用户界面示意图。
具体实施方式
以下结合附图对本发明实施例的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明实施例,并不用于限制本发明实施例。
实施例1
本实施例提供构建插件化应用的方法,该方法包括:
S1)获取终端系统中用于插件执行的系统组件,将所述系统组件集成为插件模组;
S2)获取应用组件,并通过所述应用组件和所述插件模组构建插件化应用;
终端系统设置于智能设备中,智能设备例如智能手机、平板和手表等,智能系统在本实施例中可以选取安卓系统;插件化应用,是一种可以通过插件来增加新功能的宿主应用;系统组件,可以包括:交互活动组件(Activity)、服务组件(Service)、内容提供程序组件(ContentProvider)和广播接收器组件(BroadcastReceiver),交互活动组件为具有用户界面的单一屏幕;服务组件是用于后台运行的组件,例如用于执行长时间运行的操作或为远程进程执行作业,不提供用户界面;内容提供程序组件是用于管理共享的应用数据,例如数据存储于某个永久性存储位置后,其他应用或插件可以通过内容提供程序组件查询或有条件地修改该数据;广播接收器组件是用于响应终端系统范围或者指定进程范围内更加高效的广播通知的组件,例如接收终端系统广播电量不足并作出预定响应或广播某个应用下载完成并在状态栏创建事件通知;本实施例的应用组件有两部分内容,一部分是用于支持插件化应用本身实现的部分组件,另一部分就是用于支持和对接插件模组的部分组件;插件模组和应用组件可以是代码、执行程序或链接程序等。
具体的,步骤S1)中,
将所述系统组件结合对象代理机制和反射代理机制集成为插件模组;
其中,还可以配置日志组件,利用日志组件形成插件策略,再根据所述系统组件结合插件策略、对象代理机制和反射代理机制形成插件模组;日志组件被配置为具有获取已部署的插件的日志数据统计功能且用于辅助对象代理过程和反射代理过程;对象代理机制(Hook)和反射代理机制,通过获取当前对象,把当前对象替换为创建的代理对象(例如日志可以用于触发切入事件,根据切入事件所发生的线程,获取该线程对象,提取该线程对象中某些字段至替换区,创建该字段的代理对象,并在替换区内完成替换后返回至线程中),并返回传递所创建的代理对象的值,由此可以提供插件运行环境,该运行环境可以让终端系统视插件为插件化应用的一种执行,并可以让插件视自身为可运行的已安装的应用,具有“欺上瞒下”的特点;在一些实施例中,还可以使用对象代理机制和动态代理方法,可以进一步增加插件的灵活性。
具体的,步骤S2)中,获取与所述插件模组源码类型匹配的应用组件;
具体的,步骤S2)中构建插件化应用,包括:
编译形成与所述应用组件对应的支持模块和编译形成与所述插件模组对应的插件模块,再将所述支持模块和所述插件模块集成为插件化应用;
具体的,步骤S2)在构建插件化应用之前,还配置所述支持模块,所述支持模块被配置为具有插件获取功能、插件管理功能和插宿交互功能;
所述插件获取功能被配置为用于从服务系统获取新插件的部署件和获取已部署的插件的更新件;
所述插件管理功能被配置为用于所述部署件和所述更新件的执行、用于所述已部署的插件的卸载和用于通过所述插件获取功能向所述服务系统发出所述新插件的获取请求;
所述插宿交互功能被配置为用于所述已部署的插件和所述服务系统进行数据交互;
所述已部署的插件被配置为由所述插件模块驱动执行;
具体的,步骤S2)在构建插件化应用之前,还配置所述插件模块,所述插件模块被配置为具有进程分配和调度优化管理功能;
所述进程分配和调度优化管理功能被配置为用于将所述已部署的插件置于主进程中执行和/或将所述已部署的插件中部分插件置于与所述主进程不同的进程中执行;
如图1,插件Plugin-A处于主进程,部分插件(插件Plugin-B和插件 Plugin-C等)处于异进程,同时,不同的主进程和异进程可以进行扩展和复用优化。
具体的,步骤S2)在构建插件化应用之前,还配置所述插件模块,所述插件模块被配置为具有显示管理功能;
所述显示管理功能被配置为用于将所述已部署的插件的数据显示于与所述插件化应用对应的用户界面内和/或显示于与所述终端系统内除了所述插件化应用之外的应用对应的用户界面内,在一些具体实例中,除了所述插件化应用之外的应用可以包括终端系统的状态栏等系统应用;
如图5,所述显示管理功能还被配置为用于呈现所述插件化应用的用户界面和/或所述已部署的插件的用户界面,图5呈现了助手插件的用户界面,在终端系统的状态栏下,具有云朵、冰山和北极熊等动画特效,可以链接日历等其他插件和设置等系统服务,用于显示终端系统的使用时长和解锁次数,使用时长可以进步对应某些插件或应用进行显示各自的使用时长;
插件获取功能包括数据处理功能;所述插件管理功能包括下载升级功能和校验安装功能;数据处理功能,可以用以配置请求机制、预设数据库操作和配置容错机制,其中,预设数据库操作,例如需要比对已部署的插件的共享文件,新插件所需要的共享文件若已存在,则会被裁剪,具有共享冗余自动裁剪的特点;下载升级功能可以配置有插件下载策略,例如自动下载、请求许可后进行下载或用户界面可见性等策略;校验安装功能包括插件签名、数据完整性和一致性校验。
本实施例还提供构建用于插件化应用的服务系统的方法,该方法包括:
S1)形成产品渠道模块,其中,所述产品渠道模块被配置为用于根据终端系统中系统组件的插件开发方式形成与独立应用的服务对应的插件源,开发方式是终端系统的插件的开发方式,不用再去学习每个插件化应用的自定义开发方式;
S2)形成功能配置模块,其中,所述功能配置模块被配置为用于将所述插件源结合插件化应用进行配置和将配置完成后的插件源形成部署件、卸载件或更新件;
S3)将所述产品渠道模块和所述功能配置模块集成为服务系统。
具体的,步骤S3)还包括:
形成日志数据统计模块,再将所述产品渠道模块、所述日志数据统计模块和所述功能配置模块集成为服务系统,其中,所述日志数据统计模块被配置为用于获取所述插件化应用的性能状态信息和运行信息。
实施例2
如图1和图2,本实施例提供插件化应用(Host和Plugin),该插件化应用包括:
插件模块,用于在终端系统内执行已部署的插件且用于执行所述已部署的插件和所述终端系统的数据交互;
支持模块,用于在所述终端系统内执行所述已部署的插件的更新或卸载、用于执行新插件的部署且用于与服务系统进行数据交互;
其中,所述支持模块具有对所述插件模块内执行中的已部署的插件进行预设操作的功能;
预设操作包括:热更新、异常聚类统计和分版本统计。
可选的,所述插件模块具有与所述终端系统中用于插件执行的系统组件对应的交互处理功能;
所述插件模块用于根据所述交互处理功能执行所述已部署的插件且用于根据所述交互处理功能执行所述已部署的插件和所述终端系统的数据交互。
可选的,所述插件模块被配置为具有进程分配和调度优化管理功能;
所述插件模块通过所述进程分配和调度优化管理功能还用于将所述已部署的插件置于主进程中执行和/或将所述已部署的插件中部分插件置于与所述主进程不同的进程中执行;
进程分配和调度优化管理功能可以有效使得插件在插件化应用所在主进程中执行或者异进程中执行,提升灵活性,并且在异进程中执行的插件可以减少主进程的用户界面资源消耗,提升用户界面的流畅度;
可选的,所述支持模块包括:插件获取模块、插件管理模块和插宿交互模块;
所述插件获取模块用于从所述服务系统获取所述新插件的部署件和用于获取所述已部署的插件的更新件;
所述插件管理模块用于所述部署件和所述更新件的执行、用于所述已部署的插件的卸载和用于通过所述插件获取模块向所述服务系统发出所述新插件的获取请求;
所述插宿交互模块用于所述已部署的插件和所述服务系统进行数据交互。
可选的,所述插宿交互模块还用于对应所述已部署的插件的元数据(例如版本信息等)和所述终端系统的元数据(例如版本信息等)记录所述已部署的插件的日志;
插件获取模块包括数据处理模块;
所述插件管理模块包括下载升级模块和校验安装模块;
数据处理模块,可以用以配置请求机制、预设数据库操作和配置容错机制;请求机制可以有自动请求、功能触发请求和紧急修复请求;预设数据库操作,例如需要比对已部署的插件的共享文件,新插件所需要的共享文件若已存在,则会被裁剪,具有共享冗余自动裁剪的特点;预设数据库操作包括数据校验操作(例如根据请求机制进行验证服务系统的响应)、存储优化操作(例如删除冗余的共享文件)和数据库命令执行操作(例如新增共享文件存储列表);容错机制,例如服务系统的响应中断后,导致某些文件未正常获取,例如图标文件icon,可以配置标记服务系统的响应已完成并进行下一步插件部署,待后续恢复响应后,再对数据库中缺失文件进行补充;
下载升级模块可以配置有插件下载模块、下载策略控制模块和插件升级模块,插件下载模块中可以配置下载方式例如自动下载或请求许可后进行下载,下载策略控制模块可以在插件下载模块执行后或插件升级模块执行后提供当前所执行的插件下载或插件升级匹配对应的策略,例如插件升级不提供用户界面可见性、插件下载使用无线局域网才能执行、完全静默执行、禁用插件下载以及插件升级、先执行插件卸载再执行插件下载等策略;
校验安装模块包括插件校验模块、插件安装模块和热更新模块;可以先执行插件校验模块,校验过程包括对预加密的插件的部署件(例如安装包或部署代码)进行签名验证和字符串验证,例如部署件为安装包,字符串验证可以为对安装包的MD5字符串进行验证,也可以是其它加密算法的系统签名验证或自定义校验安全机制,从而具有完整性和一致性的校验过程;接着执行插件安装模块,插件安装过程包括依赖文件检查和获取以及插件安装,依赖文件检查会查看终端系统和插件化应用是否存在插件所需的依赖关系,例如Dex文件和Lib文件等,若不存在依赖关系则从预置资源处进行匹配和补充;本发明提供热更新模块,根据当前插件在插件化应用的状态(例如是否是新装插件),响应更新或处理方式,更新或处理方式可以是数据拷贝和路径切换等;
所述插宿交互模块包括事件拦截模块、交互通信模块以及异常聚类和分版本统计模块;先执行事件拦截模块,可以发现当前插件化应用执行中或某个插件执行中的事件触发情况,再将事件通过交互通信模块预设的通信接口和数据格式传递至异常聚类和分版本统计模块,其中,可以通过安卓接口定义语言(Android Interface Definition Language,AIDL)实现交互通信模块;异常聚类和分版本统计模块,执行监测GPT插件模块、监测已部署的插件、统计版本信息和统计终端系统信息。
本实施例还提供用于插件化应用的服务系统(Server),该服务系统包括:
产品渠道模块,包括多个插件源,其中,每个插件源至少与一个独立应用的服务进行数据交互(插件源可以是插件的资源路径、插件的源码、程序或安装包等),独立应用可以是没有部署于终端系统的应用程序,与独立应用对应的服务是提供独立应用数据来源的服务,例如服务器上运行的服务端程序且同时独立应用为与服务端程序匹配的客户端程序;
功能配置模块,用于从所述产品渠道模块中确定与插件化应用对应的插件源、将所述插件源结合所述插件化应用进行配置和将配置完成后的插件源形成部署件、卸载件或更新件。
可选的,该服务系统还包括:
日志数据统计模块,用于获取、呈现和分析所述插件化应用的日志且还可以用于获取、呈现和分析所述终端系统的日志;
所述日志包括性能状态信息和运行信息;
产品渠道模块和功能配置模块可以称为插件平台;产品渠道模块可以提供用于形成和提供插件的源码、程序或安装包等;功能配置模块包括接入系统、下发系统、数据系统和项目管理系统,通过接入系统获得产品渠道模块所提供的插件数据,将产品渠道模块所提供的插件数据在项目管理系统中查找匹配已部署的项目或形成新项目,数据系统可以将产品渠道模块所提供的插件数据进行预设参数配置、编译、组装、集成和加密等处理,根据项目管理的控制策略,通过下发系统响应插件化应用对应该插件的请求;
如图3,插件平台包括用于插件化应用的软件开发工具包(SDK),各个服务方可以根据各自服务特点和软件开发工具包进行开发插件的源码或程序等;插件平台可以进一步设置核心功能、技术支持、代码示例(Code Demo) 和数据服务,核心功能包括所述软件开发工具包和统计等,技术支持包括博客、社群、百科和技术文档等,代码示例包括共享文件库示例(AAR)、插件化应用示例(Host)、插件示例(Plugin)和管理模块示例(Manager),数据服务包括插件管理服务、基础数据服务(例如专属网络数据接入服务)和异常统计服务;
如图4,在插件化应用内实现插件模块的接口封装,应用程序接口封装示例(APIDemos)包括权限(Accessibility)、关联应用(App)、内容接口 (Content)、图像接口(Graphics)、硬件接口(Hardware)、多媒体接口(Media) 和近场通讯接口(NFC);
日志数据统计模块(可以称为统计数据平台)将通过插件化应用中的插件交互模块获取日志的数据;日志数据统计模块所记录的信息包括插件的性能状态信息和运行信息,性能状态信息包括冷热启动方式信息、安装卸载信息和成功失败信息,运行信息包括使用时长信息、进程信息、热更新信息和异常信息;日志数据统计模块所获得的数据可以发送至插件平台,由插件平台选择地向终端设备上的插件化应用推送各类插件的状态或触发地执行各类插件的运维操作。
对于插件化应用的实例,若插件化应用是手机的卫士应用程序,插件为天气服务插件(天气服务还对应有天气应用程序),卫士应用程序需要安装天气服务插件时,将向服务系统请求,服务系统会下发天气服务插件的信息至卫士应用程序,卫士应用程序则根据该信息开始下载天气服务插件,通过支持模块安装后由插件模块进行启动和运行,实现了在未安装天气应用程序情况下,却可以在卫士应用程序中获得天气服务的天气数据并提供按用户界面情况展示该天气数据于卫士应用程序所在用户界面或终端系统内其他应用程序的用户界面,其他应用程序例如状态监控应用程序,状态监控应用程序会呈现终端系统内广播的应用程序状态或插件状态。
本发明采用Server、Host和Plugin的多端分层框架架构设计(每个模块可以作为一层,每个模块的子模块可以进行接口封装),方便各个层端数据依赖解耦、灵活扩展和隔离控制;Server可提供灵活配置功能和云服务接入功能,可以实现插件数据的分析优化、安全控制和防止数据劫持行为;Host 是终端系统内插件化应用的核心产品功能层,各种组件结合可以对不同产品业务需求进行功能逻辑定制和策略设计;Plugin是体现已部署的插件运行情况,可以与插件化应用(宿主)在主进程中一起运行,以方便实现用户界面交互和处理,同时也可动态考虑用户界面资源负载情况,将插件置于不同进程中运行;
本发明数据流向采用了边缘单向独立方式,例如依次为插件平台→数据处理、以及插宿交互→统计数据平台,数据处理过程中为处理结果的单向依赖;本发明还采用了中间级双向同步依赖方式,例如
Figure BDA0002142319680000161
Figure BDA0002142319680000162
可以避免间隔层数据直接读取,提升安全性。
以上结合附图详细描述了本发明实施例的可选实施方式,但是,本发明实施例并不限于上述实施方式中的具体细节,在本发明实施例的技术构思范围内,可以对本发明实施例的技术方案进行多种简单变型,这些简单变型均属于本发明实施例的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明实施例对各种可能的组合方式不再另行说明。
本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得单片机、芯片或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
此外,本发明实施例的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明实施例的思想,其同样应当视为本发明实施例所公开的内容。

Claims (15)

1.一种构建插件化应用的方法,其特征在于,该方法包括:
S1)获取终端系统中用于插件执行的系统组件,将所述系统组件集成为插件模组;
S2)获取应用组件,并通过所述应用组件和所述插件模组构建插件化应用;
步骤S2)中构建插件化应用,包括:
编译形成与所述应用组件对应的支持模块和编译形成与所述插件模组对应的插件模块,再将所述支持模块和所述插件模块集成为插件化应用;
其中,所述插件化应用内有所述插件模块的接口封装;所述插件化应用向服务系统请求,且根据所述服务系统下发的插件的信息开始下载该插件;该插件通过所述支持模块安装后由所述插件模块进行启动和运行;
所述支持模块被配置为具有插件获取功能、插件管理功能和插宿交互功能;所述插件获取功能被配置为用于从所述服务系统获取新插件的部署件和获取已部署的插件的更新件;所述插件管理功能被配置为用于所述部署件和所述更新件的执行、用于所述已部署的插件的卸载和用于通过所述插件获取功能向所述服务系统发出所述新插件的获取请求;所述插宿交互功能被配置为用于所述已部署的插件和所述服务系统进行数据交互;所述已部署的插件被配置为由所述插件模块驱动执行;
所述插件模块被配置为具有进程分配和调度优化管理功能;所述进程分配和调度优化管理功能被配置为用于将所述已部署的插件置于主进程中执行和/或将所述已部署的插件中部分插件置于与所述主进程不同的进程中执行。
2.根据权利要求1所述的构建插件化应用的方法,其特征在于,步骤S1)中,
将所述系统组件结合对象代理机制和反射代理机制集成为插件模组。
3.根据权利要求1所述的构建插件化应用的方法,其特征在于,步骤S2)中,获取与所述插件模组源码类型匹配的应用组件。
4.根据权利要求1所述的构建插件化应用的方法,其特征在于,步骤S2)在构建插件化应用之前,还配置所述插件模块,所述插件模块被配置为具有显示管理功能;
所述显示管理功能被配置为用于将所述已部署的插件的数据显示于与所述插件化应用对应的用户界面内和/或显示于与所述终端系统内除了所述插件化应用之外的应用对应的用户界面内;
所述显示管理功能还被配置为用于呈现所述插件化应用的用户界面和/或所述已部署的插件的用户界面。
5.一种构建用于插件化应用的服务系统的方法,其中所述插件化应用是权利要求1至4中任意一项所述的构建插件化应用的方法中的插件化应用,其特征在于,该方法包括:
S1)形成产品渠道模块,其中,所述产品渠道模块被配置为用于根据终端系统中系统组件的插件开发方式形成与独立应用的服务对应的插件源;
S2)形成功能配置模块,其中,所述功能配置模块被配置为用于将所述插件源结合插件化应用进行配置和将配置完成后的插件源形成部署件、卸载件或更新件;
S3)将所述产品渠道模块和所述功能配置模块集成为服务系统。
6.根据权利要求5所述的构建用于插件化应用的服务系统的方法,其特征在于,步骤S3)还包括:
形成日志数据统计模块,再将所述产品渠道模块、所述日志数据统计模块和所述功能配置模块集成为服务系统,其中,所述日志数据统计模块被配置为用于获取所述插件化应用的性能状态信息和运行信息。
7.一种插件化应用系统,其中所述插件化应用系统执行权利要求1至4中任意一项所述的构建插件化应用的方法,其特征在于,该插件化应用系统包括:
插件模块,用于在终端系统内执行已部署的插件且用于执行所述已部署的插件和所述终端系统的数据交互;
支持模块,用于在所述终端系统内执行所述已部署的插件的更新或卸载、用于执行新插件的部署且用于与服务系统进行数据交互;
其中,所述支持模块具有对所述插件模块内执行中的已部署的插件进行预设操作的功能。
8.根据权利要求7所述的插件化应用系统,其特征在于,
所述插件模块具有与所述终端系统中用于插件执行的系统组件对应的交互处理功能;
所述插件模块用于根据所述交互处理功能执行所述已部署的插件且用于根据所述交互处理功能执行所述已部署的插件和所述终端系统的数据交互。
9.根据权利要求7所述的插件化应用系统,其特征在于,
所述插件模块被配置为具有进程分配和调度优化管理功能;
所述插件模块通过所述进程分配和调度优化管理功能还用于将所述已部署的插件置于主进程中执行和/或将所述已部署的插件中部分插件置于与所述主进程不同的进程中执行。
10.根据权利要求7所述的插件化应用系统,其特征在于,
所述支持模块包括:插件获取模块、插件管理模块和插宿交互模块;
所述插件获取模块用于从所述服务系统获取所述新插件的部署件和用于获取所述已部署的插件的更新件;
所述插件管理模块用于所述部署件和所述更新件的执行、用于所述已部署的插件的卸载和用于通过所述插件获取模块向所述服务系统发出所述新插件的获取请求;
所述插宿交互模块用于所述已部署的插件和所述服务系统进行数据交互。
11.根据权利要求10所述的插件化应用系统,其特征在于,
所述插宿交互模块还用于对应所述已部署的插件的元数据和所述终端系统的元数据记录所述已部署的插件的日志。
12.一种用于插件化应用系统的服务系统,其中所述插件化应用系统是权利要求7至11中任意一项所述的插件化应用系统,其特征在于,该服务系统包括:
产品渠道模块,包括多个插件源,其中,每个插件源至少与一个独立应用的服务进行数据交互;
功能配置模块,用于从所述产品渠道模块中确定与所述插件化应用系统对应的插件源、将所述插件源结合所述插件化应用系统进行配置和将配置完成后的插件源形成部署件、卸载件或更新件。
13.根据权利要求12所述的用于插件化应用系统的服务系统,其特征在于,该服务系统还包括:
日志数据统计模块,用于获取、呈现和分析所述插件化应用系统的日志;
所述日志包括性能状态信息和运行信息。
14.一种用于插件化应用的设备,其特征在于,包括:
至少一个处理器;
存储器,与所述至少一个处理器连接;
其中,所述存储器存储有能被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令实现权利要求1至6中任意一项权利要求所述的方法。
15.一种计算机可读存储介质,存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行权利要求1至6中任意一项权利要求所述的方法。
CN201910673022.7A 2019-07-24 2019-07-24 插件化系统及其方法 Active CN110515673B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910673022.7A CN110515673B (zh) 2019-07-24 2019-07-24 插件化系统及其方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910673022.7A CN110515673B (zh) 2019-07-24 2019-07-24 插件化系统及其方法

Publications (2)

Publication Number Publication Date
CN110515673A CN110515673A (zh) 2019-11-29
CN110515673B true CN110515673B (zh) 2022-10-11

Family

ID=68623042

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910673022.7A Active CN110515673B (zh) 2019-07-24 2019-07-24 插件化系统及其方法

Country Status (1)

Country Link
CN (1) CN110515673B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111309335B (zh) * 2020-02-28 2023-08-15 腾讯音乐娱乐科技(深圳)有限公司 插件应用的编译方法、装置及计算机可读存储介质
CN111562945B (zh) * 2020-04-01 2021-12-21 杭州博雅鸿图视频技术有限公司 一种多媒体处理方法、装置、设备及存储介质
CN111552524B (zh) * 2020-05-06 2023-10-13 Oppo(重庆)智能科技有限公司 一种插件加载方法、装置及计算机可读存储介质
CN111831320A (zh) * 2020-07-20 2020-10-27 北京百度网讯科技有限公司 插件管理方法、装置、电子设备及存储介质
CN114764352A (zh) * 2021-01-15 2022-07-19 北京猎户星空科技有限公司 一种业务服务提供方法、智能设备及存储介质
CN113392384B (zh) * 2021-06-11 2023-03-14 广西电网有限责任公司梧州供电局 一种变电站二次系统的安全加固系统及终端设备
CN113741998B (zh) * 2021-08-16 2023-10-20 国网河北省电力有限公司检修分公司 一种具有多插件的继电保护装置的数据处理系统及方法
CN113778554A (zh) * 2021-09-01 2021-12-10 粒子文化科技集团(杭州)股份有限公司 插件处理方法、电子装置和存储介质
CN116302190B (zh) * 2023-03-14 2023-10-31 北京海致星图科技有限公司 一种基于知识图谱平台的新型插件化方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104714828A (zh) * 2015-03-31 2015-06-17 北京奇虎科技有限公司 应用安装、运行方法及装置
CN107479867A (zh) * 2017-06-12 2017-12-15 百度在线网络技术(北京)有限公司 应用软件插件化运行方法及装置
CN108279939A (zh) * 2016-12-30 2018-07-13 阿里巴巴集团控股有限公司 一种Android插件框架支持新增广播接收者的方法、装置及设备
CN109725952A (zh) * 2019-01-07 2019-05-07 深圳市网心科技有限公司 一种应用程序插件化的方法、系统以及相关装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9612817B2 (en) * 2013-10-30 2017-04-04 Oracle International Corporation System and method for providing a physical plugin for use in a cloud platform environment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104714828A (zh) * 2015-03-31 2015-06-17 北京奇虎科技有限公司 应用安装、运行方法及装置
CN108279939A (zh) * 2016-12-30 2018-07-13 阿里巴巴集团控股有限公司 一种Android插件框架支持新增广播接收者的方法、装置及设备
CN107479867A (zh) * 2017-06-12 2017-12-15 百度在线网络技术(北京)有限公司 应用软件插件化运行方法及装置
CN109725952A (zh) * 2019-01-07 2019-05-07 深圳市网心科技有限公司 一种应用程序插件化的方法、系统以及相关装置

Also Published As

Publication number Publication date
CN110515673A (zh) 2019-11-29

Similar Documents

Publication Publication Date Title
CN110515673B (zh) 插件化系统及其方法
CN102609281B (zh) 分布式软件补丁更新方法及系统
CN102622241B (zh) 一种软件升级方法及装置
CN110543328B (zh) 基于Ambari的跨平台组件管理方法、系统、终端及存储介质
US11206316B2 (en) Multiple model injection for a deployment cluster
CN102710593B (zh) 一种图形聚合中的消息分发方法及装置、系统
CN102045390A (zh) 计算机专用软件更新的自动配置
CN105302563A (zh) 移动应用服务的插件化方法及系统
CN112527310A (zh) 多租户数据隔离方法、装置、计算机设备及存储介质
CN102841824B (zh) 一种回滚方法和回滚装置
US11645086B2 (en) System and method for implementing a filesystem agent management solution
CN103092645A (zh) 一种基于微内核技术的地理空间信息应用系统及其实现方法
US20230259358A1 (en) Documentation enforcement during compilation
CN112000353A (zh) 应用运行方法、装置及存储介质
CN109165034A (zh) 基于ota的pos机升级方法、装置、设备及存储介质
CN111679888A (zh) 一种代理容器的部署方法及装置
CN110618820A (zh) 一种电力调度系统
CN112882892B (zh) 数据处理方法和装置、电子设备及存储介质
CN115859280A (zh) 内存马的检测方法、装置、设备及存储介质
CN111026413B (zh) 以需求为导向的复杂系统“拉取”模式部署系统及其方法
CN114756227A (zh) 一种资源发布的处理方法和装置
CN102902564A (zh) 安装补丁的方法及装置
US11269610B1 (en) System and method for self-service configuration management
CN105610908B (zh) 一种基于安卓设备的samba服务实现方法及系统
CN111581256A (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