Cordova开发自定义插件(详细篇含jar包调用)
2016-10-27 17:04
441 查看
一. 准备工作
1. 环境搭建
Cordova的环境搭建此处npm有点慢,需用国内镜像
本猿采用 命令行指定
npm --registry https://registry.npm.taobao.org info underscore
2. 创建一个cordova项目
cordova create hello com.example.hello helloWorld
3. 为项目添加android平台
cordova platform add android
4. 安装plugman插件
npm install –g plugman
插:准备工作做完了,开始正式写插件
二. 开发插件
1. 创建插件
plugman create –name<plugmanName> --plugin_id<pluginID> --plugin_version<version> [--path<directory>][--variableNAME=value]
plugmanName : 插件名字
pluginID : 插件ID
version : 0.0.1
directory : 一个绝对或相对路径的目录,该目录将创建插件项目
variableNAME=VALUE: 额外的描述,如作者信息和相关描述
egg :
plugman create --name LycPlugin --plugin_ id lycPlugin --plugin_version 1.0.0
成功创建插件后的文件结构如下图:
2. 在插件内添加android platform,生成.java文件
cd LycPlugin plugman platform add –platform_name android
成功添加后目录如下图:
若想添加依赖jar包,可直接放在android目录下,或者在src下新建libs目录。
添加jar包之后记得在工程中添加jar包依赖
<orderEntry type="library" name="xxx" level="project" />
本猿直接将xxx.jar放在android目录下,文件结构如下:
3. 各个文件详解
xx.js和plugin.xml的详解可以参考这篇博文3.1 plugin.xml
jar包的网络依赖
<framework src=”com.Android.support:support-v4:23.1.1”/>
demo内有对plugin.xmlde详解。由于详解太多,故放在代码内特别杂乱不利查阅,有需要详解的可以下载demo,也可去这里查看详解
<?xml version='1.0' encoding='utf-8'?> <plugin id="lycPlugin" version="1.0.0" xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android"> <name>LycPlugin</name> <js-module name="LycPlugin" src="www/LycPlugin.js"> <clobbers target="lyc.toast" /> </js-module> <platform name="android"> <config-file parent="/*" target="res/xml/config.xml"> <feature name="LycToast"> <param name="android-package" value="com.lyc.toast.LycPlugin" /> </feature> </config-file> <config-file parent="/*" target="AndroidManifest.xml"> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> </config-file> <source-file src="src/android/LycPlugin.java" target-dir="src/com/lyc/toast" /> <source-file src="src/android/xxx.jar" target-dir="libs" /> </platform> </plugin>
3.2 lycPlugin.js
var exec = require('cordova/exec'); exports.coolMethod = function(arg0, success, error) { exec(success, error, "LycPlugin", "coolMethod", [arg0]); }; var lycFunc = function(){}; // arg1:成功回调 // arg2:失败回调 // arg3:将要调用类配置的标识 // arg4:调用的原生方法名 // arg5:参数,json格式 lycFunc.prototype.showToast=function(success, error) { exec(success, error, "LycToast", "showToast", []); }; lycFunc.prototype.showToastwithmsg=function(text, lenth,success, error) { exec(success, error, "LycToast", "showToastwithmsg", [text, lenth]); }; var showt = new lycFunc(); module.exports = showt;
3.3 LycPlugin.java
package com.lyc.toast; import org.apache.cordova.CordovaPlugin; import org.apache.cordova.CallbackContext; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.widget.Toast; import b.b.b.simple; /** * This class echoes a string called from JavaScript. */ public class LycPlugin extends CordovaPlugin { @Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { if("showToast".equals(action)){ int temp = simple.add(4,5); //jar包内方法的引用(实验) Toast.makeText(cordova.getActivity(), "show..."+"jar包方法结果"+temp, Toast.LENGTH_SHORT).show(); callbackContext.success("success"); return true; }else if("showToastwithmsg".equals(action)){ String str = args.getString(0); int len = args.getInt(1); if(len == 0){ Toast.makeText(cordova.getActivity(), str, Toast.LENGTH_SHORT).show(); callbackContext.success("success" + str); return true; }else{ Toast.makeText(cordova.getActivity(), str, Toast.LENGTH_LONG).show(); callbackContext.success("success" + str); return true; } } callbackContext.error("error"); return false; } }
4. 安装插件
我的插件所在的路径是F:\LycPlugin首先切换到最初创建的hello目录
cd hello
执行插件安装命令
cordova plugin add F:\LycPlugin
执行完之后你就发现插件已经安装上去了
如果你想卸载插件的话,执行
cordova plugin remove plugin_id
egg:
cordova plugin remove lycPlugin
5. 插件的使用
lyc.toast.showToast(); lyc.toast.showshowToast("hello",0, function(msg) { alert(msg); }, function(msg) { alert(msg); });
三. 一些问题
jre使用版本过高。生成jar包时使用 javaSE -1.7(jdk1.8.0.20)插件未能正确引入Android Stuidio ,正确import详见此篇博客
Gradle版本过低,使用2.10版本正常
出现了Gradle version 2.10 is required. Current version is 2.2.1. If usingthegradle解决办法如下详见这里
buildscript { System.properties['com.android.build.gradle.overrideVersionCheck'] = 'true' … }
一些关键问题的必要版本
Gardle 2.10 JavaSE – 1.7(jdk 1.8.0.20)
点击下载demo
版权声明:本文为博主原创文章,未经博主允许不得转载。多谢cool丶的帮助
相关文章推荐
- ionic3 自定义插件的开发和调用(包含jar包调用,文件结构详解)
- Android Cordova 插件开发之编写自定义插件
- Cordova 自定义插件,包含有Jar包的插件
- (2)cordova android自定义插件开发
- Android+Cordova混合开发以及Cordova自定义插件
- Android Cordova 插件开发之自定义插件生成安装包
- Cordova Android 插件开发(网络端(服务器)调用Android插件(java))
- Android Cordova 插件开发之编写自定义插件
- Cordova插件开发之自定义消息事件addEventListener,fireWindowEvent
- Android Cordova 插件开发之编写自定义插件
- Android移动APP开发笔记——Cordova(PhoneGap)通过CordovaPlugin插件调用 Activity 实例
- cordova开发自定义插件
- cordova 开发安卓项目 解决html 放到服务器上无法调用插件的问题
- ionic2 自定义cordova插件开发以及使用 (Android)
- Android Java调用.so和.a、Unity C#调用jar插件和C++开发的插件
- [置顶] cordova开发自定义插件
- cordova开发自定义插件
- cordova开发自定义插件
- ionic 调用自定义cordova插件
- ionic2自定义cordova插件开发以及使用(Android)