ionic3 自定义插件的开发和调用(包含jar包调用,文件结构详解)

ionic+cordova+angular 奇葩错误收集 1. ionic cordova build后。在XCODE里编译时提示找不到pods库。。 阅读详情

        由于项目需要调用别人写好的jar包,但是ionic中又无法直接使用,所以想到了去写一个插件,阅读了网上的很多材料,收获很大,也踩了不少坑,现在将成果跟大家分享一下!

一、准备工作

        在创建插件的时候需要用到plugman插件,所以我们先在cmd中通过npm进行安装,如下:

npm install -g plugman

二、开发插件

        1.创建插件

        这时候需要我们用到之前安装的plugman插件了,在cmd中插入命令,命令格式如下

plugman create -name <plugmanName> --plugin_id <pluginID> --plugin_version <pluginVersion> [--path <directory>] [--variable NAME=VALUE]
        说明:
  • <plugmanName> 为插件的名字,它也决定了文件夹的命名
  • <pluginID> 为插件的id,比如扫描二维码插件的id为:phonegap-plugin-barcodescanner  (需要注意id一般都是小写字母)
  • <pluginVersion> 为插件的版本号,例如:0.0.1
  • <directory> 为插件的创建目录,如果不指定默认为当前目录
  • --variable Name=value 为一些额外的描述,如description、Author
        例如:
plugman create -name TestPlugin --plugin_id cordova-plugin-test --plugin_version 1.0.0
        或者复杂一点的:
plugman create -name TestPlugin --plugin_id cordova-plugin-test --plugin_version 1.0.0 --path d:\ --variable description="This is a plugin" --variable Author="wu ming"
        注意后面不要加 中括号哦,上面加中阔号是想说明这些信息不重要

        2.在创建的插件中添加android平台
cd TestPlugin

plugman platform add -platform_name android
        创建完成后的目录结构如下:

        从目录结构中不难看出,java文件是面向android项目的,类继承了CordovaPlugin,重写其中的execute()方法,在方法中可以调用js传来的action值,匹配相应的方法,在方法中可以调用jar包,也可以调用底层的方法;而js文件则是面向ionic项目的,作为中间件它将java中的方法暴露给H5,供其调用;plugin.xml文件则可以完成一些配置工作。

        这里我来费一些口舌,着重讲解一下plugin.xml文件,文件内容如下:

<?xml version='1.0' encoding='utf-8'?>
<plugin id="cordova-plugin-test" version="1.0.0" xmlns="http://apache.org/cordova/ns/plugins/1.0" 
xmlns:android="http://schemas.android.com/apk/res/android">
  <name>TestPlugin</name>
  
  <js-module name="TestPlugin" src="www/TestPlugin.js">
    <clobbers target="TestPlugin" />
  </js-module>

  <platform name="android">
    <config-file parent="/*" target="res/xml/config.xml">
      <feature name="TestPlugin">
        <param name="android-package" value="cordova.plugin.test.TestPlugin" />
      </feature>
    </config-file>

    <config-file parent="/*" target="AndroidManifest.xml">
    </config-file>
  
    <source-file src="src/android/TestPlugin.java" target-dir="src/cordova/plugin/test" />
  </platform>
