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 插件信息
- 点击查看具体说明
- android文件
准备相关文件
- 创建以插件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
注意:运行时只能在手机端小程序端运行会报错, 其次在调用原生插件方法时候需要再基座下运行,要不然会报错:找不到原生插件对应的方法