一种插件加载方法、装置及计算机可读存储介质制造方法及图纸

技术编号:18860493 阅读:33 留言:0更新日期:2018-09-05 14:08
本发明专利技术公开了插件加载方法、装置及计算机可读存储介质,属于通讯技术领域。所述方法包括A、从服务器下载应用程序APP的插件安装包;B、为所述插件安装包构建类加载器,所述类加载器与已存在的类加载器相互独立;C、加载所述插件安装包。采用本发明专利技术,无需升级APP就能实现快速扩展APP功能的目的,提升了用户体验。

Plug-in loading method, device and computer readable storage medium

The invention discloses a plug-in loading method, a device and a computer readable storage medium, belonging to the field of communication technology. The method comprises A, downloading the plug-in installation package of application program APP from the server, B, constructing a class loader for the plug-in installation package, which is independent of the existing class loader, and C, loading the plug-in installation package. By adopting the invention, the purpose of rapidly expanding the function of APP can be realized without upgrading the APP, and the user experience can be improved.

【技术实现步骤摘要】
一种插件加载方法、装置及计算机可读存储介质
本专利技术涉及通讯
,尤其涉及一种插件加载方法、装置及计算机可读存储介质。
技术介绍
随着移动应用的普及以及产品新功能的不断添加,业务逻辑越来越复杂,需要对应用程序(Application,APP)不断的进行功能扩展,每次APP功能扩展都需要发布新版本,此时,所有的模块必须同步开发,重新打包App、测试,然后在各大市场发布,这种传统的开发模式已经不能适应快速迭代的移动互联网行业,因此,现有技术大多采用插件实现对APP功能的扩展。但是,客户端为了如果要加载插件,仍然需要重新下载APP安装包将APP升级到最新版本,用户体验不好。因此,有必要提供一种插件加载方法、装置及计算机可读存储介质。
技术实现思路
有鉴于此,本专利技术的目的在于提供一种插件加载方法、装置及计算机可读存储介质,以解决现有客户端加载插件时需要重新下载APP安装包将APP升级到最新版本,用户体验不好的问题。本专利技术解决上述技术问题所采用的技术方案如下:根据本专利技术的第一个方面,提供一种插件加载方法,所述插件加载方法包括以下步骤:A、从服务器下载应用程序APP的插件安装包;B、为所述插件安装包构建类加载器,所述类加载器与已存在的类加载器相互独立;C、加载所述插件安装包。可选的,所述步骤B,包括:指定所述插件安装包的路径并构建LoadApk对象,所述LoadApk对象中包含所述类加载器;将所述LoadApk对象插入到与所述APP对应的系统程序中。可选的,所述将所述LoadApk对象插入到与所述APP对应的系统程序中,包括:通过Hook技术,将所述LoadApk对象插入到与所述APP对应的系统程序中。可选的,所述步骤C包括:导入所述插件安装包的路径,获得所述插件安装包的资源信息;根据所述资源信息运行所述插件。可选的,所述从服务器下载应用程序APP的插件安装包之前,所述方法还包括:向所述服务器发起请求,所述请求包括本地所述App的版本信息和插件安装包的版本信息;当所述服务器存在对应的插件安装包时,下载所述插件安装包;可选的,所述加载所述插件安装包之后,所述方法还包括:向所述服务器上报所述插件安装包的功能扩展状态。可选的,执行步骤B之前,所述方法还包括:对所述插件安装包进行安全性检测;若所述插件安装包通过了所述安全性检测,则执行步骤B。根据本专利技术的第二个方面,提供一种插件加载装置,所述插件加载装置包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面所述的方法的步骤。根据本专利技术的第三个方面,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的插件加载方法的步骤。本专利技术实施例的插件加载方法、装置及计算机可读存储介质,在下载了插件安装后,为下载的插件安装包构建一个完全独立于本地宿主应用APK的类加载器,即使不同的插件使用了同一个库的不同版本,插件之间也互不影响,因此无需升级APP就能实现快速扩展APP功能的目的,提升了用户体验。附图说明图1为本专利技术实施例中插件化功能扩展的总体架构图;图2为本地宿主应用APK的模块结构示意图;图3为本专利技术实施例一提供的一种插件加载方法的流程图;图4为各个类加载器之间的数据结构示意图;图5为LoadApk对象的构建结构示意图;图6为利用Hook技术将插件的loadApk对象插入到ActivityThread的结构示意图;图7为本专利技术实施例二提供的一种插件加载装置的模块结构示意图。本专利技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本专利技术的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。实际应用中,插件安装包的加载涉及客户端和服务器两部分,如图1所示,客户端负责下载、更新插件安装包pluginAPK,并动态加载pluginAPK以实现功能的动态增加;服务器则需要对pluginAPK进行管理和分发。客户端通过本地宿主应用APK(Host)实现下载、更新插件安装包pluginAPK,并动态加载pluginAPK以实现功能的动态增加。请参阅图2,(Host)结构分为3大部分:本地宿主应用APK、插件开发包(SoftwareDevelopmentKit,SDK)、pluginAPK。其中,本地宿主应用APK负责与服务器的通信、管理pluginAPK,动态加载pluginAPK等;pluginAPK为独立的APP,一般实现相对独立简单的小功能;插件SDK是本地宿主应用APK动态加载pluginAPK所依赖的库。本专利技术本实施例主要对客户端的插件加载方法进行说明。本专利技术实施例一提供了一种插件加载方法,适用于客户端,请参阅图3,该插件加载方法包括以下步骤:S301、从服务器下载应用程序APP的插件安装包;S302、为该插件安装包构建类加载器,该类加载器与已存在的类加载器相互独立,该已存在的类加载器包括本地宿主应用APK(Host)的类加载器和/或其他已下载的插件安装包的类加载器;S303、加载该插件安装包。实际应用中,为了实现对pluginAPK的动态加载,需要解决类的加载和资源的加载的问题。因此本实施例中,为每个pluginAPK构建独立的类加载器ClassLoader和资源加载器。在一个可行的方案中,该步骤S302,包括:指定该插件安装包的路径并构建LoadApk对象,该LoadApk对象中包含该类加载器;将该LoadApk对象插入到与该APP对应的系统程序中。实际应用中,通过DexClassLoader加载插件的代码,需要传入插件apk的路径DexClassLoader(dex文件路径列表dexPath,dexOutputPath,mNativeLibDir,mContext.getClassLoader())。在加载与APP对应的系统应用程序的组件Activity的时候,有一个很重要的类:LoadedApk.java,这个类是负责加载一个Apk程序,其内部包含一个ClassLoader成员变量,用来加载.class文件。同时还有一个类主线程ActivityThread.java,ActivityThread里面有个静态的成员变量sCurrentActivityThread,同时还需要一个ArrayMap存放Apk包名和LoadedApk映射关系的数据结构,各个类加载器之间的数据结构如图4所示。因此,本实施例中,首先指定插件APK路径构建LoadApk对象,构建结果如图5所示,在LoadApk对象中,包含了上述信息内容。再通过钩子Hook技术将插件的loadApk对象插入到ActivityThread中,得到如图6所示的结构。从图6可以看出,各个LoadApk对象的ClasssLoader可以不相同,既相互独立。这样,就可以通过Hook为插件构造一个完全独立于Host的ClasssLoader,每一个插件都有一个自己的ClassLoader,因此本文档来自技高网...

