☰
Uniapp使用原生插件
2026/10/10 5:49:50 网站建设 项目流程

文章目录

  • 原生插件
    • 下载官方示例项目
    • 构建自己的插件模块
      • 编写uni调用的函数
      • app集成
      • 打包aar
  • Uni引用插件
    • 引入插件模块,进行配置
    • 调用
  • 运行到真机
    • 自定义基座
    • 运行到手机
  • DCloud中管理应用
    • 创建离线key
  • 直接Android项目看uni效果
    • 注意点:名称一致
      • 为什么uni引用aar的时候没有严格要求?

步骤大纲
  1. 原生构建插件,打包aar
  2. uniapp引入使用
  3. Dcloud平台管理

原生插件

官方教程

下载官方示例项目

首先,本地搭建Android环境
下载官方提供的模板项目
解压后导入项目中的:UniPlugin-Hello-AS

这就是一个Android模板项目

在AS中打开后,目录结构如下,app是主项目,其他都是插件示例


mylibrary是我自己创建的插件module

构建自己的插件模块

这个简单,选中项目,new module,构建类型选择library就可以了

先修改一下library的配置,也就是build.gradle文件,主要是引入部分,可以copy其他以uniplugin_xxx的模块的build.gradle文件

编写uni调用的函数

在自己的插件模块下,创建Java文件,按照官方的要求,使用对应的注解,来编写由Uni调用的函数,比如

public class MyPluginModule extends UniModule { private String TAG = "MyPluginModule"; @UniJSMethod(uiThread = true) public void sayHello(String str, UniJSCallback callback){ Log.d(TAG, str); if(callback != null){ JSONObject data = new JSONObject(); data.put("key", TAG); data.put("value", str); data.put("other", "MyPluginModule"); callback.invoke(data); } } }

一个简单的插件功能就完成了

app集成

在app的模块中,在build.gradle中引入自己刚编写好的插件模块
在app的assets下,这个文件中按照示例注册插件

打包aar

  1. 选中要打包的插件模块

  2. 选择assemble module “xxxxx” 就是打包对应的模块,打包完成后,会在对应的模块下的

build / outputs / aar

目录下找到对应的aar,这个就是Uni项目中用到的插件文件

Uni引用插件

引入插件模块,进行配置

uni要创建指定目录,放入aar文件,并进行配置



配置完成后,再配置manifest.json


选择本地插件,勾选自己的插件

调用

在需要插件的地方,进行调用,比如

const MyPlugin = uni.requireNativePlugin('MyPlugin') if (MyPlugin === null) { uni.showToast({ icon: 'none', title: '插件引入失败' }) return } MyPlugin.sayHello("插件调用", (res)=>{ console.log(res) })

这样就完成了基础的在uniapp中调用原生插件

运行到真机

自定义基座

HBuilder选择运行到手机或模拟器–制作自定义调试基座,因为标准基座是不包含自己编写的插件的

上面需要你填写证书,需要你为那个Android项目,使用工具生成自己的证书,keystore文件,来进行填写

之后打包,就生成自己的自定义基座

基座也就是一个apk

运行到手机

选择运行到Android app基座,选择使用自定义基座,本地基座

就能顺利运行到手机上了

运行到手机上后,可以直接在AS中随便打开一个项目,在log中查看日志
HBuilder中看不到Android原生的日志,但是在AS中可以看到

DCloud中管理应用

登录DCloud平台,找到应用管理

创建离线key

找到自己的应用

点击修改,填写必填的信息,能生成想要的离线key
注意这个包名就是要在里面填的信息

至于其他的值,都需要找工具去获取

填写后,保存,会生成想要的appkey

这个key需要填写到之前Android示例项目中的,app模块下的,manifes文件中,dcloud_appkey的value

直接Android项目看uni效果

uniapp项目发行–本地打包资源,会生成一个__UNI__xxxx的目录

  1. 将这个目录替换掉示例Android项目中,app下,main/assets/apps目录下的项目
  2. 更改main/assets/data/dcloud_control文件,appid要与上面的__UNI_xxxx一致,其实也就是DCloud应用基本信息中的appid

注意点:名称一致

要运行到Android项目中看效果,需要保证uni中请求的插件名称与Android中的插件名称一致
uni中请求的就是

const MyPlugin = uni.requireNativePlugin('MyPlugin')

名称是"MyPlugin"

Android中注册的是在dcloud_uniplugins.json中注册的,比如

这个name就与上面的保持了一致,否则会报错TypeError: 找不到对应的函数

为什么uni引用aar的时候没有严格要求?

因为引入后,uni在manifest中以及package.json中注册了aar插件,并起名了,

const MyPlugin = uni.requireNativePlugin('MyPlugin')

请求的就是自己起的名字,所以没问题

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询