uni-app怎么开发属于自己的原生插件

老雪吖_4299

老雪吖_4299

2026-10-16

903人浏览

原创

uni-app原生插件必须严格置于根目录nativeplugins下,大小写敏感且不可嵌套;package.json中class路径须与aar内真实类路径完全一致;android调试须通过离线打包工程验证,前端需用uni.requirenativeplugin按id加载。

uni-app怎么开发属于自己的原生插件

uni-app 原生插件必须放在 nativeplugins 目录下才能被识别

uni-app 不会自动扫描任意目录下的原生代码,nativeplugins 是硬性约定路径,必须手动在项目根目录创建,大小写不能错,也不能嵌套在其他文件夹里。如果放错位置(比如放在 src/nativeplugins 或 platforms/android/nativeplugins),HBuilderX 编译时完全不会加载,也不会报错——这是最常被忽略的“静默失败”点。

该目录结构必须严格遵循官方格式:

  • nativeplugins/YourPluginName/package.json(必需)
  • nativeplugins/YourPluginName/android/your-plugin.aar(Android 端必需)
  • nativeplugins/YourPluginName/ios/YourPlugin.framework(iOS 端可选,但双端插件需同时提供)

package.json 里 _dp_nativeplugin.android.plugins 的 class 必须与 AAR 中实际类路径完全一致

很多开发者打包完 AAR 后,只改了 package.json 里的 class 字段,却没注意 AAR 内部的 class 文件路径是否匹配。例如你声明了 "class": "com.example.myplugin.MyPlugin",但 AAR 中实际编译出的 class 是 com.example.myplugin.myplugin.MyPlugin(多了一级包名),运行时就会抛出 ClassNotFoundException,且错误日志不显眼,只出现在 Android Logcat 的 warn 级别中。

验证方法很简单:用 unzip -l your-plugin.aar | grep "\.class$" 查看真实类路径,再比对 package.json;同时确保该类继承 UniModule,并用 @UniJSMethod 注解标记可调用方法。

Android 插件调试必须走离线打包工程,不能直接在 HBuilderX 里真机预览

uni-app 的真机调试(包括“运行到手机”和“云打包预览”)默认使用标准基座,它不加载你本地开发的原生插件。想验证逻辑是否正确,唯一可靠方式是:把插件集成进 uniplugin-hello-as 这类离线打包工程,在 Android Studio 中运行调试。

uni-app
uni-app

uni-app 是基于 Vue 的跨端开发框架,适合开发 H5、App、小程序、鸿蒙和多端业务应用。

下载

关键配置缺一不可:

  • android/app/src/main/assets/dcloud_uniplugins.json 中添加你的插件 name(必须和 package.json 中的 id 一致)
  • android/app/src/main/AndroidManifest.xml 中 <meta-data android:name="dcloud_appkey" android:value="..."></meta-data> 的值,要与你在 DCloud 后台为该包名申请的 AppKey 完全一致
  • 签名配置(signingConfigs)必须和申请 AppKey 时用的 keystore 完全相同,否则离线包无法启动

调用前必须先 uni.requireNativePlugin,且名字要和 package.json.id 对齐

前端 JS 侧不能直接 new YourPlugin() 或 import,必须显式加载:

const myPlugin = uni.requireNativePlugin('my-plugin-id') // 注意:不是 package.json.name,而是 id

这个 id 字段必须和 package.json 中的 id 完全一致(包括大小写、连字符),否则返回 undefined。常见错误是误填成目录名或 name 字段值。另外,该调用必须在 onLaunch 或页面 onLoad 之后执行,不能放在模块顶层——因为 uni-app 生命周期未就绪时,桥接环境尚未初始化。

最后提醒一句:iOS 插件调试更麻烦,没有类似 uniplugin-hello-as 的成熟调试工程,基本靠反复云打包验证,所以 Android 端务必先调通再动 iOS。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2483

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

5343

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6390

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

5978

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

843

5

Revel框架模板渲染与表单验证
Revel框架模板渲染与表单验证

本专题围绕Revel框架视图层开发,介绍模板语法、变量输出、布局复用、表单提交、参数绑定与验证规则,帮助开发者完成安全规范的页面交互。

2026.10.16

0

15

Revel框架MVC路由与控制器
Revel框架MVC路由与控制器

本专题聚焦Revel框架MVC核心机制,讲解路由定义、控制器Action、参数绑定、请求响应和反向路由,并结合常见场景梳理接口请求处理流程。

2026.10.16

0

15

Revel框架入门与安装配置
Revel框架入门与安装配置

本专题从Revel框架环境搭建讲起,系统介绍命令行工具安装、项目创建、目录结构、配置文件及热代码重载,帮助开发者快速完成首个Go Web应用。

2026.10.16

0

15

Linux 新手先学哪些命令
Linux 新手先学哪些命令

Linux新手命令专题汇集终端基础、文件目录操作、文本查看、软件安装和权限管理等入门文章,帮助按实际任务练习常用命令并建立命令行操作习惯。

2026.10.15

0

20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app从入门到实战教程
uni-app从入门到实战教程

共0课时 | 0人学习

uni-app x harmony开发指南
uni-app x harmony开发指南

共0课时 | 0人学习

uni-app鸿蒙运行和发行
uni-app鸿蒙运行和发行

共0课时 | 0人学习