扩展插件开发入门_Android
1. 模块开发介绍
1.1 简介
中控移动应用开发平台移动端引擎通过系统Webkit浏览器,实现了HTML+CSS+Javascript开发语言和Objective-C/Java/C/C++等Native开发语言之间的桥接,极大的丰富和增强了标准Javascript的能力,令前端开发者通过JS即可调用移动设备的底层功能,如:电话、短信、定位、多媒体等,并能将如高德地图、支付宝等第三方厂商的SDK很容易的集成到自己的App中来。
为满足广大开发者自定义扩展Native plugin的需求,中控移动应用开发平台推出插件扩展SDK,本SDK开放桥接机制,方便具有一定Android基础的开发者自由开发定义Native扩展插件,丰富JS的能力,提升App的用户体验。
1.2 阅读对象
本文档面向所有使用该SDK的Android开发人员、测试人员、合作伙伴以及对此感兴趣的其他用户。阅读该文档要求用户熟悉Android应用开发,并且对Html、CSS、Javascript有一定了解。中控移动应用开发平台移动端引擎强调传输数据的简洁性和统一性,因此选择轻量级的JSON作为Javascript和Native语言之间通讯的数据载体,所以要求开发者同时要熟悉JAVA和Javascript中JSON格式数据的操作。
1.3 开发环境
- Android Stuido3.5或更高版本
- window7/window10/mac
1.4 架构

1.5 插件开发流程

1.6 下载SDK
2. 模块开发示例
2.1 项目结构
编译完成后,项目工程结构如下:

需要注意4点:
1)module_app不要作任何改动,代码只在module_ext_plugin中编写。
2) plugins_开头的.json文件为重要配置文件,必须以plugins_开头,修改名称的话需要注意。
3) 继承JSBridge的java文件才是native方法出口,和.json文件中android_entry配置的路径要一一对应。(需要修改成自己的文件名称,防止文件名重复造成冲突)
4) 主要依赖,请勿修改:
api 'com.github.powyin:module_supcon:3.*.*'
如果需要引入依赖库,先从build中寻找是否有同类依赖,有的话请使用我们提供的版本,不然会造成冲突,见下图:

2.2 代码编写
1.modile_ext_plugin的配置及开发说明。
1)assets下.json文件为配置文件,必须按照格式编写
参数说明
| 参数 | 必填 | 说明 |
|---|---|---|
| name | 是 | 功能插件的名称 |
| version | 是 | 功能插件的版本号 |
| ios_entry | 否 | ios对应的位置 |
| android_entry | 是 | 入口java文件全路径,名称可修改,但要保证对应 |
| methods | 否 | 一个功能插件下是否分成几个小的模块,如果有则填入名称 |
| android_maven_lib | 否 | 如果有引入其他第三方的依赖,在这里写入地址 |
| ios_system_frameworks | 否 | 需要添加的系统依赖,字符串数组类型 |
| ios_quriesSchemes | 否 | 应用访问白名单,字符串数组类型 |
注:assets下.json文件必须以plugins_开头,否则无效,如果只开发Android端插件,ios开头的参数直接忽略,仅在两端插件合并时填充。
参考案例

2)SimpleAndroidPluginNativiePart.calss 这里才是实现功能插件的核心,主要的代码逻辑都在execute方法中。
action参数:
一个功能插件根据需求可能又分为几个小功能模块,那么这里就用到了action参数,此为调用功能模块的标识,对应上述methods中的名称,编写自己的代码逻辑,和原生开发相同。使用方式如下:

args参数: 前端需要传递的参数,都在这里进行接收,根据约定的格式进行获取。
例如:args.getJSONObject(0).getString("参数名"); args.get(0);
callbackContext参数: 调用callbackContext返回成功后的数据或者错误时的信息给前端。
例如:callbackContext.success("请求成功");callbackContext.error("解析错误");
2.返回数据给前端,可以调用callbackContext.success("") ,callbackContext.error("")。
支持返回多格式的数据,ctrl+左键点击可以进入查看支持的所有类型,如图:

2.3 代码调试
本demo提供测试功能,真机运行后,点击页面WEBVIEW按钮,进入到调试页面,页面中有一个调试按钮,如图所示:

点击按钮弹出一个页面,最上方的地址输入浏览器打开即可,显示如下页面:
[!WARNING]
- 手机和电脑必须在同一局域网内。

如果地址可以向上图中一样打开,说明连接成功了。
[!WARNING]
- 如果点击开启log显示,那么通过js调用之后将会打印相关信息,建议通过studio查看log,显示的更为详细。
通过注入JS代码来测试自己代码块
1.不管哪个功能模块,开头必须添加navigator. 之后拼接自己.json文件中配置的name参数,如果此功能插件分几个小功能模块的话,那么需要继续拼接.json文件中的methods
拿此Demo工程为例,拼接结果为:
navigator.test.ckme();
2.第二步需要填充()中的内容,此处已经规范了格式,固定返回一个成功失败方法,例如:
navigator.test.ckme(function(success){alert(success)},function(error){});
双击打开.js文件,覆盖输入此代码,点击运行 ,APP显示如下内容:

可以看到,弹出的内容就是我们代码中设置的内容:

3.通过js调用传入数据,我们推荐传入格式为{'name':'supcon','gerder':'男性'}(如果参数比较少,也可以直接传入值,注意更改获取方式),以此为例,可自定义内容。
此时修改execute方法中代码逻辑,如图:

调用navigator.test.ckme(function(success){alert(success)},function(error){},{'name':'supcon','gerder':'男性'});(注:参数放最后面)APP此刻显示内容为::

至此简单的调试流程已经完成。
如果您无法保证设备在同一个网段下,可以在工程中以下位置直接写入js代码,点击WEBVIEW按钮进入页面后将自动执行,如图:

3. 上传插件包
功能插件调试完成之后,打包上传即可,大致流程如下:

生成的aar包位置如下:

新建一个文件夹,名称必须为android,把aar包放入android文件夹内,同级文件夹下放入修改的json文件,且json文件需要改名为plugin.json,如下图所示:

然后压缩成.zip包,压缩方式为选中所有文件进行压缩,否则将不能识别,如图:

上传到平台见上传插件
[!WARNING]
- 所有文件夹命名必须为英文。
- 此demo为纯净版工程,可直接在此工程中进行开发,为了让您快速了解,入门版相对简单,如果您的插件比较复杂或者对插件开发仍有疑问,请阅扩展插件开发实例!