cordova插件的创建

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

创建成功后,目录结构是这样的

1d34106aa87890aa635d3cac2bc7ca1201b.jpg

在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文件

信息可以自定义,也可以直接回车使用默认的

这样就成功了

猜你喜欢

转载自blog.csdn.net/wx_lanyu/article/details/84782646