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

uniapp-原生android插件开发摘要

uni-app在App侧的原生扩展插件,支持使用java、object-c等原生语言编写,从HBuilderX 3.6起,新增支持了使用uts来开发原生插件。

基础项目

  • UniPlugin-Hello-AS工程请在App离线SDK中查找

基础项目(App离线SDK)已经配置好了自定义插件所需要的环境,直接使用基础项目添加自己的自定义插件或者修改以有的自定义插件

扩展 Module

  • Module 扩展 非 UI 的特定功能
  • Module 不支持代码通过 new Module的方式创建对象。无法正常使用!

扩展组件 Component

  • Component 扩展 实现特别功能的 Native 控件
  • Component 不支持代码中 new Component 创建对象。无法正常使用!

更多其他细节查看:开发者须知 | uni小程序SDK

集成uni-app项目测试插件

  • 安装最新HbuilderX 大于等于1.4.0+

  • 创建uni-app工程或在已有的uni-app工程编写相关的.nvue 和.vue文件。使用uni-app插件中的module 或 component。

  • xxx.vue 示例代码(源码请参考UniPlugin-Hello-AS项目中uniapp示例工程源码文件夹的unipluginDemo工程,导入示例工程时需要重新获取appid

  • 选择 发行--->原生APP-本地打包--->生成本地打包App资源 等待资源生成!(这里是指hx项目)
  • 在控制台会输出编译日志,编译成功会给出App资源路径(如:项目 unipluginDemo 导出成功,路径为:/Users/admin/Downloads/4.45/AndroidSDK@4.45.82353_20250106/UniPlugin-Hello-AS/uniapp示例工程源码/unipluginDemo/unpackage/resources)
  • 把APP资源文件放入到UniPlugin-Hello-AS工程下 app Module根目录assets/apps/测试工程appid/www对应目录下,再修改assets/data/dcloud_control.xml!修改其中appid=“测试工程appid”!,测试工程UniPlugin-Hello-AS 已有相关配置可参考。具体可查看App离线打包。

  • appid注意 一定要统一否则会导致应用无法正常运行!

  • 配置"app"Module下的 build.gradle. 在dependencies节点添加插件project引用 (以uniplugin_richalert为例)
    // 添加uni-app插件
    implementation project(':uniplugin_richalert')
    
  • 运行测试。测试运行时一切要以真机运行为主。
  • 1.10版本起需要申请Appkey,具体请点击链接

生成uni-app插件

  • 完整的android 插件包.ZIP包含:
    • android文件
      • .aar文件 : 包括插件aar、插件所依赖的aar。
      • libs文件夹 : 存放插件包依赖的第三方 .jar文件和.so文件
    • package.json 插件信息
      • 点击查看具体说明
准备相关文件
  • 创建以插件id命名的文件夹
  • 创建android文件夹。并将该文件夹放入到新建的插件id命名的文件夹中

示例:

生成插件的aar并放入到android目录下

  • 选择Gradle--->插件module--->Tasks--->build或other--->assembleRelease编译module的aar文件

注意:新版本Android studio将assembleRelease放入other中了

  • 创建package.json文件并填写必要的信息。放入到android目录下

  • 创建libs文件夹。并放入到android目录下

    • 将插件依赖的jar文件放入到libs文件夹中
    • 将插件依赖的.so文件放入到libs文件夹中
  • 将插件依赖的aar文件放入到插件android目录下

注意

目前发现部分同学将开发插件的uniapp-v8-release.aar、uniapp-release.aar放到了插件包libs中。导致冲突。切记不要放进libs里去!!! 插件所依赖的aar要放到android目录下。

Andorid 插件包配置

uni原生插件如果支持Android平台,则需在插件下添加android目录,并将所有Android平台相关的资源都放到此目录下

  • aar文件,直接放到android目录下,云端打包会自动引用所有的aar文件
  • android\libs目录,所有需要使用的jar文件放到此目录,如果包含so文件,则放到libs下对应cpu类型目录
  • android\assets目录,Android平台需要assets资源
  • android\res目录,Android平台需要的res资源

在package.json文件中"_dp_nativeplugin"节点下添加"android"节点,根据需求配置以下数据

plugins

插件注册配置,JSON数组对象,至少要包含一个配置项

  • type: 必填,插件类型,"module"表示模块插件,对应weex中的Module模式;"component"表示UI组件,对应weex中的Component模式。
  • name 必填,注册插件的名称, 必须与插件标识一致
  • class 必填,注册插件的类名

integrateType

必填,插件集成类型,即原生导出的文件类型

  • aar 原生导出aar包时配置为此类型
  • jar 原生导出jar包时配置为此类型,此时jar文件必须放到android下的libs目录中

默认为aar,推荐使用aar类型

更多细节:uni小程序SDK

注意:运行时只能在手机端小程序端运行会报错, 其次在调用原生插件方法时候需要再基座下运行,要不然会报错:找不到原生插件对应的方法

相关文章:

uniapp-原生android插件开发摘要

uni-app在App侧的原生扩展插件,支持使用java、object-c等原生语言编写,从HBuilderX 3.6起,新增支持了使用uts来开发原生插件。 基础项目 UniPlugin-Hello-AS工程请在App离线SDK中查找 基础项目(App离线SDK)已经配置好了自定义插件所需要的…...

GIT工具学习【1】:基本操作

目录 0.本地代码分区1.配置自己的个人信息(设置一次即可)2.新建仓库3.提交代码到暂存区(加入购物车)4.从暂存区撤回(不会改变工作区文件)5.恢复指定版本(会改变工作区文件)5.1&#…...

《国密算法开发实战:从合规落地到性能优化》

前言 随着信息技术的飞速发展,信息安全已成为全球关注的焦点。在数字化时代,数据的保密性、完整性和可用性直接关系到国家、企业和个人的利益。为了保障信息安全,密码技术作为核心支撑,发挥着至关重要的作用。国密算法,即国家密码算法,是我国自主设计和推广的一系列密码…...

【语法】C++中string类中的两个问题及解答

贴主在学习string类时遇到过两个困扰我的问题,今天拿出来给大家分享一下我是如何解决的 一、扩容时capacity的增长问题 在string的capacity()接口中,调用的是这个string对象的容量(可以存多少个有效字符),而size()是调用的string对象现在有…...

LeetCode-154. 寻找旋转排序数组中的最小值 II

1、题目描述: 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums [0,1,4,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 [4,5,6,7,0,…...

2.数据结构:1.Tire 字符串统计

1.Tire 字符串统计 #include<algorithm> #include<cstring> #include<iostream>using namespace std;const int N100010; int son[N][26];//至多 N 层&#xff0c;每一层至多 26 个节点&#xff08;字母&#xff09; int cnt[N];//字符串至多 N 个&#xff…...

C语言复习4:有关数组的基础常见算法

# 数组的常见算法 - 查找算法 1. 基本查找/顺序查找 2. 二分查找/折半查找 3. 插值查找 4. 分块查找 5. 哈希查找 6. 树表查找 7. 斐波那契查找 - 排序算法&#xff08;顾名思义&#xff0c;就是把没有顺序的…...

Ubuntu从零创建Hadoop集群

目录 前言 前提准备 1.设置网关和网段 2.查看虚拟机IP及检查网络 3.Ubuntu相关配置 镜像源配置 下载 vim编辑器 4.设置静态IP和SSH免密(可选) 设置静态IP SSH免密 5.JDK环境部署 6.Hadoop环境部署 7.配置 Hadoop 配置文件 HDFS集群规划 HDFS集群配置 1.配…...

GPIO概念

GPIO通用输入输出口 在芯片内部存在多个GPIO&#xff0c;每个GPIO用于管理多个芯片进行输入&#xff0c;输出工作 引脚电平 0v ~3.3v&#xff0c;部分引脚可容任5v 输出模式下可控制端口输出高低电平&#xff0c;可以驱动LED&#xff0c;控制蜂鸣器&#xff0c;模拟通信协议&a…...

Node.js, Bun, Deno 比较概述

以下是 Node.js、Bun 和 Deno 的对比分析 概览 对比维度Node.jsDenoBun首次发布200920202022创始人Ryan DahlRyan Dahl&#xff08;Node.js 原作者&#xff09;Jarred Sumner运行时引擎V8&#xff08;Chrome&#xff09;V8&#xff08;Chrome&#xff09;JavaScriptCore&#…...

C# 类库打包dll文件

目录 前言操作流程注意事项 前言 在C#中&#xff0c;有多种方式可以对代码进行加密&#xff0c;以保护源代码不被轻易查看或修改&#xff0c;这篇文章主要介绍将C# cs类文件加密为dll文件的方式进行保护。 操作流程 在 Visual Studio 中&#xff0c;选择“创建新项目”。 选…...

Linux中的UDP编程接口基本使用

UDP编程接口基本使用 本篇介绍 在前面网络基础部分已经介绍了网络的基本工作模式&#xff0c;有了这些理论基础之后&#xff0c;下面先从UDP编程开始从操作部分深入网络 在本篇中&#xff0c;主要考虑下面的内容&#xff1a; 创建并封装服务端&#xff1a;了解创建服务端的…...

RAG项目实战:金融问答系统

需求痛点 私有知识很多&#xff0c;如何让大模型只选择跟问题有关的知识进行参考呢&#xff1f; 需求分析 是否可以使用关键词匹配呢&#xff1f;以前的搜索主要使用关键词匹配&#xff0c;这个要求太高了&#xff0c;需要提前抽取准备好关键词&#xff0c;有点像以前SEO的工…...

大白话React第十一章React 相关的高级特性以及在实际项目中的应用优化

假设我们已经对 React 前端框架的性能和可扩展性评估有了一定了解&#xff0c;接下来的阶段可以深入学习 React 相关的高级特性以及在实际项目中的应用优化&#xff0c;以下是详细介绍及代码示例&#xff1a; 1. React 高级特性的深入学习 1.1 React 并发模式&#xff08;Con…...

虚拟机Linux操作(持续更新ing)

虚拟机操作(持续更新ing) 虚拟机基本操作(Linux) # Linux # 立刻关机 poweroff # 立刻关机&#xff0c;可以选择数字或者具体时间 shutdown -h now # 立刻重启&#xff0c;可以选择数字或者具体时间 shutdown -r now # 立刻重启 reboot # cd 切换目录,下面用根目录举例 cd /…...

【开源-线程池(Thread Pool)项目对比】

一些实现**线程池&#xff08;Thread Pool&#xff09;**功能的开源项目的对比分析。 线程池功能的开源项目 项目名称语言优点缺点适用场景开源代码链接ThreadPoolC简单易用&#xff0c;代码简洁&#xff1b;适合快速原型开发。功能较为基础&#xff0c;不支持动态调整线程数…...

JMeter 实战项目脚本录制最佳实践(含 BadBoy 录制方式)

JMeter 实战项目脚本录制最佳实践&#xff08;含 BadBoy 录制方式&#xff09; 一、项目背景 在软件测试过程中&#xff0c;使用 JMeter 进行性能测试和功能测试是常见的操作。本实战项目将详细介绍如何使用 JMeter 自带工具以及 BadBoy 进行脚本录制&#xff0c;并完善脚本以…...

Jackson注解实战:@JsonInclude的妙用

在日常的Java开发中&#xff0c;我们经常需要将Java对象序列化为JSON格式&#xff0c;以便进行数据传输或存储。然而&#xff0c;有时候我们并不希望在JSON中包含某些空值或不必要的字段&#xff0c;这不仅会增加数据的冗余性&#xff0c;还可能对后续的处理造成困扰。Jackson库…...

CAN总线通信协议学习1——物理层

首先来看看CAN是怎么产生的&#xff1a;简单理解&#xff0c;CAN就是一种“拥有特别连接方式”的数据传输的总线&#xff0c;其有特定的一些规则。 &#xff08;注&#xff1a;资料及图片来源于知乎博主TOMOCAT。&#xff09; CAN总线的结构 查阅参考文献&#xff0c;OSI标准…...

Vim 常用快捷键大全:跳转、编辑、查找替换全解析

摘要&#xff1a; Vim 是一款非常强大的文本编辑器&#xff0c;许多程序员和系统管理员都离不开它。 本文详细介绍了 Vim 编辑器中的常用快捷键和命令&#xff0c;从基本模式、光标移动、编辑操作到查找替换&#xff0c;再到文件保存等常用操作&#xff0c;帮助你快速上手并提…...

YimMenu:GTA V体验增强工具的全方位应用指南

YimMenu&#xff1a;GTA V体验增强工具的全方位应用指南 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu …...

告别写死地址!CH32V IAP升级实战:用函数传参实现APP跳转地址的动态配置

CH32V IAP升级进阶&#xff1a;动态跳转地址的工程实践与安全设计 在嵌入式开发中&#xff0c;IAP&#xff08;In-Application Programming&#xff09;技术是实现固件远程更新的重要手段。对于CH32V系列RISC-V MCU而言&#xff0c;官方示例中"写死"跳转地址的做法虽…...

内网环境下基于Verdaccio搭建企业级npm私服及自动化依赖包管理实践

1. 为什么企业需要搭建npm私有仓库 最近几年在前端工程化领域&#xff0c;npm已经成为不可或缺的依赖管理工具。但对于企业级开发团队来说&#xff0c;直接使用公共npm仓库会遇到几个棘手问题&#xff1a; 第一是网络隔离问题。很多金融、政务类项目开发环境都是完全离线的内网…...

交付前批量人脸脱敏自动模糊的一点记录

客户给了一批线下沙龙现场图&#xff0c;两百三十张上下&#xff0c;要用于对外案例页&#xff0c;合同里写了人脸需做不可辨认处理。手工框选不现实&#xff0c;我这次用【批量图片面部识别自动模糊工具】走完整交付链&#xff0c;只记和排期、验收相关的点。输入支持拖文件夹…...

告别FTP客户端工具:手把手教你用Qt写一个带进度条的FTP上传器

用Qt打造企业级FTP上传模块&#xff1a;从进度监控到断点续传实战 在工业自动化、医疗影像传输等专业领域&#xff0c;文件传输的可靠性和可视化程度直接影响用户体验。传统FTP客户端往往功能单一&#xff0c;无法与企业自有系统深度集成。本文将带你用Qt的QNetworkAccessManag…...

Phi-4-mini-reasoning企业应用:替代传统规则引擎做逻辑校验服务

Phi-4-mini-reasoning企业应用&#xff1a;替代传统规则引擎做逻辑校验服务 1. 为什么企业需要逻辑校验服务 在现代企业系统中&#xff0c;逻辑校验无处不在。从电商平台的优惠券规则验证&#xff0c;到金融系统的风控审核&#xff0c;再到制造业的工艺流程检查&#xff0c;都…...

告别手动重启!用宝塔PM2管理器实现Node.js热更新(2023最新配置指南)

2023终极指南&#xff1a;用宝塔PM2打造Node.js热更新开发流水线 每次保存代码都要手动重启服务&#xff1f;还在为部署中断用户体验而头疼&#xff1f;作为经历过数百次深夜紧急部署的全栈开发者&#xff0c;我总结出一套零中断热更新方案。只需15分钟配置&#xff0c;让你的N…...

阅读APP书源完全指南:3种快速导入方法与问题解决方案

阅读APP书源完全指南&#xff1a;3种快速导入方法与问题解决方案 【免费下载链接】Yuedu &#x1f4da;「阅读」自用书源分享 项目地址: https://gitcode.com/gh_mirrors/yu/Yuedu 「阅读」APP书源开源项目为小说爱好者提供了一个强大的解决方案&#xff0c;让您能够在一…...

华为HarmonyOS PC突破:一键运行Linux工具

文章目录前言从「望Linux兴叹」到「一键真香」这三个功能&#xff0c;打工人看了会流泪开发者&#xff1a;终于不用「双机党」了生态破局的关键一步普通用户也能受益&#xff1f;当然一点冷静的观察写在最后前言 昨儿个IT圈炸锅了。 华为鸿蒙PC端应用市场悄咪咪上线了个叫融合…...

Python 学习笔记:学习路线图规划

1989 年的圣诞节期间&#xff0c;时任荷兰数学和计算机科学研究学会&#xff08;CWI&#xff09;研究员的 Guido van Rossum[1] 决定基于 ABC 语言设计并实现一门新的脚本编程语言&#xff0c;最初目的是用于替代 Unix shell 和部分 C 程序&#xff0c;以承担 Amoeba 分布式操作…...