CN106371874A - 一种插件数据加载方法及设备 - Google Patents

一种插件数据加载方法及设备 Download PDF

Info

Publication number
CN106371874A
CN106371874A CN201610782574.8A CN201610782574A CN106371874A CN 106371874 A CN106371874 A CN 106371874A CN 201610782574 A CN201610782574 A CN 201610782574A CN 106371874 A CN106371874 A CN 106371874A
Authority
CN
China
Prior art keywords
plug
data
unit
internal memory
host
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
CN201610782574.8A
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.)
Guangzhou Pinwei Software Co Ltd
Original Assignee
Guangzhou Pinwei Software 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 Guangzhou Pinwei Software Co Ltd filed Critical Guangzhou Pinwei Software Co Ltd
Priority to CN201610782574.8A priority Critical patent/CN106371874A/zh
Publication of CN106371874A publication Critical patent/CN106371874A/zh
Pending legal-status Critical Current

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

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)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种插件数据加载方法及设备,属于计算机领域,所述方法包括:服务端根据用户指示或默认事件获取插件数据,所述插件数据包括所述插件的资源;根据预设加载方式将所述插件数据加载至宿主内存;所述客户端的主应用加载所述宿主内存中的所述插件数据,并替换相应的原始插件数据。本发明公开的技术方案在不需要发布新版本的前提下即可将不同类型的插件动态加载至应用程序上,实现动态替换整个页面Activity或Service、页面中的Fragment或View,大大提高应用程序的动态运营能力。

Description

