一 、 安装Cordova 开发环境
1、Cordova命令行开发工具使用npm工具包,
全局安装plugman:
npm install -g cordova
二、创建Cordova自定义插件
进入Cordova工程目录,执行创建插件命令:
plugman create --name 创建名称 --plugin_id 插件ID --plugin_version 插件版本号
plugman create --name ToastPlugin --plugin_id cordova-plugin-toast --plugin_version 0.1.2
执行完命令之后你就会发现工程目录下多了一个ToastPlugin文件夹,ToastPlugin中有:
这时需要在src目录下创建android文件夹,并且在android目录下创建ToastPlugin.java类
也可以在插件目录下执行命令创建:
plugman platform add --platform_name android
创建完成后:
到这一部插件是创建成功了,但还需要对配置文件进行更改。
1、plugin.xml配置修改:
<?xml version='1.0' encoding='utf-8'?> <plugin xmlns:android="http://schemas.android.com/apk/res/android" id="cordova-plugin-toast" version="0.1.2" xmlns="http://apache.org/cordova/ns/plugins/1.0"> <name>ToastPlugin</name> <js-module name="ToastPlugin" src="www/ToastPlugin.js"> <clobbers target="cordova.plugins.ToastPlugin" /> </js-module> <!-- 平台类型 --> <platform name="android"> <config-file parent="/*" target="res/xml/config.xml"> <!-- JS调用时的前缀名字 --> <feature name="ToastPlugin"> <!-- .java类名全路径 --> <param name="android-package" value="org.apache.cordova.toast.ToastPlugin" /> </feature> </config-file> <config-file parent="/*" target="AndroidManifest.xml"></config-file> <!-- src:java源文件的路径, target-dir:插件安装好后,源文件的位置,要和上面的包名对应 --> <source-file src="src/android/ToastPlugin.java" target-dir="src/org/apache/cordova/toast" /> </platform> </plugin>
这里添加了Android平台。
2、ToastPlugin.java修改:
package org.apache.cordova.toast; import android.widget.Toast; import org.apache.cordova.CallbackContext; import org.apache.cordova.CordovaArgs; import org.apache.cordova.CordovaPlugin; import org.json.JSONArray; import org.json.JSONException; public class ToastPlugin extends CordovaPlugin { @Override public boolean execute(String action, String rawArgs, CallbackContext callbackContext) throws JSONException { return super.execute(action, rawArgs, callbackContext); } @Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { return super.execute(action, args, callbackContext); } @Override public boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) throws JSONException { if (action.equals("showToast")) { switch (args.getInt(1)) { case Toast.LENGTH_SHORT: Toast.makeText(cordova.getActivity(), args.getString(0), Toast.LENGTH_SHORT).show(); break; case Toast.LENGTH_LONG: Toast.makeText(cordova.getActivity(), args.getString(0), Toast.LENGTH_LONG).show(); break; default: break; } return true; } return false; } }
3、ToastPlugin.js修改:
var exec = require('cordova/exec'); /** * ToastPlugin :是plugin.xml中配置的feature的nema * showToast: 是js中调用的方法名 */ exports.showToast = function(arg0, success, error) { exec(success, error, "ToastPlugin", "showToast", [arg0]); };
4、通过npm创建Mudule:
进入插件目录在控制台输入:
npm init
全部回车键就行
操作完成后插件目录会生成一个package.json文件。
还需要对package.json进行Cordova信息进行补全:
{ "name": "ToastPlugin", "version": "0.1.2", "description": "这是一个Cordova的Toast插件", "cordova": { "id": "cordova-plugin-toast", "platforms": [ "android" ] }, "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "BoBo", "license": "ISC" }
三、将插件添加到工程中
进入Android平台的目录:platforms/android
执行命令:
cordova plugin add /Users/BoBo/Documents/ToastPlugin
四、js调用自定义插件
cordova.plugins.ToastPlugin.coolMethod("参数", function (msg) { alert(msg); }, function (e) { alert(e); });
cordova.plugins.ToastPlugin对应plugin.xml文件中clobbers的target值。
五、备注
查看已安装的插件:
cordova plugin ls
删除插件:
cordova plugin rm cordova.plugin.ToastPlugin