您的位置:首页 > 其它

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

2016-09-12 18:32 288 查看
目标:写一个可以让别人通过命令安装的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:
c6f7
插件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 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