一种插件数据加载方法及设备
技术领域
本发明涉及计算机领域,特别涉及一种插件数据加载方法及设备。
背景技术
目前,Android系统中应用程序越来越多,在发布活动、修复应用程序时,通常需要发布新的版本供用户下载替换旧版本,频繁的更新容易导致资源的浪费,同时应用程序的更新内容具有一定的滞后性。
插件化作为一种新思想,将应用程序划分为不同的模块,不同的模块对应不同的插件,在应用程序更新时,不需要发布新版本,只需要更新对应的插件即可动态的实现应用程序的更新。目前,实现插件化的技术有很多,包括DL、360开源插件化、手机管家插件化和React Native等。
上述插件技术能够实现应用程序的插件化处理,但是插件化最关键的不是插件技术的如何实现,而是如何将不同类型的插件动态、兼容地加载到应用程序上,包括解耦应用程序,UI和业务服务化,路由器接口的适配,插件版本的管理和插件的使用等。现有的插件化技术在加载插件,尤其是加载不同类型的插件时,仍然无法很好的通过插件将应用程序中对应的模块动态替换。
发明内容
为了解决上述技术问题,本发明实施例提供了一种插件数据加载方法及设备,能够实现插件的热发布,进一步提高动态运营能力。
所述技术方案如下:
第一方面,提供了一种插件数据加载方法,其特征在于,所述方法包括:
服务端根据用户指示或默认事件获取插件数据,所述插件数据包括所述插件的资源;
根据预设加载方式将所述插件数据加载至宿主内存;
所述客户端的主应用加载所述宿主内存中的所述插件数据,并替换相应的原始插件数据。
结合第一方面,在第一种可能的实施方式中,通过以下操作中的任意一个,实现所述服务端根据用户指示获取插件数据的步骤:
用户确认推送的所述插件信息,所述服务端向所述客户端发送所述插件数据;或者,
用户搜索所述插件,所述服务端向所述客户端发送所述插件数据。
结合第一方面,在第二种可能的实施方式中,所述根据默认事件获取插件数据包括:
所述客户端检测到插件更新,向所述服务端发送更新请求;
所述服务端根据所述更新请求,向所述客户端发送所述插件数据。
结合第一方面,在第三种可能的实施方式中,所述根据预设加载方式将所述插件数据加载至宿主内存包括:
将所述插件打包成开发者版本;
所述主应用通过Android动态加载至所述宿主内存中;其中,所述插件包括Fragment插件或View插件。
结合第一方面,在第四种可能的实施方式中,所述根据预设加载方式将所述插件数据加载至宿主内存包括:
根据预设协议,将所述插件通过React Native加载框架加载至所述宿主内存中;其中,所述插件包括View插件。
结合第一方面,在第五种可能的实施方式中,所述根据预设加载方式将所述插件数据加载至宿主内存包括:
启动Proxy Activity代理和DL ProxyImpl代理,将所述插件数据载入到所述宿主内存中;其中,所述插件包括Activity插件或Service插件。
第二方面,提供了一种插件数据加载设备,其特征在于,所述设备包括:
获取模块,用于服务端根据用户指示或默认事件获取插件数据,所述插件数据包括所述插件的资源;
加载模块,用于根据预设加载方式将所述插件数据加载至宿主内存;
替换模块,用于所述客户端的主应用加载所述宿主内存中的所述插件数据,并替换相应的原始插件数据。
结合第二方面,在第一种可能的实施方式中,所述获取模块具体包括:
第一获取模块,用于用户确认推送的所述插件信息,所述服务端向所述客户端发送所述插件数据;或者,
第二获取模块,用于用户搜索所述插件,所述服务端向所述客户端发送所述插件数据。
结合第二方面,在第二种可能的实施方式中,所述获取模块还包括更新模块,具体用于:
所述客户端检测到插件更新,向所述服务端发送更新请求;
所述服务端根据所述更新请求,向所述客户端发送所述插件数据。
结合第二方面,在第三种可能的实施方式中,所述加载模块包括:
打包模块,用于将所述插件打包成开发者版本;
动态加载模块,用于所述主应用通过Android动态加载至所述宿主内存中;其中,所述插件包括Fragment插件或View插件。
结合第二方面,在第四种可能的实施方式中,所述加载模块还包括:
React Native加载模块,用于根据预设协议,将所述插件通过React Native加载框架加载至所述宿主内存中;其中,所述插件包括View插件。
结合第二方面,在第五种可能的实施方式中,所述加载模块还包括:
代理加载模块,用于启动Proxy Activity代理和DL ProxyImpl代理,将所述插件数据载入到所述宿主内存中;其中,所述插件包括Activity插件或Service插件。
第三方面,提供了一种电子设备,所述电子设备包括存储器,以及与所述存储器连接的处理器,其中,所述存储器用于存储一组程序代码,所述处理器调用所述存储器所存储的程序代码用于执行以下操作:
服务端根据用户指示或默认事件获取插件数据,所述插件数据包括所述插件的资源;
根据预设加载方式将所述插件数据加载至宿主内存;
所述客户端的主应用加载所述宿主内存中的所述插件数据,并替换相应的原始插件数据。
结合第三方面,在第一种可能的实施方式中,所述处理器调用所述存储器所存储的程序代码用于执行以下操作:
用户确认推送的所述插件信息,所述服务端获取所述插件数据;或者,
用户搜索所述插件,所述服务端获取所述插件数据。
结合第三方面,在第二种可能的实施方式中,所述处理器调用所述存储器所存储的程序代码用于执行以下操作:
所述客户端检测到插件更新,向所述服务端发送更新请求;
所述服务端根据所述更新请求,获取所述插件数据。
结合第三方面,在第三种可能的实施方式中,所述处理器调用所述存储器所存储的程序代码用于执行以下操作:
将所述插件打包成开发者版本;
所述主应用通过Android动态加载至所述宿主内存中;其中,所述插件包括Fragment插件或View插件。
结合第三方面,在第四种可能的实施方式中,所述处理器调用所述存储器所存储的程序代码用于执行以下操作:
根据预设协议,将所述插件通过React Native加载框架加载至所述宿主内存中;其中,所述插件包括View插件。
结合第三方面,在第五种可能的实施方式中,所述处理器调用所述存储器所存储的程序代码用于执行以下操作:
启动Proxy Activity代理和DL ProxyImpl代理,将所述插件数据载入到所述宿主内存中;其中,所述插件包括Activity插件或Service插件。
本发明公开了一种插件数据加载方法及设备,所述方法包括:服务端根据用户指示或默认事件获取插件数据,所述插件数据包括所述插件的资源;根据预设加载方式将所述插件数据加载至宿主内存;所述客户端的主应用加载所述宿主内存中的所述插件数据,并替换相应的原始插件数据。本发明的技术方案能够随意替换整个页面Activity、一个Tab页面Fragment、或者只是页面里的部分内容View(如广告位)或后台服务逻辑Service、或者业务逻辑如购物车等,可以大大满足动态运营需求,增强运营商的动态发布和运营能力。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种插件数据加载方法流程图;
图2是本发明实施例提供的另一种插件数据加载方法流程图;
图3是本发明实施例提供的另一种插件数据加载方法流程图;
图4是本发明实施例提供的另一种插件数据加载方法流程图;
图5是本发明实施例提供的另一种插件数据加载方法流程图;
图6是本发明实施例提供的另一种插件数据加载方法流程图;
图7是本发明实施例提供的另一种插件数据加载方法流程图;
图8是本发明实施例提供的一种插件数据加载设备结构示意图;
图9是本发明实施例提供的一种电子设备结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种插件数据加载方法及设备,可以适用于安装有Android系统的手机、平板电脑、可穿戴设备或者其他便携式设备中,通过插件服务端与便携式设备客户端之间的交互通信,可以实现服务端的插件数据动态加载到便携式设备客户端的应用程序上,尤其是满足电商应用程序动态发布应用活动、页面内容的需求。
实施例一
本发明实施例提供了一种插件数据加载方法,参照图1所示,该方法包括:
S101、服务端根据用户指示或默认事件获取插件数据,插件数据包括插件的资源。
具体地,通过以下操作中的任意一个,实现服务端根据用户指示获取插件数据的步骤:
用户确认推送的插件信息,服务端获取插件数据;或者,
用户搜索插件,服务端获取插件数据。
根据默认事件获取插件数据包括:
客户端检测到插件更新,向服务端发送更新请求;
服务端根据更新请求,获取插件数据。
S102、根据预设加载方式将所述插件数据加载至宿主内存。
具体地,将插件打包成开发者版本;
主应用通过Android动态加载至宿主内存中;其中,插件包括Fragment插件或View插件。或者,
根据预设协议,将所述插件通过React Native加载框架加载至所述宿主内存中;其中,所述插件包括View插件。或者,
根据预设协议,将所述插件通过React Native加载框架加载至所述宿主内存中;其中,所述插件包括View插件。
S103、客户端的主应用加载宿主内存中的插件数据,并替换相应的原始插件数据。
具体地,插件数据包括UI资源和代码逻辑等,主应用将插件数据加载后,可以将原始插件数据中的UI资源和代码逻辑替换,完成主应用的动态更新与发布。
本发明实施例提供了一种插件数据加载方法,通过服务端根据用户指示或默认事件获取插件数据,能够根据不同的方式获取插件数据,提高本方法的应用范围;通过根据预设加载方式将插件数据加载至宿主内存中,能够将不同类型的插件数据加载至宿主内存中,当主应用加载插件数据时可以直接从宿主内存中加载,进一步提高加载效率;通过客户端的主应用加载宿主内存中的插件数据,并替换相应的原始插件数据,能够将主应用中的原始插件数据进行替换,完成主应用的热发布,进一步提高主应用的动态运营能力。
实施例二
本发明实施例提供了一种插件数据加载方法,参照图2所示,该方法包括:
S201、用户确认推送的插件信息,服务端获取插件数据,插件数据包括插件的资源。
具体地,服务端向用户客户端推送至少一个插件信息;
若用户判定加载插件,则向服务端发送确认指令;
服务端接收确认指令,获取插件数据。
其中,服务端向用户客户端推送的至少一个插件信息中包括插件的基本信息,例如:插件名称、插件版本和插件的内容。
用户根据插件信息判断是否需要更新或安装此插件至本地应用中,若判定需要加载此插件,则可以通过向服务端发送确认指令,确认加载此插件。具体确认的方式可以是用户点击推送消息中的“安装”或“确认”等其他控件,也可以是采用滑动等其他手势发送确认指令,还可以通过输入语音向服务端发送确认指令。
服务端接收客户端发送的确认指令后,搜索服务端数据库中的插件数据,得到待发送的插件数据。该插件数据一般包括代码逻辑和UI资源,其中,UI资源的获取可以是通过搜索服务端数据库直接提取,与代码逻辑一同发送客户端,也可以是只发送UI资源的路径信息,待客户端接收该路径信息后,通过网络下载该UI资源。
通过向用户推送插件的方式,运营商可以根据自身的商业需求动态的发布插件信息,灵活的对主应用进行更新,大大降低频繁的更新主应用版本造成的资源消耗和更新内容的滞后性,进一步提高了动态运营能力。
S202、根据预设加载方式将所述插件数据加载至宿主内存。
具体地,将插件打包成开发者版本;
主应用通过Android动态加载至宿主内存中;其中,插件包括Fragment插件或View插件。或者,
根据预设协议,将所述插件通过React Native加载框架加载至所述宿主内存中;其中,所述插件包括View插件。或者,
根据预设协议,将所述插件通过React Native加载框架加载至所述宿主内存中;其中,所述插件包括View插件。
在步骤201中服务端获取待发送的插件数据,通过网络连接将插件数据发送至客户端,客户端接收后将插件数据加载至主应用的宿主内存中。可以将主应用中不同类型的插件加载至主应用中,进一步提高本发明的应用范围,提高动态运营能力。
S203、客户端的主应用加载宿主内存中的插件数据,并替换相应的原始插件数据。
具体地,插件数据包括UI资源和代码逻辑等,主应用将插件数据加载后,可以将原始插件数据中的UI资源和代码逻辑替换,完成主应用的动态更新与发布。
其中,宿主内存中加载的插件数据为代码逻辑和UI资源时,可以通过运行主应用直接将相应的页面内容进行替换。
其中,宿主内存中加载的插件数据为代码逻辑和UI资源的路径时,需要通过网络连接定位至UI资源所在的路径,然后将UI资源下载至本地中。
本发明实施例提供了一种插件数据加载方法,通过向用户客户端推送插件信息,用户可根据插件需求,选择加载与否,而且运营商可以动态的发布插件信息,提高主应用的动态运营能力和灵活性,客户端也能够及时的接收待更新的插件信息,保证推送的内容能够及时的送达至客户端。
实施例三
本发明实施例提供了一种插件数据加载方法,参照图3所示,该方法包括:
S301、用户搜索插件,服务端获取插件数据,插件数据包括插件的资源。
具体地,用户搜索插件;
若用户判定搜索到插件,则发送加载指令;
服务器端接收加载指令并获取插件数据。
其中,用户搜索插件包括:用户在主应用对应的搜索界面上进行搜索插件;或者,用户在服务端提供的搜索界面中搜索插件。
搜索插件的关键词包括:插件的名称,插件的内容,插件发布的日期等。插
可选的,手动输入关键词,即手动输入名称、内容、日期等;
可选的,手动选择关键词,主应用和服务端提供的搜索界面中可以提供热点关键词,包括某一类型或者某一阶段发布的插件,用户可以手动选择该关键词。
可选的,语音输入关键词,搜索界面提供语音输入模块,用户可以通过语音输入关键词的方式完成对特定插件的搜索。
当用户确认搜索到需要的插件后,则用户向服务端发送加载该插件的加载指令。具体确认的方式可以是用户点击推送消息中的“安装”或“确认”等其他控件,也可以是采用滑动等其他手势发送确认指令,还可以通过输入语音向服务端发送确认指令。
服务端接收客户端发送的确认指令后,搜索服务端数据库中的插件数据,得到待发送的插件数据。该插件数据一般包括代码逻辑和UI资源,其中,UI资源的获取可以是通过搜索服务端数据库直接提取,与代码逻辑一同发送客户端,也可以是只发送UI资源的路径信息,待客户端接收该路径信息后,通过网络下载该UI资源。
用户通过搜索的方式获取插件数据,能够根据实际需求搜索并加载对应插件,目的性强,而且可以选择不同的搜索方式,适用范围更加广泛。
S302、根据预设加载方式将所述插件数据加载至宿主内存。
具体地,本步骤与S202相同,在此不再具体赘述。
S303、客户端的主应用加载宿主内存中的插件数据,并替换相应的原始插件数据。
具体地,本步骤与S203相同,在此不再具体赘述。
本发明实施例提供了一种插件数据加载方法,用户能够根据实际需要在主应用界面或服务端提供的搜索界面中搜索插件,通过提供多种搜索方式,进一步扩大本发明的应用范围。
实施例四
本发明实施例提供了一种插件数据加载方法,参照图4所示,该方法包括:
S401、服务端根据默认事件获取插件数据,插件数据包括插件的资源。
具体地,客户端检测到插件更新,向服务端发送更新请求;
服务端根据更新请求,获取插件数据。
可选的,在客户端检测插件更新之前,还包括:
获取自动下载和更新的权限。
当客户端主应用没有获取自动下载和更新权限时:
客户端检测到插件更新,向客户端用户发送更新请求;
客户端用户确认更新,向服务端发送更新请求;
服务端根据更新请求,获取插件数据。
客户端的主应用通过有线或无线网络与服务端建立连接,当主应用检测到服务端更新插件后,由于取得了客户端用户的自动下载和更新的授权,可以自动向服务端发送更新请求。
服务端根据更新请求,获取对应的插件数据。该插件数据一般包括代码逻辑和UI资源,其中,UI资源的获取可以是通过搜索服务端数据库直接提取,与代码逻辑一同发送客户端,也可以是只发送UI资源的路径信息,待客户端接收该路径信息后,通过网络下载该UI资源。
根据默认事件更新插件,可以及时的获取服务端的插件更新,同步服务端与客户端的插件数据,进一步提高运营商的动态运营能力。
S402、根据预设加载方式将所述插件数据加载至宿主内存。
具体地,本步骤与S202相同,在此不再具体赘述。
S403、客户端的主应用加载宿主内存中的插件数据,并替换相应的原始插件数据。
具体地,本步骤与S203相同,在此不再具体赘述。
本发明实施例提供了一种插件数据加载方法,通过设置主应用的默认事件,在检测到插件更新时可以自动向服务端发送插件更新请求,服务端获取插件数据。默认事件可以自动同步主应用和服务端的插件数据,进一步提高运营商的热发布和动态运营能力。
实施例五
本发明实施例提供了一种插件数据加载方法,参照图5所示,该方法包括:
S501、服务端根据用户指示或默认事件获取插件数据,插件数据包括插件的资源。
具体地,通过以下操作中的任意一个,实现服务端根据用户指示获取插件数据的步骤:
用户确认推送的插件信息,服务端获取插件数据;或者,
用户搜索插件,服务端获取插件数据。
实现客户端根据默认事件获取插件数据包括:
客户端检测到插件更新,向服务端发送更新请求;
服务端根据更新请求,获取插件数据。
具体地,S501与S201、S301和S401相同,可以根据需要选择S201、S301和S401三个步骤中的任意一个或多个的组合,在此不再赘述。
S502、将插件打包成开发者版本,主应用通过Android动态加载至宿主内存中。其中,插件包括Fragment插件或View插件。
具体地,服务端将插件打包成开发者版本;
服务端通过网络将开发者版本下发至客户端;
客户端主应用通过Android动态加载至宿主内存中。
其中,开发者版本中包括插件的数据,即插件的代码逻辑和UI资源。
其中,不同的插件对应不同的加载方式,在Java插件技术中,服务端将获取的插件数据打包成开发者版本,由于开发者版本能够获得更新主应用的权限,相当于主应用的版本更新,打包的插件即可与主应用兼容。
主应用采用Android动态加载技术,将接收的开发者版本动态加载至主应用宿主内存中。由于开发者版本中包括的UI资源可能包括全部UI资源数据,也可能包括UI资源的路径信息。当UI资源为路径信息时,主应用采用android动态加载插件包括:
根据UI资源的路径信息将对应的UI资源下载至客户端本地中;
Android动态加载技术将UI资源加载至主应用的宿主内存中。
采用Android动态加载技术减少了服务端对主应用接口兼容的压力,可以直接将插件作为主应用版本进行加载。
其中,Java插件类型是Fragment插件或View插件。
基于Android动态加载技术可以将Fragment插件和View插件加载至主应用的宿主内存中,可以实现Java类型插件的动态加载;将Fragment插件和View插件打包成开发者版本,也可以将提高与主应用的兼容性。
S503、客户端的主应用加载宿主内存中的插件数据,并替换相应的原始插件数据。
具体地,Android动态加载技术将插件加载至宿主内存中,主应用更新完毕或启动后,插件数据中的代码逻辑在主应用中载入执行,对应的调用插件数据中的UI资源替换主应用中的对应的原始UI资源。在主应用的页面Activity中,加载的Fragment插件或者View插件,可以通过上述动态替换的方式完成替换,显示加载后的Fragment插件或View插件。
可选的,宿主内存中加载的插件数据为代码逻辑和UI资源时,可以通过运行主应用直接将相应的页面Activity中的Fragment或View内容进行替换。
可选的,宿主内存中加载的插件数据为代码逻辑和UI资源的路径时,将下载的UI资源加载至宿主内存中,然后根据代码逻辑的调用替换原始UI资源并显示。
本发明实施例提供的一种插件数据加载方法,通过采用android动态加载技术将基于Java的Fragment插件和View插件加载至主应用的内存中,可以实现Java类型插件的加载,同时开发者版本也可以提高与主应用的系统兼容性,保证能够正常的加载插件和显示插件资源。
实施例六
本发明实施例提供了一种插件数据加载方法,参照图6所示,该方法包括:
S601、服务端根据用户指示或默认事件获取插件数据,插件数据包括插件的资源。
具体地,通过以下操作中的任意一个,实现服务端根据用户指示获取插件数据的步骤:
用户确认推送的插件信息,服务端获取插件数据;或者,
用户搜索插件,服务端获取插件数据。
实现客户端根据默认事件获取插件数据包括:
客户端检测到插件更新,向服务端发送更新请求;
服务端根据更新请求,获取插件数据。
具体地,S601与S201、S301和S401相同,可以根据需要选择S201、S301和S401三个步骤中的任意一个或多个的组合,在此不再赘述。
S602、根据预设协议,将插件通过React Native加载框架加载至宿主内存中。其中,插件包括View插件。
具体地,根据预设协议,服务端将React Native插件下载至客户端;
客户端的主应用接收上述插件后,根据React Native加载框架,将ReactNative插件加载至宿主内存中。
其中,React Native插件采用Facebook发布的React Native技术开发。在页面Activity中,每个React Native插件对应一个View,将React Native加载至宿主内存中,可以实现对页面Activity中的View的加载。
其中,预设协议是采用React Native技术搭建的在客户端的主应用与服务端之间的协议。通过该协议可以从服务端下载React Native插件至客户端主应用中。
通过React Native加载框架可以将基于React Native技术开发的React Native插件加载至宿主内存中,进一步提高本发明专利适用范围,扩展主应用的动态发布和运营能力。
S603、客户端的主应用加载宿主内存中的插件数据,并替换相应的原始插件数据。
具体地,主应用加载宿主内存中的React Native插件数据。其中,通过服务端下发至客户端的React Native插件对应一个ID,通过该ID即可查找到对应的React Native插件。
在下载和加载React Native插件时,通过暴露路由器适配接口,可以快速兼容的将React Native插件加载至宿主内存中。通过与页面Activity中的View相对应的特性,React Native插件可以将其中包括的UI资源替换主应用中的原始UI,即将View替换为React Native插件数据。
本发明实施例提供的一种插件数据加载方法,通过采用React Native框架可以将React Native插件进行加载和替换,进一步提高本发明加载插件的应用范围,提高动态运营能力。
实施例七
本发明实施例提供了一种插件数据加载方法,参照图7所示,该方法包括:
S701、服务端根据用户指示或默认事件获取插件数据,插件数据包括插件的资源。
具体地,通过以下操作中的任意一个,实现服务端根据用户指示获取插件数据的步骤:
用户确认推送的插件信息,服务端获取插件数据;或者,
用户搜索插件,服务端获取插件数据。
实现客户端根据默认事件获取插件数据包括:
客户端检测到插件更新,向服务端发送更新请求;
服务端根据更新请求,获取插件数据。
具体地,S701与S201、S301和S401相同,可以根据需要选择S201、S301和S401三个步骤中的任意一个或多个的组合,在此不再赘述。
S702、启动Proxy Activity代理和DL ProxyImpl代理,将插件数据载入到宿主内存中。其中,插件包括Activity插件或Service插件。
由于Activity插件或Service插件级别不同于Fragment和View插件,在热发布时,同样面临不同的技术问题,通过对比不同的插件化框架后,本实施例确定将DL作为Activity插件或Service插件的基础。
具体地,根据插件数据的路径构建资源管理框架AssetManager,将其资源所在的路径添加到AssetManager中,然后通过AssetManager构建一个Resources对象,这个对象就是插件的资源对象。
Activity插件或Service插件的生命周期通过Proxy Activity代理,可以实现对生命周期的管理;DL ProxyImpl可以控制插件的启动和资源访问。启动ProxyActivity代理和DL ProxyImpl代理后,即可启动Activity插件或Service插件,将其对应的插件资源加载至宿主内存中。
通过启动Proxy Activity代理和DL ProxyImpl代理的方式来完成Activity插件或Service插件加载至宿主内存中,可以在解决资源访问的同时,进一步提高Activity插件或Service插件的加载效率和显示。
S703、客户端的主应用加载宿主内存中的插件数据,并替换相应的原始插件数据。
具体地,加载至宿主内存中的Activity插件或Service插件,在主应用启动或更新完成后即可直接调用插件数据,替换原始的Activity插件或Service插件。
值得注意的是,代理的方式加载Activity插件或Service插件中,资源访问的是资源所在的路径,在显示Activity插件或Service插件对应的UI资源时,需要按照路径将插件资源加载至主应用的Activity页面或Service页面上。
本发明实施例提供了一种插件数据加载方法,通过代理的方式加载Activity插件或Service插件,可以保证顺利访问资源的同时将Activity和Service级别的插件加载至宿主内存中并显示,提高插件加载的效率,进一步提高主应用的动态运营能力。
实施例八
本发明实施例提供了一种插件数据加载设备,参照图8所示,该设备包括:
获取模块810,用于服务端根据用户指示或默认事件获取插件数据,插件数据包括插件的资源;
加载模块820,用于根据预设加载方式将插件数据加载至宿主内存;
替换模块830,用于客户端的主应用加载宿主内存中的插件数据,并替换相应的原始插件数据。
可选的,获取模块810具体包括:
第一获取模块811,用于用户确认推送的插件信息,服务端获取插件数据。
第二获取模块812,用于用户搜索插件,服务端获取插件数据。
可选的,获取模块810还包括更新模块813,具体用于:
客户端检测到插件更新,向服务端发送更新请求;
服务端根据更新请求,获取插件数据。
可选的,加载模块820包括:
打包模块821,用于将插件打包成开发者版本;
动态加载模块822,用于主应用通过Android动态加载至宿主内存中;其中,插件包括Fragment插件或View插件。
可选的,加载模块820还包括:
React Native加载模块823,用于根据预设协议,将插件通过React Native加载框架加载至宿主内存中;其中,插件包括View插件。
可选的,加载模块820还包括:
代理加载模块824,用于启动Proxy Activity代理和DL ProxyImpl代理,将插件数据载入到宿主内存中;其中,插件包括Activity插件或Service插件。
本发明实施例提供了一种插件数据加载设备,通过获取模块810服务端根据用户指示或默认事件获取插件数据,能够根据不同的方式获取插件数据,提高本方法的应用范围;通过加载模块820根据预设加载方式将插件数据加载至宿主内存中,能够将不同类型的插件数据加载至宿主内存中,当主应用加载插件数据时可以直接从宿主内存中加载,进一步提高加载效率;通过替换模块830客户端的主应用加载宿主内存中的插件数据,并替换相应的原始插件数据,能够将主应用中的原始插件数据进行替换,完成主应用的热发布,进一步提高主应用的动态运营能力。
实施例九
本发明实施例提供了一种电子设备,参照图9所示,该设备包括存储器910,以及与存储器910连接的处理器920,其中,存储器910用于存储一组程序代码,处理器920调用存储器910所存储的程序代码用于执行以下操作:
服务端根据用户指示或默认事件获取插件数据,插件数据包括插件的资源;
根据预设加载方式将插件数据加载至宿主内存;
客户端的主应用加载宿主内存中的插件数据,并替换相应的原始插件数据。
可选的,处理器920调用存储器910所存储的程序代码用于执行以下操作:
用户确认推送的插件信息,服务端获取插件数据;或者,
用户搜索插件,服务端获取插件数据。
可选的,处理器920调用存储器910所存储的程序代码用于执行以下操作:
客户端检测到插件更新,向服务端发送更新请求;
服务端根据更新请求,获取插件数据。
可选的,处理器920调用存储器910所存储的程序代码用于执行以下操作:
将插件打包成开发者版本;
主应用通过Android动态加载至宿主内存中;其中,插件包括Fragment插件或View插件。
可选的,处理器920调用存储器910所存储的程序代码用于执行以下操作:
根据预设协议,将插件通过React Native加载框架加载至宿主内存中;其中,插件包括View插件。
可选的,处理器920调用存储器910所存储的程序代码用于执行以下操作:
启动Proxy Activity代理和DL ProxyImpl代理,将插件数据载入到宿主内存中;其中,插件包括Activity插件或Service插件。
本发明实施例提供了一种插件数据加载设备,通过处理器920调用存储器910所存储的程序代码用于执行以下操作,服务端根据用户指示或默认事件获取插件数据,能够根据不同的方式获取插件数据,提高本方法的应用范围;根据预设加载方式将插件数据加载至宿主内存中,能够将不同类型的插件数据加载至宿主内存中,当主应用加载插件数据时可以直接从宿主内存中加载,进一步提高加载效率;客户端的主应用加载宿主内存中的插件数据,并替换相应的原始插件数据,能够将主应用中的原始插件数据进行替换,完成主应用的热发布,进一步提高主应用的动态运营能力。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的设备在执行时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的设备与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (12)