</plugin>

        plugin.xml文件详解
  1. <plugin>元素中包含了id和version版本号,<name>是插件的名字,可能还会有其他的一些信息,如description(插件描述)、license(证书)、keywords(关键字)、repo(仓库地址)、issue(问题地址)等,这取决于你创建项目的时候有没有在最后添加这些信息。
  2. <js-module>元素中的name表示js的文件名,src是js文件的相对路径。这个标签可以在应用开始时自动以<script>元素的形式添加到项目的起始页中,通过在<js-module>中列出插件,可以减少开发者的工作。<clobbers>元素指明了js文件面向项目可以调用的对象,在上面的文件中通过TestPlugin向项目公开js接口。在程序中可以在import和@IonicPage之间加入declare let TestPlugin:any之后,通过TestPlugin调用js中exports的方法。
  3. <platform>它定义了某个移动平台专用的设置,包括了相关native代码的设置。可以有一个或多个平台,如android、ios、browser、wp等。
    1. <config-file parent="/*" target="res/xml/config.xml">,在config-file这个元素中定义了在插件安装过程中的改动。在本例中,一个叫TestPlugin的特性添加到Android项目的config.xml文件中,指向java类cordova.plugin.test.TestPlugin。
    2. <config-file parent="/*" target="AndroidManifest.xml">这里会向AndroidManifest.xml文件中添加配置,可以在这个元素里面添加权限,接受广播等配置,它在应用运行时会自动加入到AndroidManifest.xml文件中。
    3. <source-file>元素指出了一个或多个Android native源代码文件,当插件安装时由CLI安装。上面的例子中位于src/android目录下的TestPlugin.java文件会在应用运行的时候复制到Cordova项目的src/cordova/plugin/test目录下(我在这里已经将target-dir改过了,最开始创建时它会是src/cordova-plugin-test,也就是src后面接上你的id)。因此即使在不同package下的java文件我们都可以放到插件中android的目录下,只需要在<source-file>中将java文件指明在项目中相应的目录就可以了。

        3.插入jar包

        我们可以直接把jar包放在src\android目录下,也可以在android目录下创建libs目录。添加jar包后需要在plugin.xml文件中加入如下配置:

<source-file src="src/android/test.jar" target-dir="libs"/>
        这段代码需要放在<platform>元素之间,它表示插件src/android目录下的test.jar文件在应用运行的时候复制到cordova项目的libs文件夹下。

        我们在使用jar包的时候可以在java文件中直接引入,调用其中的方法。如下实例中,test.jar包里包含一个Operation类,里面有一个public static void add(int a,int b)的静态方法,我们可以如下调用:

TestPlugin.java

package cordova.plugin.test;

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 com.kevin.test.Operation;
/**
 * 继承CordovaPlugin接口,重写execute方法
 */
public class TestPlugin extends CordovaPlugin {

    /**
     * action:js传来的参数,通过匹配执行相应的方法
     * args:js传来的参数,以JSONArray格式,通过get方法获取值,它携带了从H5中传递过来的参数
     * callbackContext:java提供的接口供回掉给H5
     */
    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
        if(action.equals("add")){
            int a=args.getInt(0);
            int b=args.getInt(1);
            int result=Operation.Add(a,b);
            callbackContext.success(result);
            return true;
        }else if(action.equals("showToast")){
            String msg=args.getString(0);
            Toast.makeText(cordova.getActivity(), msg, Toast.LENGTH_SHORT).show();
            callbackContext.success("success" + msg);
            return true;
        }
        return false;
    }
}

TestPlugin.js

var exec = require('cordova/exec');

exports.add = function(arg0, arg1, success, error) {
    //arg0:成功回调
    //arg1:失败回调
    //arg2:将要调用类配置的标志
    //arg3:调用的原生方法名
    //arg4:参数,json格式
    exec(success, error, 'TestPlugin', 'add', [arg0, arg1]);
};
exports.showToast = function(arg0, success, error) {
    exec(success, error, 'TestPlugin', 'showToast', [arg0]);
};

        4.创建package.json文件

        这是一个非常重要的环节,如果缺少json文件在安装插件的时候会报出如下的错误信息:

> cordova plugin add E:\TestPlugin --save
Error: Invalid Plugin! E:\TestPlugin needs a valid package.json

[ERROR] An error occurred while running cordova plugin add E:\TestPlugin --save (exit code 1).
        这是在提醒我们插件中缺少package.json文件,添加方法,我觉得很好用的一种是将cmd定位到插件目录,执行

npm init
        之后会提醒你添加name、version等信息,如果不想填可以直接回车跳过,最后输入y完成json文件的插入,到此,插件的开发结束。


三、安装插件

        我的插件位于E:\TestPlugin,将cmd进入到ionic项目的目录下,执行插件安装命令

ionic cordova plugin add E:\TestPlugin
        注意ionic3相对于ionic2多了一个cordova。

        执行完成后在plugins文件夹中就有了自己定义的插件,如果想要卸载的话执行ionic cordova plugin remove plugin_id,(remove后面是插件的id)

例如:

ionic cordova plugin remove cordova-plugin-test


 四、插件的使用

        在ts文件中使用插件首先需要在import和@IonicPage之间声明变量 declare let TestPlugin:any;,如下

import { Component,ViewChild } from '@angular/core';
import { IonicPage, NavController, NavParams,Nav } from 'ionic-angular';

