1. 程式人生 > >cordova外掛的建立

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

建立成功後,目錄結構是這樣的

在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檔案

資訊可以自定義,也可以直接回車使用預設的

這樣就成功了