Android Cordova 插件制作

现在有一个项目使用了Cordova,如果不知道Cordova是个什么东东,可以直接百度Cordova进入Cordova中文官网,其中的入门资料还算全。简单的说Cordova是可以使用Js开发移动应用的神器,就是这些框架使得我们这些原生哥们不得不学(扯淡尼)。最近做项目的时候,看着官方的文档看的半知半解,想到网上看看有没有前辈做过的。不看不知道,我的天呀,好家伙前前后后就那两三个人写的博客,结果一大堆,还有翻译官方文档的,心凉半截啊。
++++++++++++++++++++++上面在闲扯淡++++++++++++++++++++++++++++++++++++++
编写Android插件我现在知道的有两种方法,一种是手动的按照官方给的方法在指定的文件中添加指定的项(这种方法我是没成功不过是官方的)。下面说另一种方法,也就是我干成功的一种。那我们就一步一步来做:

创建Cordova项目:

1.cordova create testcordova.
2.cordova platform add android --save

创建插件:
1.npm install -g plugman.
2.plugman create --name DemoAndroid --plugin_id com.test.demo --plugin_version 1.0.0.
3.cd DemoAndroid & plugman platform add --platform_name android
4.plugman createpackagejson ../DemoAndroid
5.cd ..
6.cordova plugin add DemoAndroid.
到这一步插件生成完成了,下一步就是修改对应的接口操作了。通过上面的操作可以在你src目录下生成一个插件的java文件,主要依靠的是CordovaPlugin这个API,实现execute这个函数。如果你这个插件还依赖一些其他的第三方库比如jar或者aar包之类的,可以在plugman platform add --platform_name android 之后再Android插件中添加(大致猜测如果使用其中的类需要反射,这个我还没有实现成功),但是也可以在项目中直接导入后在插件接口中实现。
例如:
java中的:
@Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {

        Log.i("aaa", "+++++++++++++" + action + "+++++++++++++++++");

        if (action.equals("execVM")) {

            Log.i("aaa", "+++++++++++++" + args.getString(0) + "+++++++++++++++++");

            Gson gson = new Gson();
            TransData transData = gson.fromJson(args.getString(0), TransData.class);
            String result = null;
            if(Transmit.getInstance().execute(transData) == 0){
                result = gson.toJson(transData);
            }

            resultHandle(result, callbackContext);
            return true;
        }
        return false;
    }
js:
module.exports = {
        execVM: function(successCallBack, errorCallBack, args){
            exec(successCallBack, errorCallBack, "VMExec", "execVM", [args]);
        }
    }
index.js中调用:
cordova.plugins.VMExec.execVM(function (success){
            alert(success);
        }, function (error){
            alert(error);
        }, json);
这里面值得注意的是cordova.plugins.VMExec这个是在cordova_plugins.js中注册的时候写的调用方式:
"clobbers": [
            "cordova.plugins.VMExec"
        ]
还要注意Android文件下的build.gradle不要添加第三方依赖,cordova build的时候会被还原成最初的,应该在同级目录下建一个build_extras.gradle 内容可以随便写,下面是我的:
def minSdkVersion = 17

if(cdvMinSdkVersion == null) {
    ext.cdvMinSdkVersion = minSdkVersion;
} else if (cdvMinSdkVersion.toInteger() < minSdkVersion) {
    ext.cdvMinSdkVersion = minSdkVersion;
}

repositories{
    jcenter()
    flatDir{
        dirs 'libs'
    }
}

android {
    packagingOptions {
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:25.2.0'
    compile 'com.android.support:gridlayout-v7:25.2.0'
    compile 'com.google.code.gson:gson:2.7'
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值