当前位置: 首页 > news >正文

Cordova开发自定义插件的方法

Cordova开发自定义插件的方法

文章目录

  • Cordova开发自定义插件的方法
    • @[TOC](文章目录)
  • 一、自定义插件
  • 二、android下的自定义插件开发
    • (一)步骤
      • 1、建立cordova工程
      • 2、建立自定义插件
        • (1) 安装plugman
        • (2) 用plugman建立自定义插件Myplug
        • (3) 到Myplug目录,用plugman建立package.json文件
        • (4)在myPlug\src目录下,建立HelloPlugin.java
      • 3、自定义插件配置文件
        • (1)myPlug.js
        • (2)package.json
        • (3)plugin.xml
    • (二)APP工程中的调用

一、自定义插件

当Cordova 开发跨平台APP没有现成插件可用,或者现有插件无法满足需求时,需要开发自定义插件。
自定义插件针对不同的开发平台需要用原生开发语言完成开发。例如:android采用java,ios则采用object-c或swift。
以下以android平台下的自定义插件开发为例,说明开发基本方法和关键点。

二、android下的自定义插件开发

(一)步骤

1、建立cordova工程

cordova create myDefinePlug
cd myDefinePlug
cordova platform add android

2、建立自定义插件

进入cmd命令窗口,按如下顺序建立初始自定义插件结构:

(1) 安装plugman

在工程文件夹下,执行:
在这里插入图片描述

(2) 用plugman建立自定义插件Myplug

在这里插入图片描述
打开查看其目录结构

(3) 到Myplug目录,用plugman建立package.json文件

在这里插入图片描述
全部按缺省(回车)选择默认值。
生成的自定义插件目录结构如下:
在这里插入图片描述

(4)在myPlug\src目录下,建立HelloPlugin.java

该文件就是自定义插件的功能源码,
例如:定义一个HelloPlugin类,结构如下:
在这里插入图片描述
其中:execute中内容为插件要实现的具体功能,其参数分别为:
action:插件定义的函数名
args: 函数参数
callbackContext:回调,callbackContext.error()错误回调,callbackContext.success()为成功回调。

3、自定义插件配置文件

建立插件原生开发文件后,相关关键配置文件包括:package.json、plugin.xml和myPlug.js。

(1)myPlug.js

在这里插入图片描述
其中HelloPlugin.java中的类名、所定义的函数名和函数参数、函数返回值都是在此定义。

(2)package.json

在这里插入图片描述

(3)plugin.xml

在这里插入图片描述
其中,上图中:
中定义了插件包括的一个或多个JavaScript文件。
每个JS-module标签对应一个JavaScript文件,其中:
要注意的是: clobbers:定义了js-module元素标记,用于指定插件插入在window对象的命名空间,提供了在工程文件的应用程序index.js中如何调用自定义插件函数。
例如:这里
那么,在index.js中调用该函数的写法是:
在这里插入图片描述

(二)APP工程中的调用

在cordova工程中,用如下命令可以向工程中添加该自定义插件:
在这里插入图片描述
注意:
1、myPlug是工程myT下的子目录。
2、每次修改该自定义插件的java源文件或配置文件时,要先从工程删除该插件,再重新添加:
在这里插入图片描述

在工程index.js中调用该自定义插件,代码如下:
在这里插入图片描述
附:
1、更多自定义插件开发方法参考官方网址:Android插件开发指南
2、该案例部分源码来自:《Apache Cordova实战》,Raymonk K Camden著,清华大学出版社,2018年
3、本文以android自定义插件开发为例描述,ios平台自定义插件开发查阅官网。

相关文章:

  • 我国“东数西算”工程对数据中心布局的长期影响
  • 双目测量中的将视差图重投影成三维坐标图
  • 2025.5.5总结
  • 42. 接雨水(相向双指针/前后缀分解),一篇文章讲透彻
  • 【中间件】brpc_基础_单例
  • Scrapy分布式爬虫实战:高效抓取的进阶之旅
  • 直方图反向投影
  • 多语言笔记系列:Polyglot Notebooks 中运行 BenchmarkDotnet 基准测试
  • Hive安装与配置教程
  • 《冰雪三职业》:战士玩法攻略!
  • UniGetUI 使用指南:轻松管理 Windows 软件(包括CUDA)
  • 模型训练实用之梯度检查点
  • 头歌实验MySQL数据库 - 复杂查询(二)
  • 深入解析Semantic Kernel中的聊天历史记录对象
  • Gradio全解20——Streaming:流式传输的多媒体应用(6)——RT-DETR模型构建视频流目标检测系统
  • STM32教程:DMA原理及结构分析(基于STM32F103C8T6最小系统板标准库开发)*详细教程*
  • C++类与对象深度解析:从基础到应用
  • 《Java 高并发程序设计》笔记
  • 【言语理解】片段阅读之标题拟定(5)
  • Deepseek基础-api key申请及应用(java)、硅基流动api key申请及应用(dify)
  • 金沙记忆|元谋龙街渡:是起点也是终点
  • 探访小剧场、直播间、夜经济:五一假期多地主官调研新消费
  • 侯麦:从莫扎特到贝多芬
  • 涉“子宫肌瘤”论文现55例男性对照观察患者?山大齐鲁医院:正在调查
  • 黔西市游船倾覆事故发生后,贵州省气象局进入特别工作状态
  • 中国驻日本大使吴江浩就日本民用飞机侵闯我钓鱼岛领空向日方提出严正交涉