pluman的安装
npm install -g plugman
plugman安装完之后就可以创建一个插件了cordova plugin
plugman create --name <pluginName> --plugin_id <pluginID> --plugin_version <version> [--path <directory>] [--variableNAME=VALUE]
参数:
pluginName: 插件名字
pluginID: 插件id
version: 版本
directory:一个绝对或相对路径的目录,该目录将创建插件项目
variable NAME=VALUE: 额外的描述,如作者信息和相关描述
示例: plugman create --name Loc --plugin_id com.loc.getloc --plugin_version 1.0.1
创建成功后,目录结构是这样的
在src文件夹下创建android文件夹(因为写的是android 的插件)
里面的libs和java文件是之前项目中拷贝过来的(已经编译通过,并测试没有问题的)
目录结构:
-
src用于存放各个平台的本地代码,我的只有Android平台的,所以只有一个android文件夹。
-
www用于存放js文件,js文件主要做接口用(一般使用命令创建的时候会自动生成一个,但是需要修改)。
-
plugin.xml文件是插件的配置文件,至关重要。
我们将编写好的.java文件放入到src中的android文件夹中
修改 www文件夹下的 .js文件, 这里具体的参数, 复制网上搜的, 写的比较详细
/**
* cordova.define 的第一个参数就是cordova_plugins.js里面定义的id
* exec方法参数说明:
* 参数1:成功回调function
* 参数2:失败回调function
* 参数3:feature name,与config.xml中注册的一致
* 参数4:调用java类时的action
* 参数5:要传递的参数,json数组格式
* 下面提供三种实现方式,三种实现方式均可行
*/
cordova.define("fxp-cordova-plugins.ToastDemo",
function(require, exports, module) {
/*
* 实现方式一
*/
var exec = require("cordova/exec");
module.exports = {
toast: function(content){
exec(null,null,"ToastDemo","toast",[content]);
},
toastWithCallback: function (content, successCallback, errorCallback) {
cordova.exec(successCallback, errorCallback, "ToastDemo", "toastWithCallback", [content]);
}
}
/*
* 实现方式二
*/
/* var exec = require('cordova/exec');
var FXP = function(){};
FXP.prototype.toast=function(content) {
exec(null, null, "ToastDemo", "toast", [content]);
};
FXP.prototype.toastWithCallback=function(content,success, error) {
exec(success, error, "ToastDemo", "toastWithCallback", [content]);
};
var fxp = new FXP();
module.exports = fxp;*/
/*
* 实现方式三
*/
/* var exec = require('cordova/exec');
exports.toast = function(content) {
exec(null, null, "ToastDemo", "toast", [content]);
};
exports.toastWithCallback=function(content, successCallback, errorCallback){
exec(successCallback,errorCallback,"ToastDemo","toastWithCallback",[content]);
};*/
});
然后修改 plugin.xml文件
<!--添加我们自己的平台 -->
<platform name="android"> <!-- 平台类型 -->
<config-file target="res/xml/config.xml" parent="/*">
<feature name="Loc"> <!-- JS调用时的前缀名字 -->
<param name="android-package" value="com.lanyu96.maploction.Loc"/> <!-- .java类名全路径 -->
</feature>
</config-file>
<config-file target="AndroidManifest.xml" parent="/*">
<!-- android所需权限 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
</config-file>
<source-file src="src/android/Loc.java" target-dir=""src/com/loc/getloc"/>
<!-- src:java源文件的路径, target-dir:插件安装好后,源文件的位置,要和上面的包名对应 -->
</platform>
然后输入npm init 来创建 package.json文件
信息可以自定义,也可以直接回车使用默认的
这样就成功了