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檔案
資訊可以自定義,也可以直接回車使用預設的
這樣就成功了