uniapp—android原生插件开发(4uniapp引用aar插件)

本篇文章从实战角度出发,将UniApp集成新大陆PDA设备RFID的全过程分为四部曲,涵盖环境搭建、插件开发、AAR打包、项目引入和功能调试。通过这份教程,轻松应对安卓原生插件开发与打包需求!

一、将android程序打包成aar插件包

  • 直接使用Terminal命令窗口打包
  1. chmod +x ./gradlew                             授权目录
  2. ./gradlew clean                                    清理构建文件
  3. ./gradlew assembleRelease                打包成正式包

  • 查看打包文件

二、uniapp引用aar原生插件包(暴露的模块名为RfidModule)

  • 在uniapp中新增相关目录结构,按照规范引用相关文件和依赖,并配置相关配置(要与android项目的中的dcloud_uniplugins.json配置一致)

  • uniapp>manifest.json添加App原生插件配置

三、测试页面调用方法

  • 使用方式:

        const rfidModule = uni.requireNativePlugin('RfidModule');

<template><view class="content"><image class="logo" src="/static/logo.png"></image><view class="text-area"><button @click="add">测试添加方法</button><button @click="connect">初始化并连接设备</button><button @click="startInventory">启动盘点</button><button @click="readTagData">读取标签数据</button><button @click="writeTagDataToEPC">写入标签数据</button><button @click="stopInventory">停止盘点</button><button @click="disconnect">断开连接</button></view></view>
</template><script>const rfidModule = uni.requireNativePlugin('RfidModule');console.log(rfidModule);export default {data() {return {title: 'Hello'}},onLoad() {},methods: {// 测试添加方法add() {rfidModule.add({a: 1, b: 3}, e => {uni.showToast({title: "add测试方法=====" + JSON.stringify(e),icon: 'none'})})// let rtn = rfidModule.add({// 	a: 1,// 	b: 3// });// console.log(rtn);// uni.showToast({// 	title: "add测试方法=====" + JSON.stringify(rtn),// 	icon: 'none'// })},// 初始化并连接设备connect() {rfidModule.initialize();let rtn = rfidModule.connect();uni.showToast({title: "初始化并连接设备=====" + JSON.stringify(rtn),icon: 'none'})},// 启动盘点startInventory() {let rtn = rfidModule.startInventory()uni.showToast({title: "启动盘点=====" + JSON.stringify(rtn),icon: 'none'})},// 读取标签数据readTagData() {let rtn = rfidModule.readTagData(2, 0, 2, "00000001");uni.showToast({title: "读取标签数据=====" + JSON.stringify(rtn),icon: 'none'})},// 写入标签数据writeTagDataToEPC() {let rtn = rfidModule.writeTagDataToEPC("dataToWrite", "00000001");uni.showToast({title: "写入标签数据=====" + JSON.stringify(rtn),icon: 'none'})},// 停止盘点stopInventory() {let rtn = rfidModule.stopInventory();uni.showToast({title: "停止盘点=====" + JSON.stringify(rtn),icon: 'none'})},// 断开连接disconnect() {let rtn = rfidModule.disconnect()uni.showToast({title: "断开连接=====" + JSON.stringify(rtn),icon: 'none'})}}}
</script>

四、制作自定义调试基座

五、uniapp真机调试自定义原生插件

  • 使用自定义基座运行到真机上(非真机上无法调试自定义插件

  • 运行效果

此时,流程跑通了,后续根据自己的业务开发即可。

踩坑不容易,如果对你有帮助,麻烦点个赞或收藏一下,谢谢!!!

快速通道

uniapp—android原生插件开发(1环境准备)

uniapp—android原生插件开发(2原生插件开发)

uniapp—android原生插件开发(3Android真机调试)

uniapp—android原生插件开发(4uniapp引用aar插件)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/60371.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RedisTemplate序列化设置

前言 在使用 Redis 作为缓存数据库时&#xff0c;我们通常会使用 RedisTemplate 来简化与 Redis 进行交互的操作。而其中一个重要的配置项就是序列化设置&#xff0c;它决定了数据在存储到 Redis 中时的格式。本文将介绍如何进行 RedisTemplate 的序列化设置&#xff0c;以及一…

如何优化Elasticsearch的查询性能?

优化Elasticsearch查询性能可以从以下几个方面进行&#xff1a; 合理设计索引和分片&#xff1a; 确保设置合理的分片和副本数&#xff0c;考虑数据量、节点数和集群大小。根据数据量和节点数量调整分片数量&#xff0c;避免使用过多分片&#xff0c;因为每个分片都需要额外的…

使用R语言survminer获取生存分析高风险和低风险的最佳截断值cut-off

使用R语言进行Cox比例风险模型分析和最佳截断值寻找 引言 在生存分析中&#xff0c;Cox比例风险模型是一种常用的统计方法&#xff0c;用于评估多个变量对生存时间的影响。在临床研究中&#xff0c;我们经常需要根据某些连续变量的预测值来对患者进行分组&#xff0c;以便更好…

ORU——ORAN 无线电单元参考架构

ORU ORU-开放无线电单元ORU 类型O-RU“A类”O-RU“B类” 参考相关文章 ORU-开放无线电单元 ORU&#xff08;开放无线电单元&#xff09;的目的是将天线发送和接收的无线电信号转换为数字信号&#xff0c;该数字信号可通过前传传输到分布式单元&#xff08;DU&#xff09;。考虑…

FFMPEG录屏(22)--- Linux 下基于X11枚举所有显示屏,并获取大小和截图等信息

众人拾柴火焰高&#xff0c;github给个star行不行&#xff1f; open-traa/traa traa is a versatile project aimed at recording anything, anywhere. The primary focus is to provide robust solutions for various recording scenarios, making it a highly adaptable tool…

卷积核里面的数字表示什么意思?

卷积核里面的数字表示的是一种权重&#xff0c;这些权重在与输入数据进行卷积操作时起着至关重要的作用。简单来说&#xff0c;卷积核是一个小型矩阵&#xff0c;它里面的每个数字都对应着输入数据中某个位置的数值在特征提取过程中的一个系数。 当卷积核在输入数据上滑动时&am…

多线程和线程同步复习

多线程和线程同步复习 进程线程区别创建线程线程退出线程回收全局写法传参写法 线程分离线程同步同步方式 互斥锁互斥锁进行线程同步 死锁读写锁api细说读写锁进行线程同步 条件变量生产者消费者案例问题解答加强版生产者消费者 总结信号量信号量实现生产者消费者同步-->一个…

FlinkPipelineComposer 详解

FlinkPipelineComposer 详解 原文 背景 在flink-cdc 3.0中引入了pipeline机制&#xff0c;提供了除Datastream api/flink sql以外的一种方式定义flink 任务 通过提供一个yaml文件&#xff0c;描述source sink transform等主要信息 由FlinkPipelineComposer解析&#xff0c…

Zustand浅学习

道阻且长&#xff0c;行而不辍&#xff0c;未来可期 之前只是会使用zustand,也没仔细看过zustand的文档&#xff0c;前段时间一个合约朋友问我前端的zustand怎么用&#xff0c;啊&#xff0c;这&#xff0c;是那个笑起来明媚的不像话的帅哥问我问题诶&#xff0c;那我得认真一下…

海量数据迁移:Elasticsearch到OpenSearch的无缝迁移策略与实践

文章目录 一&#xff0e;迁移背景二&#xff0e;迁移分析三&#xff0e;方案制定3.1 使用工具迁移3.2 脚本迁移 四&#xff0e;方案建议 一&#xff0e;迁移背景 目前有两个es集群&#xff0c;版本为5.2.2和7.16.0&#xff0c;总数据量为700T。迁移过程需要不停服务迁移&#…

TypeScript:现代 JavaScript 的超级集

目录 为什么使用 TypeScript? TypeScript 的基本特性 TypeScript 的优势 TypeScript项目实战 简单的命令行任务管理系统 TypeScript 是由微软开发的一个开源编程语言,它是 JavaScript 的一个严格超集。TypeScript 的核心特性是静态类型检查,使得开发者可以在编写代码时…

‌MySQL 5.7和8.0版本在多个方面存在显著区别,主要包括性能优化、新特性引入以及安全性提升

性能优化‌ ‌编码器和解码器‌&#xff1a;MySQL 8.0引入了更快和更高效的编码器和解码器&#xff0c;支持压缩、加密、并发等方面的优化&#xff0c;而MySQL 5.7的编码器和解码器相对较慢。‌认证方式‌&#xff1a;MySQL 8.0默认使用caching_sha2_password作为登录认证插件&…

【贪心算法】贪心算法三

贪心算法三 1.买卖股票的最佳时机2.买卖股票的最佳时机 II3.K 次取反后最大化的数组和4.按身高排序5.优势洗牌&#xff08;田忌赛马&#xff09; 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#…

QtLua

描述 QtLua 库旨在使用 Lua 脚本语言使 Qt4/Qt5 应用程序可编写脚本。它是 QtScript 模块的替代品。 QtLua 不会为 Qt 生成或使用生成的绑定代码。相反&#xff0c;它提供了有用的 C 包装器类&#xff0c;使 C 和 lua 对象都可以从 lua 和 C 访问。它利用 Qt 元对象系统将 QOb…

Devops业务价值流:敏捷测试最佳实践

在迭代增量开发模式下&#xff0c;我们强调按照用户故事的优先级进行软件小功能的频繁交付。由于迭代周期紧凑&#xff0c;测试与开发活动往往并行进行&#xff0c;测试时间相对有限。为确保在这种快节奏的开发环境中依然能够保持产品质量&#xff0c;我们特制定以下测试阶段的…

el-table 纵向垂直表头处理

项目中表格展示会遇到需要纵向垂直表头情况&#xff0c;下面&#xff0c;我们基于el-table组件来实现这种表格。 以下是这次需要用到的数据表格&#xff0c;已知左侧违章名称是固定的&#xff0c;而月份是不固定的&#xff0c;在后端返回数据格式已确定的情况下&#xff0c;需…

Rust 模板匹配——根据指定图片查找处于大图中的位置(支持GPU加速)

Rust 模板匹配——根据指定图片查找处于大图中的位置(支持GPU加速) 01 前言 在手搓RPA工具的时候,总会碰到不好定位的情况,那么,就需要根据小图来找到对应屏幕上的位置(以图识图),这个需求也比较简单。想到市面上也有不少RPA工具都有这个功能,那么人家有的,俺也可以…

Spring框架之策略模式 (Strategy Pattern)

策略模式&#xff08;Strategy Pattern&#xff09;详解 策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;用于定义一系列算法&#xff0c;并将每种算法封装到独立的策略类中&#xff0c;使它们可以相互替换&#xff0c;从而使算法的变化独…

HDFS和HBase跨集群数据迁移 源码

HDFS集群间数据迁移&#xff08;hadoop distcp&#xff09; hadoop distcp \ -pb \ hdfs://XX.14.36.205:8020/user/hive/warehouse/dp_fk_tmp.db/ph_cash_order \ hdfs://XX.18.32.21:8020/user/hive/warehouse/dp_fksx_mart.db/HBase集群间数据&#xff08;hbase ExportSnap…

Sql server查询数据库表的数量

SELECT count(*) FROM sys.objects WHERE typeU --统计表数量 SELECT NAME FROM sys.objects WHERE typeU --列出表名称 或者 SELECT COUNT(*) FROM SysObjects Where XTypeU --统计表数量 SELECT Name FROM SysObjects Where XTypeU --列出表名称 --判断字…