自己写一个可以通过命令安装的cordova插件

陈野
2023-12-01
目标:写一个可以让别人通过命令安装的android平台的cordova插件
步骤:
1、准备一个cordova项目导入到eclipse中(为了方便安装插件可以把cordova项目中的platform做为eclipse的工作空间,如果不懂可以看这里   点击打开链接

一、创建空白的cordova项目

1、到你想创建项目的目录下,打开黑窗口

cordova create hellocom.example.helloHelloWorld

hello:项目目录名

com.exmple.hello:项目包名

HelloWorld:应用的名字

2、cd到刚才创建的目录hello下,添加android平台

cd hello

cordova platform add android


2、准备一个干净的插件
plugman create --name pluginb --plugin_id cordova-myplugin-pluginb --plugin_version 1.0.0
PluginB:插件名
cordova-myplugin-pluginb:插件id
新插件的目录结构
PluginB
    |--src 
        |--
    |--www
        |--pluginb.js
    |--plugin.xml
plugin.xml代码
<?xml version='1.0' encoding='utf-8'?>
<plugin id="<span style="background-color: rgb(255, 204, 204);">cordova-myPlugin-pluginb</span>" version="1.0.0" xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android">
    <name><span style="background-color: rgb(255, 204, 204);">PluginB</span></name>
    <js-module name="PluginB" src="www/PluginB.js">
        <clobbers target="cordova.plugins.PluginB" />
    </js-module>
</plugin>
3、在本地修改插件plugin.xml,以及添加java文件
修改插件plugin.xml
<?xml version='1.0' encoding='utf-8'?>
<plugin id="cordova-myPlugin-pluginb" version="1.0.0" xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android">
    <name>PluginB</name>
    <js-module name="PluginB" src="www/PluginB.js">
        <clobbers target="cordova.plugins.PluginB" />
    </js-module>
<span style="background-color: rgb(204, 204, 204);">	<!--针对android平台的配置-->
	<platform name="android">
        <em><!--将插件src/android目录下的PluginB复制到项目的src/com/plugins/pluginb目录下--></em>
        <source-file src="src/android/PluginB.java" target-dir="<strong>src/com/plugins/pluginb</strong>" />
	<em><!--这里是将feature这个标签队里面的内容复制到config.xml中--></em>
        <config-file target="res/xml/config.xml" parent="/*">
            <feature name="PluginB"></span>
<span style="background-color: rgb(204, 204, 204);">		<!--value:com.plugins.pluginb 插件的包名,pluginB 插件java文件名,插件的包名和插件的id不是一回事,虽然后有时候默认用插件id做包名-->
                <param name="android-package" value="<strong>com.plugins.pluginb.PluginB</strong>" />
                <param name="onload" value="true" />
            </feature>
        </config-file></span>
    </platform>
</plugin>
添加插件的java文件
新建一个PluginB.java的文件放在插件的src目录下就可以,具体的代码可以在 导入eclipse后再写。
4、将插件通过命令安装到项目中并执行prepare
plugman install --platform android --project platforms\android --plugin  ../PluginsDIY/pluginb
cordova prepare android
做完上面的操作,你的插件在项目中就可以看到了,只不过还没有任何用能,因为java代码和js代码 还没写
----------------------------------------------------------------------------------------------------------------------------------------------------
5、根据功能修改插件的java代码和js代码
java代码:
public class PluginB extends CordovaPlugin {
	private Context context;

	public void initialize(CordovaInterface cordova, CordovaWebView webView) {
		super.initialize(cordova, webView);
		//获取context
		context = this.cordova.getActivity().getApplicationContext();
	}

	@Override
	public boolean execute(String action, final CordovaArgs args,
			CallbackContext callbackContext) throws JSONException {
		//
		if ("save".equals(action)) {
			cordova.getThreadPool().execute(new Runnable() {
				public void run() {
					String key = args.optString(0);
					String value = args.optString(1);
					saveData(key, value);
				}
			});
		} else if ("get".equals(action)) {
			String key = args.optString(0);
			String values = this.getString(context, key, "");
			callbackContext.success(values);
		}
		return true;
	}

	private void saveData(String key, String value) {
		this.putString(context, key, value);
	}

	public static final String FILE_NAME = "share_data";
	public static SharedPreferences sp;

	/**
	 * 每次使用工具类的时候,首先判断是不是已经有sp对象了,如果有了就不用再次创建了。
	 * 
	 * @param context
	 * @return
	 */
	private static SharedPreferences getPreferences(Context context) {
		if (sp == null) {
			sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);
		}
		return sp;
	}

	/**
	 * 保存key value值
	 * 
	 * @param context
	 * @param key
	 * @param value
	 */
	public static void putString(Context context, String key, String value) {
		SharedPreferences sp = getPreferences(context);
		sp.edit().putString(key, value).commit();
	}

	/**
	 * 根据key值获取value
	 * 
	 * @param context
	 * @param key
	 * @param defValue
	 * @return
	 */
	public static String getString(Context context, String key, String defValue) {
		String value = getPreferences(context).getString(key, defValue);
		return value;
	}
}


js代码:
<span style="color: rgb(255, 0, 0);">cordova.define("cordova-myplugin-pluginb.PluginB", function(require, exports, module) {</span>
var exec = require('cordova/exec');
var pluginb= {
    save:function() {  
        uccess, error, "PluginB", "save", [key,value]
    },
    get:function() {
        exec(null, null, "PluginB", "get", []);
    }
};
module.exports = pluginb;
<span style="color: rgb(255, 0, 0);">}); </span>

6、测试没问题后,将java文件复制到插件的src/android目录下,将js文件复制到插件的www目录下
注意需要红色部分去掉
<span style="color:#ff0000;">cordova.define("cordova-myplugin-pluginb.PluginB", function(require, exports, module) {</span>
var exec = require('cordova/exec');
var pluginb= {
    save:function() {  
        uccess, error, "PluginB", "save", [key,value]
    },
    get:function() {
        exec(null, null, "PluginB", "get", []);
    }
};
module.exports = pluginb;
<span style="color:#ff0000;">});  </span>
这样插件就写完了,如果想测试可以在index.html

7、上面的步骤完成,这个插件就可以通过命令安装到项目中了
通过命令删除掉项目中插件
plugman uninstall --platform android --project platforms\android --plugin  cordova-myplugin-pluginb
cordova prepare android
然后再通过命令安装插件
plugman install --platform android --project platforms\android --plugin  ../PluginsDIY/pluginb(插件的位置在当前目录上一级目录下的PluginsDIY目录下)
cordova  prepare android 
 类似资料: