CN109933335A - 一种混合开发模式下增删功能特性的插件方法 - Google Patents
一种混合开发模式下增删功能特性的插件方法 Download PDFInfo
- Publication number
- CN109933335A CN109933335A CN201910205770.2A CN201910205770A CN109933335A CN 109933335 A CN109933335 A CN 109933335A CN 201910205770 A CN201910205770 A CN 201910205770A CN 109933335 A CN109933335 A CN 109933335A
- Authority
- CN
- China
- Prior art keywords
- plug
- unit
- functional characteristic
- deletions
- additions
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 76
- 238000007792 addition Methods 0.000 title claims abstract description 27
- 238000012217 deletion Methods 0.000 title claims abstract description 24
- 230000037430 deletion Effects 0.000 title claims abstract description 24
- 230000007246 mechanism Effects 0.000 claims description 7
- 230000010076 replication Effects 0.000 claims description 5
- 238000011161 development Methods 0.000 abstract description 6
- 238000011982 device technology Methods 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000009434 installation Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种混合开发模式下增删功能特性的插件方法,属于移动设备技术领域。本发明的混合开发模式下增删功能特性的插件方法,具体包括以下步骤:S1、定义插件注解;S2、增加插件注解;S3、增加、删除功能特性;S4、应用启动扫描并初始化插件;S5、应用调用插件。该发明的混合开发模式下增删功能特性的插件方法不仅实现功能的可插拔特性,无需任何配置,而且大大增加开发效率,支持多平台架构,具有很好的推广应用价值。
Description
技术领域
本发明涉及移动设备技术领域,具体提供一种混合开发模式下增删功能特性的插件方法。
背景技术
在传统的移动开发过程中,每个APP的业务需求不一样,框架需要提供的功能也不一样,同时随着项目的增加,框架所实现的通用功能会逐渐积累。如果将所有已经实现的功能都封装到框架中,将会导致业务需求简单的APP安装包过大;如果动态增加或删除,不仅需要配置繁琐的配置项,还增加培训、文档等额外工作量,降低开发效率。
发明内容
本发明的技术任务是针对上述存在的问题,提供一种不仅实现功能的可插拔特性,无需任何配置,而且大大增加开发效率,支持多平台架构的混合开发模式下增删功能特性的插件方法。
为实现上述目的,本发明提供了如下技术方案:
一种混合开发模式下增删功能特性的插件方法,该方法具体包括以下步骤:
S1、定义插件注解;
S2、增加插件注解;
S3、增加、删除功能特性;
S4、应用启动扫描并初始化插件;
S5、应用调用插件。
该混合开发模式下增删功能特性的插件方法适用于基于原生APP的Webview组件(Android)、UIWebView(IOS)组件的混合开发模式,只需引入对应lib包,即可通过js调用其实现功能。无需配置文件,提供了更加灵活功能特性增删方式,提高了开发效率、降低应用安装包大小。
该方法支持跨平台,包括Android、IOS、Windows Phone,在Android系统中,将提供给JavaScript调用的实现类,通过注解的方式在APP启动时,维护实现类名称与实现类路径的关联关系,调用时通过java的反射机制调用实现类中的指定方法;在IOS系统中,系统支持通过实现类名称直接调用其内部方法。
作为优选,步骤S1中定义插件注解包括定义插件类注解和插件方法注解。
作为优选,步骤S2中,在要实现的功能插件上,添加插件类注解和插件方法注解,功能实现类放于同一路径下,在功能实现类上增加插件类注解,在功能实现方法上增加插件方法注解。功能实现类统一放在一个包名路径下,在功能实现类上增加插件类注解,在对外暴露的API方法上增加插件方法注解。为方便、灵活、统一的调用原生功能,插件方法支持无传递参数或1个JSON格式参数两种格式,具体参数统一在JSON参数中传递。
作为优选,步骤S3中,增加功能特性时,将功能实现jar包复制到应用的lib文件夹下。
作为优选,步骤S3中,删除功能特性时,将功能实现jar包从应用的lib文件夹下删除。
作为优选,所述lib文件包括基础lib文件和扩展lib文件。
支持基础lib,即直接将jar包导入应用工程中,支持扩展lib,即将功能项目当做lib导入应用工程中。
作为优选,步骤S4中应用在启动时,扫描指定包名路径下所有带插件类注解的实现类,执行初始化操作后记录。
作为优选,步骤S5中,采用JavaScript调用插件,首先判断插件是否记录、插件类是否存在,若插件类存在则判断调用的方法是否有插件方法注解,若有通过反射机制调用插件。
通过JavaScript中提供统一的原生交互接口,只需一行JavaScript代码即可调用对应功能。JavaScript调用插件方法时,首先判断插件是否记录、插件类是否存在,即是否将插件功能实现jar包复制到应用的lib文件夹下。如果存在再判断调用的方法是否有插件方法注解,安全考虑只允许调用有注解的方法。最终通过反射机制调用实现类中的功能方法。插件功能提供两种回调方式,用来对JavaScript端的业务需求进行不同的处理。对于同步回调,在原生功能中直接用“return”的方式返回;对于异步回调,在原生功能中调用JSON格式中的提供的回调方法,回调JavaScript中的回调函数返回处理值。
与现有技术相比,本发明的混合开发模式下增删功能特性的插件方法具有以下突出的有益效果:所述混合开发模式下增删功能特性的插件方法不仅实现功能的可拔插特性,无需配置任何文件,提供了更加灵活功能特性增删方式,提高了开发效率,支持多平台架构,降低应用安装包大小,具有良好的推广应用价值。
附图说明
图1是本发明所述混合开发模式下增删功能特性的插件方法的流程图。
具体实施方式
下面将结合附图和实施例,对本发明的混合开发模式下增删功能特性的插件方法作进一步详细说明。
实施例
如图1所示,本发明的混合开发模式下增删功能特性的插件方法,该方法支持跨平台,包括Android、IOS、Windows Phone,在Android系统中,将提供给JavaScript调用的实现类,通过注解的方式在APP启动时,维护实现类名称与实现类路径的关联关系,调用时通过java的反射机制调用实现类中的指定方法;在IOS系统中,系统支持通过实现类名称直接调用其内部方法。
具体包括以下步骤:
S1、定义插件注解。
定义插件注解包括定义插件类注解和插件方法注解。
定义插件类注解的过程代码如下:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public@interface CMPlugin{
}
定义插件方法注解的过程代码如下:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public@interface CMPluginMethod{
}
S2、增加插件注解。
在要实现的功能插件上,添加插件类注解和插件方法注解,功能实现类放于同一路径下,在功能实现类上增加插件类注解,在功能实现方法上增加插件方法注解。功能实现类统一放在一个包名路径下,在功能实现类上增加插件类注解,在对外暴露的API方法上增加插件方法注解。为方便、灵活、统一的调用原生功能,插件方法支持无传递参数或1个JSON格式参数两种格式,具体参数统一在JSON参数中传递。过程代码如下:
S3、增加、删除功能特性。
增加功能特性时,将功能实现jar包复制到应用的lib文件夹下。
删除功能特性时,将功能实现jar包从应用的lib文件夹下删除。
lib文件包括基础lib文件和扩展lib文件。
支持基础lib,即直接将jar包导入应用工程中,支持扩展lib,即将功能项目当做lib导入应用工程中。
S4、应用启动扫描并初始化插件。
应用在启动时,扫描指定包名路径下所有带插件类注解的实现类,执行初始化操作后记录。
以Android为例该过程的代码如下:
以IOS为例该过程的代码如下:
S5、应用调用插件。
采用JavaScript调用插件,首先判断插件是否记录、插件类是否存在,若插件类存在则判断调用的方法是否有插件方法注解,若有通过反射机制调用插件。
通过JavaScript中提供统一的原生交互接口,只需一行JavaScript代码即可调用对应功能。JavaScript调用插件方法时,首先判断插件是否记录、插件类是否存在,即是否将插件功能实现jar包复制到应用的lib文件夹下。如果存在再判断调用的方法是否有插件方法注解,安全考虑只允许调用有注解的方法。最终通过反射机制调用实现类中的功能方法。插件功能提供两种回调方式,用来对JavaScript端的业务需求进行不同的处理。对于同步回调,在原生功能中直接用“return”的方式返回;对于异步回调,在原生功能中调用JSON格式中的提供的回调方法,回调JavaScript中的回调函数返回处理值。
以Android为例该过程的代码如下:
以IOS为例该过程的代码如下:
由于插件继承于CMPlugins,故执行execute方法进行插件的调用。
以上所述的实施例,只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
Claims (8)
1.一种混合开发模式下增删功能特性的插件方法,其特征在于:该方法具体包括以下步骤:
S1、定义插件注解;
S2、增加插件注解;
S3、增加、删除功能特性;
S4、应用启动扫描并初始化插件;
S5、应用调用插件。
2.根据权利要求1所述的混合开发模式下增删功能特性的插件方法,其特征在于:步骤S1中定义插件注解包括定义插件类注解和插件方法注解。
3.根据权利要求1或2所述的混合开发模式下增删功能特性的插件方法,其特征在于:步骤S2中,在要实现的功能插件上,添加插件类注解和插件方法注解,功能实现类放于同一路径下,在功能实现类上增加插件类注解,在功能实现方法上增加插件方法注解。
4.根据权利要求3所述的混合开发模式下增删功能特性的插件方法,其特征在于:步骤S3中,增加功能特性时,将功能实现jar包复制到应用的lib文件夹下。
5.根据权利要求4所述的混合开发模式下增删功能特性的插件方法,其特征在于:步骤S3中,删除功能特性时,将功能实现jar包从应用的lib文件夹下删除。
6.根据权利要求5所述的混合开发模式下增删功能特性的插件方法,其特征在于:所述lib文件包括基础lib文件和扩展lib文件。
7.根据权利要求6所述的混合开发模式下增删功能特性的插件方法,其特征在于:步骤S4中应用在启动时,扫描指定包名路径下所有带插件类注解的实现类,执行初始化操作后记录。
8.根据权利要求7所述的混合开发模式下增删功能特性的插件方法,其特征在于:步骤S5中,采用JavaScript调用插件,首先判断插件是否记录、插件类是否存在,若插件类存在则判断调用的方法是否有插件方法注解,若有通过反射机制调用插件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910205770.2A CN109933335A (zh) | 2019-03-18 | 2019-03-18 | 一种混合开发模式下增删功能特性的插件方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910205770.2A CN109933335A (zh) | 2019-03-18 | 2019-03-18 | 一种混合开发模式下增删功能特性的插件方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109933335A true CN109933335A (zh) | 2019-06-25 |
Family
ID=66987582
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910205770.2A Pending CN109933335A (zh) | 2019-03-18 | 2019-03-18 | 一种混合开发模式下增删功能特性的插件方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109933335A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110673890A (zh) * | 2019-09-11 | 2020-01-10 | 天翼电子商务有限公司 | 插件调用方法、系统、介质及装置 |
CN112020243A (zh) * | 2020-07-07 | 2020-12-01 | 安徽天能清洁能源科技有限公司 | 一种插件可灵活增删的微网中央控制器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033743A (zh) * | 2010-09-02 | 2011-04-27 | 西安赛斐软件科技有限公司 | 一种应用插件扩充模型驱动开发能力的系统及其方法 |
US20110258526A1 (en) * | 2010-04-20 | 2011-10-20 | International Business Machines Corporation | Web content annotation management web browser plug-in |
CN104834541A (zh) * | 2015-03-30 | 2015-08-12 | 百度在线网络技术(北京)有限公司 | 功能模块挂载方法、挂载系统及更新挂载系统的方法 |
CN105516750A (zh) * | 2015-12-03 | 2016-04-20 | 深圳市茁壮网络股份有限公司 | 一种基于object标签的插件卸载和删除以及更新方法 |
-
2019
- 2019-03-18 CN CN201910205770.2A patent/CN109933335A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110258526A1 (en) * | 2010-04-20 | 2011-10-20 | International Business Machines Corporation | Web content annotation management web browser plug-in |
CN102033743A (zh) * | 2010-09-02 | 2011-04-27 | 西安赛斐软件科技有限公司 | 一种应用插件扩充模型驱动开发能力的系统及其方法 |
CN104834541A (zh) * | 2015-03-30 | 2015-08-12 | 百度在线网络技术(北京)有限公司 | 功能模块挂载方法、挂载系统及更新挂载系统的方法 |
CN105516750A (zh) * | 2015-12-03 | 2016-04-20 | 深圳市茁壮网络股份有限公司 | 一种基于object标签的插件卸载和删除以及更新方法 |
Non-Patent Citations (2)
Title |
---|
MONKEY: "Android-插件化技术之我也来入个门-DexCIassLoader加载apk,反射调用插件方法", 《HTTPS://ZHUANLAN.ZHIHU.COM/P/58941533》 * |
飞奔的波大爷: "SpringBoot2.0集成lombok让代码更简洁", 《HTTPS://BLOG.CSDN.NET/QQ_22860341/ARTICLE/DETAILS/81224890》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110673890A (zh) * | 2019-09-11 | 2020-01-10 | 天翼电子商务有限公司 | 插件调用方法、系统、介质及装置 |
CN110673890B (zh) * | 2019-09-11 | 2023-06-16 | 天翼电子商务有限公司 | 插件调用方法、系统、介质及装置 |
CN112020243A (zh) * | 2020-07-07 | 2020-12-01 | 安徽天能清洁能源科技有限公司 | 一种插件可灵活增删的微网中央控制器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1471423B1 (en) | Dynamically adding software components via a services manager to extend the functionality of system processes | |
US20180144140A1 (en) | Method, client, and system for testing application | |
CN106547580B (zh) | 挂钩函数的方法、装置、移动终端及存储介质 | |
CN109933335A (zh) | 一种混合开发模式下增删功能特性的插件方法 | |
CN108959605A (zh) | 用于网页的截图方法、装置、计算机设备和存储介质 | |
WO2020024989A1 (zh) | 负一屏加载方法、装置、终端及计算机可读存储介质 | |
CN110991368A (zh) | 相机场景识别方法及相关装置 | |
CN107562427A (zh) | 一种基于NodeJS的页面模板引擎渲染方法 | |
CN103607454B (zh) | Android系统浏览器设置私有代理服务器的方法 | |
CN110659021B (zh) | 一种移动端内微应用的开发及测试系统 | |
CN111506579A (zh) | 一种智能合约代码的生成方法、程序及设备 | |
CN110069247A (zh) | 一种应用程序的开发方法及装置、使用方法及装置 | |
CN110995577B (zh) | 消息的多通道适配方法、装置及存储介质 | |
CN112214250A (zh) | 一种应用程序组件的加载方法和装置 | |
WO2011131059A1 (zh) | 一种基于插件的集中信令跟踪方法及系统 | |
CN108763052A (zh) | 一种虚拟现实软件内存回收机制的性能检测方法及系统 | |
CN105278928A (zh) | Ivr对外接口配置方法及装置 | |
CN112631696B (zh) | 服务的编排方法、编排装置、处理器与服务的编排系统 | |
CN111147359B (zh) | 适用于多通道的消息转换方法、装置及存储介质 | |
CN115237481A (zh) | 驱动外接设备的方法、装置、设备及存储介质 | |
CN104731592B (zh) | 一种在应用程序中集成Bonjour服务的方法和装置 | |
CN111159605A (zh) | 解决拦截转发Android Webview的请求后页面加载变慢的方法 | |
CN106775719B (zh) | 基于移动终端的跨平台的轻量数据库封装方法及系统 | |
CN110278263A (zh) | 基于ajax与boa的嵌入式b/s架构实现方法及平台 | |
CN106991017B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190625 |