1.一种插件数据加载方法,其特征在于,所述方法包括:
服务端根据用户指示或默认事件获取插件数据,所述插件数据包括所述插件的资源;
根据预设加载方式将所述插件数据加载至宿主内存;
所述客户端的主应用加载所述宿主内存中的所述插件数据,并替换相应的原始插件数据。
2.根据权利要求1所述的方法,其特征在于,通过以下操作中的任意一个,实现所述服务端根据用户指示获取插件数据的步骤:
用户确认推送的所述插件信息,所述服务端获取所述插件数据;或者,
用户搜索所述插件,所述服务端获取所述插件数据。
3.根据权利要求1所述的方法,其特征在于,所述根据默认事件获取插件数据包括:
所述客户端检测到插件更新,向所述服务端发送更新请求;
所述服务端根据所述更新请求,获取所述插件数据。
4.根据权利要求1所述的方法,其特征在于,所述根据预设加载方式将所述插件数据加载至宿主内存包括:
将所述插件打包成开发者版本;
所述客户端的主应用通过Android动态加载至所述宿主内存中;其中,所述插件包括Fragment插件或View插件。
5.根据权利要求1所述的方法,其特征在于,所述根据预设加载方式将所述插件数据加载至宿主内存包括:
根据预设协议,将所述插件通过React Native加载框架加载至所述宿主内存中;其中,所述插件包括View插件。
6.根据权利要求1所述的方法,其特征在于,所述根据预设加载方式将所述插件数据加载至宿主内存包括:
启动Proxy Activity代理和DL ProxyImpl代理,将所述插件数据载入到所述宿主内存中;其中,所述插件包括Activity插件或Service插件。
7.一种插件数据加载设备,其特征在于,所述设备包括:
获取模块,用于服务端根据用户指示或默认事件获取插件数据,所述插件数据包括所述插件的资源;
加载模块,用于根据预设加载方式将所述插件数据加载至宿主内存;
替换模块,用于所述客户端的主应用加载所述宿主内存中的所述插件数据,并替换相应的原始插件数据。
8.根据权利要求7所述的设备,其特征在于,所述获取模块具体包括:
第一获取模块,用于用户确认推送的所述插件信息,所述服务端获取所述插件数据;或者,
第二获取模块,用于用户搜索所述插件,所述服务端获取所述插件数据。
9.根据权利要求7所述的设备,其特征在于,所述获取模块还包括更新模块,具体用于:
所述客户端检测到插件更新,向所述服务端发送更新请求;
所述服务端根据所述更新请求,向获取所述插件数据。
10.根据权利要求7所述的设备,其特征在于,所述加载模块包括:
打包模块,用于将所述插件打包成开发者版本;
动态加载模块,用于所述主应用通过Android动态加载至所述宿主内存中;其中,所述插件包括Fragment插件或View插件。
11.根据权利要求7所述的设备,其特征在于,所述加载模块还包括:
React Native加载模块,用于根据预设协议,将所述插件通过React Native加载框架加载至所述宿主内存中;其中,所述插件包括View插件。
12.根据权利要求7所述的设备,其特征在于,所述加载模块还包括:
代理加载模块,用于启动Proxy Activity代理和DL ProxyImpl代理,将所述插件数据载入到所述宿主内存中;其中,所述插件包括Activity插件或Service插件。
CN201610782574.8A 2016-08-31 2016-08-31 一种插件数据加载方法及设备 Pending CN106371874A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610782574.8A CN106371874A (zh) 2016-08-31 2016-08-31 一种插件数据加载方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610782574.8A CN106371874A (zh) 2016-08-31 2016-08-31 一种插件数据加载方法及设备

