iOS uni-app 原生插件开发

article/2025/8/6 0:02:03

下面以创建一个物体检测插件为例。

开发环境:

  • XCode 16.3
  •  SDK包 ,4.45
  •  HBuilderX 4.45

1. 解压 SDK

2. 创建一个插件,放到 HBuilder-uniPluginDemo 目录下

3. 配置依赖

打开 HBuilder-uniPlugin.xcodeproj

将 ObjectDetector.xcodeproj 拖到工程里这这个位置

配置支持最低支持 iOS13

配置为生成静态库

配置头文件依赖

配置 target 依赖,让 HBuilder 依赖 ObjectDetector, 链接 ObjectDetector 生成的静态库

4. 配置 appkey

更改一下 bundle id, 还有签名, 尝试运行

去官网 申请 appkey, 填写到 plist 中

创建一个 app, 名字叫 ObjectDetector,获取对应的 appid 和 appkey

Bingo! 恭喜你,现在可以运行了,下面进行插件代码的开发

5. 写插件代码

我用到了 swift5, 需要配置一下版本,现在默认是 swift6 

6. 验证插件是否好用

HBuilderX 新建工程, 名字叫 ObjectDetector, 与我们上面获取 appkey 和 appid 的应用名字一致

vue 版本选 2, 选 3 原生回调给 js 的 eventName 对不上

根据接口定义,写一个 nvue 文件

生成本地资源

拷贝资源文件

保证这两个 appid 一致

配置插件

 运行 HBuilder , Bingo! 成功了~

注意:

每次重新编译 HBuilderX 生成新的资源拷贝到 apps 目录,需要删除 app,重新运行,避免 js 更新不及时。

7. 插件打包

插件包结构

|-- 插件id							// 插件包是一个以插件id命名的文件夹|-- android						// 存放 android 插件所需要的依赖库及资源文件|-- ios							// 存放 ios 插件所需要的依赖库及资源文件|-- package.json				// 插件配置文件

我们只打包 iOS 的

编译静态 framework, 选择 release 模式, 然后 build 

结合资源文件,以及 framework 文件,生成打包

package.json 文件内容

{"name": "object_detection","id": "object_detection","version": "0.1","description": "摄像头物体检测插件","_dp_type": "nativeplugin","_dp_nativeplugin": {"ios": {"plugins": [{"type": "component","name": "object-detector-view","class": "ObjectDetectorComponent"}],"frameworks": ["AVFoundation.framework","Vision.framework","CoreML.framework"],"integrateType": "framework","deploymentTarget": "13.0","embedSwift": true,"validArchitectures": ["arm64"],"resources": ["yolov8n.mlmodelc"]}}
}

8.  本地使用插件

在 HBuilderX 的工程中,创建一个 nativeplugins文件夹,将打包的插件发进去

选择本地插件

自定义基座打包

填写信息,证书、描述文件,证书密码,打包

打包后使用自定义基座运行,运行成功即证明,插件是好用的~

9. 不断尝试与排错,恭喜你,插件开发难不倒你了

工程使用的代码在这里


http://www.hkcw.cn/article/ZMLZLNOCjE.shtml

相关文章

生产力工具|vscode for mac的安装python库和使用虚拟环境(一)

一、在vscode中运行python代码(mac或windows) (一)在vscode中安装Python插件 若想在vscode中高效率的编辑Python代码,需要安装Python插件,点击下图中红框内的按钮: 然后在左上角的搜索框中输入…

【超适合小白】苹果电脑MAC——抓包工具-Charles使用超详细教程!!!适合小白!!!

一、Charles是什么? Charles是一个HTTP代理服务器,是类似于一个监视器,简单来说可以直接抓取手机或者浏览器中的接口,当手机/浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据。它允许…

在macOS上安装MySQL

macOS的MySQL有多种不同的形式: 1、本机包安装程序,它使用本机macOS安装程序(DMG)引导您完成MySQL的安装。有关详细信息,请参阅第2.4.2节,“使用本机包在macOS上安装MySQL”。您可以将包安装程序与macOS一…

2024年博客之星主题创作|Android 开发:前沿技术、跨领域融合与就业技能展望

目录 引言 一、推动 Android 应用创新的核心力量 1.1 人工智能与机器学习的崛起 1.2 增强现实(AR)与虚拟现实(VR)的应用扩展 1.3 5G技术的推动 1.4 跨平台开发技术的成熟 1.4.1 React Native 1.4.2 Flutter 1.4.3 Taro …

中兴B862AV3.2M刷机包晨星MSO9385_2+8_安卓9_免拆机免打开ADB固件包

在开始刷机之前,请务必确认你的设备型号为中兴 B862AV3.2M 且搭载晨星处理器,同时备份好设备中的重要数据,刷机有风险,操作需谨慎!以下是详细的刷机步骤: 一、准备工作 下载刷机固件:从可靠的来…

计算机网络:TCP/IP协议(从 MAC 地址到 VLAN 标签:数据链路层如何重构网络拓扑逻辑)