【技术保护点】
1.一种插件加载方法,其特征在于,所述插件加载方法包括以下步骤:A、从服务器下载应用程序APP的插件安装包;B、为所述插件安装包构建类加载器,所述类加载器与已存在的类加载器相互独立;C、加载所述插件安装包。

【技术特征摘要】
1.一种插件加载方法,其特征在于,所述插件加载方法包括以下步骤:A、从服务器下载应用程序APP的插件安装包;B、为所述插件安装包构建类加载器,所述类加载器与已存在的类加载器相互独立;C、加载所述插件安装包。2.如权利要求1所述的插件加载方法,其特征在于,所述步骤B,包括:指定所述插件安装包的路径并构建LoadApk对象,所述LoadApk对象中包含所述类加载器;将所述LoadApk对象插入到与所述APP对应的系统程序中。3.如权利要求2所述的方法,其特征在于,所述将所述LoadApk对象插入到与所述APP对应的系统程序中,包括:通过Hook技术,将所述LoadApk对象插入到与所述APP对应的系统程序中。4.如权利要求1所述的插件加载方法,其特征在于,所述步骤C包括:导入所述插件安装包的路径,获得所述插件安装包的资源信息;根据所述资源信息运行所述插件。5.如权利要求1至4任一项所述的插件加载方法,其特征在于,所述从服务器下载应用程序APP的...

【专利技术属性】
技术研发人员:黄小峰
申请(专利权)人:努比亚技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1