Publications (1)

Publication Number Publication Date
CN106371874A true CN106371874A (zh) 2017-02-01

Family

ID=57899175

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610782574.8A Pending CN106371874A (zh) 2016-08-31 2016-08-31 一种插件数据加载方法及设备

Country Status (1)

Country Link
CN (1) CN106371874A (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107015800A (zh) * 2017-03-14 2017-08-04 宇龙计算机通信科技(深圳)有限公司 显示方法、装置及设备
CN107347179A (zh) * 2017-03-28 2017-11-14 吉林市东杰科技开发有限公司 一种基于ReactNative实现LBS的方法
CN109408142A (zh) * 2018-10-12 2019-03-01 南瑞集团有限公司 基于jsbundle实现H5页面高性能安全加载的方法
CN109656592A (zh) * 2018-12-06 2019-04-19 Oppo广东移动通信有限公司 卡片管理方法、装置、终端及计算机可读存储介质
CN109857489A (zh) * 2017-11-30 2019-06-07 阿里巴巴集团控股有限公司 基于Android系统的开发系统、解耦方法和装置
CN109857403A (zh) * 2018-12-05 2019-06-07 腾讯科技(深圳)有限公司 一种页面更新、页面处理方法及装置
CN109976515A (zh) * 2019-03-11 2019-07-05 百度在线网络技术(北京)有限公司 一种信息处理方法、装置、车辆及计算机可读存储介质
CN110489138A (zh) * 2019-07-02 2019-11-22 招联消费金融有限公司 一种应用更新方法、装置和存储介质
CN110908726A (zh) * 2018-09-14 2020-03-24 广州神马移动信息科技有限公司 数据管理方法、装置、设备及计算机可读存储介质
CN111090442A (zh) * 2019-11-11 2020-05-01 腾讯音乐娱乐科技(深圳)有限公司 一种应用更新方法、装置和存储介质
CN111338708A (zh) * 2020-02-25 2020-06-26 安徽以萨数据技术有限公司 基于安卓插件的应用程序处理方法、客户端及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103716346A (zh) * 2012-09-29 2014-04-09 北京神州泰岳软件股份有限公司 一种安卓手机客户端上应用的管理方法和装置
CN104216741A (zh) * 2014-08-25 2014-12-17 华中科技大学 基于APK动态加载的Android插件化实现方法、装置及交互方法
CN104714828A (zh) * 2015-03-31 2015-06-17 北京奇虎科技有限公司 应用安装、运行方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103716346A (zh) * 2012-09-29 2014-04-09 北京神州泰岳软件股份有限公司 一种安卓手机客户端上应用的管理方法和装置
CN104216741A (zh) * 2014-08-25 2014-12-17 华中科技大学 基于APK动态加载的Android插件化实现方法、装置及交互方法
CN104714828A (zh) * 2015-03-31 2015-06-17 北京奇虎科技有限公司 应用安装、运行方法及装置

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107015800A (zh) * 2017-03-14 2017-08-04 宇龙计算机通信科技(深圳)有限公司 显示方法、装置及设备
CN107347179A (zh) * 2017-03-28 2017-11-14 吉林市东杰科技开发有限公司 一种基于ReactNative实现LBS的方法
CN109857489A (zh) * 2017-11-30 2019-06-07 阿里巴巴集团控股有限公司 基于Android系统的开发系统、解耦方法和装置
CN110908726A (zh) * 2018-09-14 2020-03-24 广州神马移动信息科技有限公司 数据管理方法、装置、设备及计算机可读存储介质
CN109408142A (zh) * 2018-10-12 2019-03-01 南瑞集团有限公司 基于jsbundle实现H5页面高性能安全加载的方法
CN109857403A (zh) * 2018-12-05 2019-06-07 腾讯科技(深圳)有限公司 一种页面更新、页面处理方法及装置
CN109656592A (zh) * 2018-12-06 2019-04-19 Oppo广东移动通信有限公司 卡片管理方法、装置、终端及计算机可读存储介质
CN109976515A (zh) * 2019-03-11 2019-07-05 百度在线网络技术(北京)有限公司 一种信息处理方法、装置、车辆及计算机可读存储介质
CN109976515B (zh) * 2019-03-11 2023-07-07 阿波罗智联(北京)科技有限公司 一种信息处理方法、装置、车辆及计算机可读存储介质
CN110489138A (zh) * 2019-07-02 2019-11-22 招联消费金融有限公司 一种应用更新方法、装置和存储介质
CN111090442A (zh) * 2019-11-11 2020-05-01 腾讯音乐娱乐科技(深圳)有限公司 一种应用更新方法、装置和存储介质
CN111338708A (zh) * 2020-02-25 2020-06-26 安徽以萨数据技术有限公司 基于安卓插件的应用程序处理方法、客户端及系统

Similar Documents

Publication Publication Date Title
CN106371874A (zh) 一种插件数据加载方法及设备
EP2021937B1 (en) Techniques to perform gradual upgrades
CN102622241B (zh) 一种软件升级方法及装置
US8589909B2 (en) Techniques for reducing down time in updating applications with metadata
CN101650659B (zh) XPe操作系统中自动安装保存Activex控件的装置及其方法
US8418169B2 (en) Management method for managing software module and information processor
CN102262544A (zh) 软件升级的方法和装置
US20110107137A1 (en) System and method for providing automated support to electronic devices
CN103092665A (zh) 即时更新装置和即时更新方法
CN106445663A (zh) 应用数据的迁移方法及装置
CN100421072C (zh) 实现软件升级的方法
CN102291437A (zh) 跨平台互联网应用的实现系统及方法
CN106502646A (zh) 应用的页面信息处理方法及装置
CN101546269A (zh) 可执行文件版本更新系统及方法
CN102833350A (zh) WebApp更新的处理方法和处理装置
CN102970346A (zh) 浏览器进行软件下载的方法和浏览器
CN104468811B (zh) 升级方法及装置
CN112764751A (zh) 接口生成方法和装置、接口请求方法和装置及存储介质
CN106569863A (zh) 基于资源和代码模块化的安卓app资源更新和修复的方法
CN112835568A (zh) 一种项目构建方法和装置
CN107766063A (zh) 一种批量升级软件的方法及系统
CN106484458A (zh) 一种开放型软件仓库管理系统及其管理方法
CN111158777B (zh) 组件调用方法、装置及计算机可读存储介质
CN105653341A (zh) 一种网络发票客户端的升级方法、装置及系统
CN104077168A (zh) 一种为终端更新操作系统的方法及设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20170201