美文网首页
Cordova 安卓插件开发

Cordova 安卓插件开发

作者: V1tas | 来源:发表于2019-08-27 18:40 被阅读0次

    一。环境准备

    • cordova 环境。
    • 安卓环境。
    • plugman环境。
      • npm install -g plugman(淘宝镜像用cnpm)

    二。开发工具

    • webStorm
    • AndroidStudio

    三。开始开发

    • 1.创建插件

      plugman create --name toastPlugin --plugin_id toast-plugin-xytoast --plugin_version 1.0.1
      
      • --name 插件名
      • --plugin_id 插件id,最好用小写,这个插件id会在用户安装完之后显示在config.xml文件中的<plugin name="cordova-plugin-whitelist" spec="1" />
      • --plugin_version 插件版本号
    • 2.创建cordova项目

    • 3.创建android项目,并引入CordvaLib,同时编写java类继承CorovaPlugin

      public class ShowToast extends CordovaPlugin {
      
      private CallbackContext mCallbackContext;
      
      
      /**
       * @param action          调用方传来的动作,即要肝肾恶魔
       * @param args            参数
       * @param callbackContext 返回给客户端的值
       * @return
       * @throws JSONException
       */
      @Override
      public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
          this.mCallbackContext = callbackContext;
          if ("toastFunc".equals(action)) {
      
              String message = args.getString(0);
              Toast.makeText(cordova.getActivity(), message, Toast.LENGTH_SHORT).show();
              mCallbackContext.success("success");
              return true;
          }
          mCallbackContext.error("error");
          return false;
      }
      }
      
    类路径,plugin.xml中使用
    • 4.为插件创建android目录

      • 1.在插件的src目录下创建android与ios目录,分别对应安卓插件与ios插件
      如图
      • 2.将安卓原生的ShowToast.java放入安卓目录下。
      图片.png
    • 5.修改plugin.xml文件
      plugin.xml详解

      <?xml version='1.0' encoding='utf-8'?>
      <plugin id="toast-plugin-xytoast" version="1.0.1" xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android">
       <name>toastPlugin</name>
       <js-module name="toastPlugin" src="www/toastPlugin.js">
           <clobbers target="cordova.plugins.toastPlugin" />
       </js-module>
       <platform name="android">  
           <source-file src="src/android/ShowToast.java" target-dir="src/cn/shuto/toast"/>  
           <config-file target="res/xml/config.xml" parent="/*">  
               <feature name="ShowToast">  
                   <param name="android-package" value="cn.shuto.toast.ShowToast"/>  
               </feature>  
           </config-file>  
       </platform> 
      </plugin>
      
      • <plugin>:id为创建插件时指定的id
      • <name>:name为创建插件时指定的name
      • <js-module>:文件中可能会有多个js-module的,一个js-module就是一个调用的方式。只为js端调用使用。js端调用时为target.functionName 即cordova.plugins.toastPlugin.functionName
      • <platform>:为插件添加安卓平台
      • <source-file> :src为java源文件的路径,需要相对于plugin.xml到文件的位置。target-dir为插件安装好后,源文件的位置(即以后在platform/android下的目录),要和下面的feature标签下param标签里的value中的包名对应
      • <feature>name要与java类名一致都为ShowToast, param标签中的value是插件安装好后java类名全路径 与安卓端的类路径保持一致即可
    • 6.修改toastPlugin.xml

      var exec = require('cordova/exec');
      exports.toast = function (arg0, success, error) {
        exec(success, error, 'ShowToast', 'toastFunc', [arg0]);
      };
      
      • exports.toast:暴露出的方法,供js端调用
      • success:成功回调
      • error:失败回调
      • ShowToast:是plugin.xml中配置的feature的name
      • toastFuc:action,原生根据不同的action处理不同的请求
      • [arg0]:参数,需要传递个原生端的内容
    • 7.为插件创建package.json文件
      plugman createpackagejson 插件绝对路径

        plugman createpackagejson C:\Users\lzj\Desktop\plugin\toastPlugin
      
    • 8.cordova安装相应的插件
      cordova项目目中下执行

      cordova plugin add C:\Users\lzj\Desktop\plugin\toastPlugin(插件名)
      
    • 9 js调用

      function showToast() {
           //msg为 mCallbackContext.success("success");的返回值
           cordova.plugins.toastPlugin.toast('吐司', function (msg) {
               alert(msg);
           }, function (msg) {
               alert(msg);
           })
       }
      

    相关文章

      网友评论

          本文标题:Cordova 安卓插件开发

          本文链接:https://www.haomeiwen.com/subject/pyfoqqtx.html