declare let TestPlugin: any;  //对变量进行声明

@IonicPage()
@Component({
  selector: 'page-menu',
  templateUrl: 'menu.html',
})
export class MenuPage {


          之后就可以通过TestPlugin对TestPlugin.js中的方法进行调用了,代码如下

  add(){
    var a=1;
    var b=2;
    TestPlugin.add(a,b,(data)=>{
      alert(data);
    },(error)=>{
      alert(error);
    });
  }
  showToast(){
    TestPlugin.showToast("消息",(data)=>{
      alert(data);
    },(error)=>{
      alert(error);
    });
  }

        到此插件开发和调用完成,多看一看别人已经写好的插件,他们之间的调用关系,目录结构之类的对自己帮助也很大。附上官网的自定义插件地址:点击打开链接

       自定义插件下载地址: demo下载




构建Ionic3自定义插件:包含jar包调用与文件结构解析 Ionic 3允许开发者创建和使用自定义插件来扩展框架的功能,使其不仅限于前端开发。本章节将介绍自定义插件的基本概念以及它在移动应用开发中的重要性。我们将探讨插件如何与原生代码进行交互,并为读者揭示创建插件的第一步。在Ionic 3中,自定义插件可以视为与原生平台(如Android和iOS)通信的桥梁,允许开发者在混合应用中访问原生功能。简而言之,插件是连接应用的Web视图层与原生平台的纽带。Ionic 3插件主要由一系列文件组成,这些文件协同工作,使得插件能够在应用中发挥其功能。 阅读详情

相关推荐

ionic3自定义插件实现(包含jar包调用,文件结构详解)

本资源实现了自定义插件,里面包含了jar包调用,并且详细讲解了文件的结构,方便大家借鉴

ionic + cordova 插件创建 最详细教程

l 介绍l 介绍本文将细致讲解cordova插件的创建、编写、配置、发布,涉及aar+jar+so、静态资源、四大组件等。l 环境准备1.node2.ionic3.cordova4.plugmanplugman是用于安装和卸载用于Apache Cordova项目的插件的命令行工具,安装plugmanl 一切都要从一个简单cordova插件开始l 创建ionic项目用于测试cordova的插件此时cordovaProject下会生成如下结构。

一条咸鱼 3214

调用cordova插件的一个ionic实例,插件包含android服务

本实例是一个ionic完完整整的工程,并且调用一个自己开发的插件,与插件进行交互。其中插件的内容为调用一个android服务的功能。本例子主要用于我博客的附加源码

ionic3 自定义cordova插件的开发和调用(包含jar包调用,文件结构详解)

ionic3 自定义插件的开发和调用(包含jar包调用,文件结构详解)

yang__Y的博客 920

Ionic编写插件-android版.pdf

详细描述了Ionic插件编写,安装,调试的整个过程,举例说明了踏过的坑

Ubuntu系统 nano 编辑器使用教程

• 原因:文件编码不兼容(如 Windows 的 CRLF 换行符)。• 若使用 SSH 工具(如 PuTTY),确保终端设置中未占用。掌握这些操作后,你可以高效使用 nano 完成大部分文本编辑任务!• 底部快捷键栏:显示常用操作的快捷键(• 如果文件已修改,会提示是否保存:按。• 顶部状态栏:显示文件名和编辑状态。表示 Ctrl + G(查看帮助)。保存时自动生成备份文件(原文件名后加。• 强制保存只读文件:用。启动 nano 时添加。启动 nano 时添加。(重做)触发自动缩进。

qq_44534541的博客 2083

Ionic自定义插件开发(附Demo)

前言 ionic是目前比较火的一个移动端混合开发框架.其中插件开发是其实现混合开发的主要方式.这里我就大概记录下自己自定义插件的一些心得.如有不好之处,还望各位看官指出。     创建自定义插件 1.安装plugman,该工具主要用于创建一个自定义的插件 npm install -g plugman 2.创建一个插件框架---例如:plugman creat --name 插件名字...

cangahi09025566的博客 4346

SIwave仿真手册——电源完整性仿真之PDN阻抗的提取(四)

(想不到我这个弱鸡的博主有一天也有被催更的时候,看到后台被催的消息,我慌了,赶紧写一篇把。) 文章目录3.1 PDN阻抗的提取3.1.1手动完成PDN阻抗的提取1、创建pin group2、创建端口3、数据文件的清理和检查(参考1.3.4&1.3.5)4、添加电容模型(参考2.2.1)(==这一步很重要==)5、开始仿真6、查看仿真结果3.1.2利用向导工具完成PDN阻抗的提取1、点击图标![在这里插入图片描述](https://img-blog.csdnimg.cn/36d974339ea5449

luohuo9844的博客 1万+

ionic插件基础(六)——自定义插件的demo

这是一个自定义插件的简单demo,演示了跟原生交互的过程

Lxr的博客 5161

WRF所需气象数据的下载方法

#数据下载是个大问题,巧妇难为无米之炊,没有数据就无法模拟啦,疫情期间国外服务器响应慢,打开网页慢都很正常啦~ WRF数据所需要的外部数据分为两种:静态地理数据,grib格式的气象数据(NAM、GFS、RUC、AGRMET等)。静态地理数据可以从WRF官网获得,比较简单,这里不做介绍。所以这篇日志重点介绍的是气象数据的获取。 提前说明,WRF官网不提供气象数据,但WRF官网提供各类气象数据的下载网址链接,所以我们下载一般还是从WRF官网开始。首先进入WRF官网,然后点击WRF ARW Uusres’ .

六出的博客 1万+

【机械视觉】Halcon—【二、Halcon算子全面介绍(超详细版)】

Halcon 的算子(operators)按照功能被系统性地划分为多个类别,官方文档中目前(Halcon 22.11 版本)共有 19 个主分类,每个主分类下还有若干子分类。 本人在此对这19个分类的常用核心算子进行了一系列的总结,且本人在文章最后还总结了一些案例经验。 注意: ​​​​​​​跨分类调用:某些算子可能在多个分类中,但官方文档中会明确其主分类。 例如: read_image(文件操作)常被其他分类(如图像处理)的示例调用,但其核心功能是文件读取。

qq_3517289697的博客 3913

ionic3中引入第三方js库的方法总结

以jquery为例: 创建ionic3项目:ionic start ionic3-test tabs 一、在使用的页面导入js文件路径;         下载jquery.min.js文件,找到assets下面,创建js文件夹,将下载好的jquery.min.js放在js文件夹下,在使用的页面的ts头部引入文件路径,我是在home页面下引入并测试的。 下面是home.ts文件      ...

qq_37705048的博客 2765

RK3568平台(网络篇)添加网络交换芯片RTL8306M

该交换芯片支持I2C、SPI、mdio通信,但是看ast1520的uboot代码采用的是mdio去通信phy芯片的,所以暂时也先采用mdio的方式,需要配置相应的引脚才可以配置成mdio通信模式,具体的配置硬件工程师解决。RTL8306M芯片上可能没有提供MDC/MDIO接口,可以通过GPIO(General Purpose Input/Output)来模拟,GPIO可实现串行输入输出,且一般CPU上会提供很多GPIO接口供用户自定义使用。

weixin_49303682的博客 3934

android cordova aar jar包 插件开发 如何兼容旧版android版

最近要集成 交通部的定位SDK,鉴于公司准备使用ionic进行开发,于是考虑对该SDK 进行插件封装。 cordova的android插件本质上使用的还是android,只是提供的是js的调用方法。 1 先来讲讲正常的插件开发流程 包含.aar,以下部分来自网络 如何建立一个全新的插件?引入一篇文章吧 https://www.cnblogs.com/VoiceOfDreams/p/11073447.html 网上很多教程了,大家可以参考。上面这篇文章讲述的是最基本的插件的内容。 2 那么如果要包含.aar或

u013457274的博客 594

Cesium初级开发教程之三十:Primitive集合

教程示例网站:https://thomaz529.github.io。

484

自建 HTML获取腾讯六宫格点选图片验证码素材,实现刷新批量获取图片方便训练

通过自建 HTML 页面,可以方便地获取腾讯六宫格二维码素材,不仅过程简单,而且可以灵活配置各种参数。希望这篇文章能帮助到需要相关素材的小伙伴。如果你有其他问题或者更好的方法,欢迎留言交流!

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 487

ionic 集成支付插件

记一下 1.添加 微信 ionic plugin add cordova-plugin-wechat –variable wechatappid=wx317e3588dff1e2f5 2.删除 MJC_App\platforms\android\libs ——libammsdk.jar 3.添加 cordova plugin add co.airsia.cordova.pingpp –va

钢ge的博客 2086

相机图像质量评估标准全解析:MTF、CA、SNR 与色彩偏差的实战理解

图像质量评估是影像系统开发中的核心环节,它直接影响用户视觉体验与终端产品竞争力。本文基于真实的图像调试工程实践,系统讲解主流图像评价指标,包括调制传递函数(MTF)、色差(CA)、信噪比(SNR)与色彩偏差(DeltaE)等关键标准。结合 Imatest 测试流程与实际样张数据,逐项拆解各项指标在实际图像分析中的意义与优化路径,帮助开发者建立完整、量化、工程化的图像质量评估体系。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 2805

ionic2/cordova自定义插件集成aar包

一、准备自定义插件 1. 准备:安装plugman npm install -g plugman 2. 新建组件 plugman create --name MyPlugin --plugin_id com.plugin.myPlugin --plugin_version 0.0.1 --name 自定义插件的名称--plugin_id 自定义插件的包名 命...

weixin_30797199的博客 237

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ionic3学习整理

首先你得安装node npm安装cordovanpm install -g ionic cordova创建你得第一个ionic appionic start helloWorld blank注:在我一次创建的时候遇到这个错误ionic Error: read ECONNRESET原因是ionic版本导致,报错的时候ionic版本为3.20,将ionic回退到3.9.2即可命令 npm instal...

weixin_41914782的博客 434

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

cordova打印机插件,找不到类使用自定义cordova插件的异常

I'm developing a printing app that uses a custom API to access the printer via USB, so I needed a custom Cordova plugin. I started developing it, it has been a very good challenge but also very frustr...

weixin_30998047的博客 555

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Ionic 2 + 手动搭建开发环境教程 【转】

ionic简介为什么选用ionic: 彻底开源且免费 性能优异 基于红的发紫的AngularJs 漂亮的UI 强大的命令行(基于更热门的nodejs) 开发团队非常活跃。 ngCordova,将主流的Cordova API或者Cordova插件封装为AngularJS扩展,使用非常方便。 开源免费的webfont icon库ionicons,基本满足你icon需求...

327

multiple dex files define Lcom/ta/utdid2/dexice/UTDdevice ionic3项目支付宝插件和百川插件冲突

这个是支付宝和百川插件冲突第一步1.这个时候按照建议在activity添加   tools:replace="android:configChanges",同时还要在manifest里边加上 xmlns:tools="http://schemas.android.com/tools", 2.然后打包又报错 这时候找到百川插件下边的  android-build.gradle  文件,把com...

阳光不朽 626

Cordova 打包常见问题

1.IONIC2/3打包白屏时间长 解决方案 ionic cordova build android --prod //使用prod模式 在config.xml 添加如下代码 <preference name="FadeSplashScreen" value="false" /> <preference name="ShowSplashScreenSpinner" value="false" /> <preference name="AutoHideS...

mobingdetong的专栏 1260

Cordova 安装最新 jpush-phonegap-plugin,jpush无法正常安装的处理过程。

1 jpush 插件 版本号 3.7.4 执行 cordova plugin add jpush-phonegap-plugin --variable APP_KEY=your_jpush_appkey后发现,plugin.xml 中的com.huawei.android.launcher.permission.CHANGE_BADGE有多余空格符号, 如果下载到本地安装 会提示:...

u013457274的博客 1036

android 和 phonegap(Cordova)交互使用Zxing二维码扫描

android方面的配置:配置环境,下载、编译Zxing源码,整合进项目1、环境下载、安装,编译Zxing源码下载Zxing源码地址:https://github.com/zxing/zxing 其中android文件夹下为一个功能应用,有分享、历史记录; androidtest文件夹下为一个测试应用,主要是测试android文件夹下的应用的功能; android-integration文件夹下

你好,兜先生 3770
上一篇: 解决eclipse创建spring boot项目加载不到application.properties配置文件的问题
下一篇: ionic3 解决img标签无法在手机上正常显示问题
仲夏夜之恋
博客等级 码龄12年 27粉丝 11原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值