目录 前言数据链路层MAC地址共享介质型网络争用方式令牌传递方式 非共享介质网络根据MAC地址进行转发环路检测技术生成树源路由法 VLAN以太网帧格式 总结写在文末 前言 本期开始将分层进行讲解OSI参考模型或者TCP/IP参考模型,从数据链路到应用层,本期先…

基于 LLM 的商城智能客服助理开发实战

参考LLM开源文档 Datawhale LLM教程🌐📚 文章目录 💡实现思路🚀实现步骤📊 数据集介绍⚙️ 数据处理📝 评估输入🔍 提取商品关键词🔍 检索商品信息📝 生成并评估回答✨ …

电子电器架构 --- OTA测试用例分析(中)

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…

安卓逆向篇LSP 模块HOOK 添加技术绕过检测算法解密逻辑验证

前置解释: 0 、 Magisk : 是当前 Android 社区用来获取 root 权限的主流方式开源工具 1 、 LSP 框架: XPosed 框架因只支持安卓 8 及以下,故高版本应使用 MagiskLSPosed 2 、 HOOK 技术: 钩子技术&…

网络攻防技术一:绪论

文章目录 一、网络空间CyberSpace1、定义2、基本四要素 二、网络空间安全1、定义2、保护对象3、安全属性4、作用空间 三、网络攻击1、攻击分类2、攻击过程 四、网络防护1、定义2、安全模型3、安全服务5类4、特定安全机制8种5、普遍性安全机制5种 五、网络安全技术发展简史1、第…

李臻20242817_安全文件传输系统项目报告_第14周

安全文件传输系统项目报告(第 14 周) 1. 代码链接 Gitee 仓库地址:https://gitee.com/li-zhen1215/homework/tree/master/Secure-file 代码结构说明: SecureFileTransfer/ ├── client/ # 客户端主目…

分布式流处理与消息传递——Paxos Stream 算法详解

Java 实现 Paxos Stream 算法详解 一、Paxos Stream 核心设计 #mermaid-svg-cEJcmpaQwLXpEbx9 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-cEJcmpaQwLXpEbx9 .error-icon{fill:#552222;}#mermaid-svg-cEJcmpaQw…

设计模式——观察者设计模式(行为型)

摘要 本文详细介绍了观察者设计模式,包括其定义、结构、实现方式、适用场景以及实战示例。通过代码示例展示了如何在Spring框架下实现观察者模式,以及如何通过该模式实现状态变化通知。同时,对比了观察者模式与消息中间件在设计理念、耦合程…

Android基础入门:dataBinding的简单使用

1.2修改布局文件 选中布局文件的第一行&#xff0c;按alterenter就会弹出提示&#xff0c;默认选中data binding layout 改造好的的新的布局文件里最大的变化就是多了一对<data></data>标签&#xff1b;很容易想到这是为了实现布局文件里数据和布局的分离&#xff…

在Android设置界面中实现颜色选择器

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;在Android开发中&#xff0c;颜色选择器是设置界面中实现用户自定义界面主题色或字体颜色的常用功能。本教程详细介绍了如何设计颜色选择器布局&#xff0c;通过 GridView 或 RecyclerView 展示颜色列表&am…

小程序微信认证/年审流程

看清楚文字描述&#xff0c;别光看图&#xff0c;图并不一定准确&#xff0c;按照你想填写的填写、&#xff0c;本教程只是提供一个参考。 1.登录微信公众平台 : 微信公众平台【← ←点击这个蓝色字体】&#xff08;选择正确的小程序&#xff09;&#xff0c;或者根据第三方…

macOS版本微信 4.0 之后,双开策略

从 macOS 版本微信 3.0 升级到 4.0 之后&#xff0c;之前的双开策略实效了。 当然期待微信能够让之前方法回归。这是最理想的。 咱也该自己动手丰衣足食 &#xff5e;&#xff5e;&#xff5e; 第一步 创建微信的「分身」 sudo cp -R /Applications/WeChat.app /Applicati…

EasyPlayer-RTSP-Android:一款强大的流媒体播放器

EasyPlayer-RTSP-Android&#xff1a;一款强大的流媒体播放器 【下载地址】EasyPlayer-RTSP-Android一款强大的流媒体播放器 EasyPlayer-RTSP-Android 是一款功能强大的 Android 流媒体播放器&#xff0c;支持 RTSP、RTMP、HLS 和 HTTP 等多种协议&#xff0c;适用于各种音视频…

mac怎么安装pycharm?

安装步骤&#xff1a;1、打开PyCharm官网&#xff0c;在官网首页点击“下载”按钮&#xff0c;选择“MacOS”版本进行下载&#xff1b;2、双击打开安装包&#xff0c;将PyCharm拖动到应用程序文件夹中&#xff1b;3、根据提示进行安装&#xff0c;在第一次运行PyCharm时&#x…

【工具】Raycast – Mac提效工具

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 引入 以前看到同事们锁屏的时候,不知按了什么键,直接调出这个框,然后输入lock屏幕就锁了。 跟我习惯的按Mac开机键不大一样。个人觉得还…