uniapp插件——原生插件开发和使用

准备工作

uni-app扩展原生插件文档

文档

插件官方示例

文档

1.下载打开UniPlugin-Hello-AS项目

2.新建一个Module(Android Library)

右击项目名称>New>Module>Android Library。配置好Module名称,包名,安卓SDK版本等

3.修改build.gradle

将uniplugin_module 中的build.gradle内容全部复制,并覆盖mylibrary的build.gradle内容

4.修改AndroidManifest.xml

5.编写具体功能

bash 复制代码
import com.alibaba.fastjson.JSONObject;

import io.dcloud.feature.uniapp.annotation.UniJSMethod;
import io.dcloud.feature.uniapp.common.UniModule;

public class MyTest extends UniModule {

    @UniJSMethod(uiThread = false)
    public JSONObject getTestData(){
        JSONObject object = new JSONObject();
        object.put("test_data","成功返回调用数据");
        return object;
    }
}

6.打包成aar文件

uni-app调用原生插件

1.用HBuilder 打开要集成插件的项目

2.在项目下创建目录nativeplugins(名称不可改)

bash 复制代码
nativeplugins/
└── YourPlugin/
    ├── android/
    │   └── your-plugin.aar
    └── package.json

3.在目录nativeplugins下按照官方格式要求进行更改

4.编写package.json

规则如下:

bash 复制代码
{
  "name": "your-plugin",
  "id": "your-plugin-id",
  "version": "1.0.0",
  "description": "插件描述",
  "_dp_type": "nativeplugin",
  "_dp_nativeplugin": {
    "android": {
      "plugins": [
        {
          "type": "module",
          "name": "your-plugin",
          "class": "com.yourcompany.yourplugin.YourPluginClass"
        }
      ],
      "integrateType": "aar",
      "minSdkVersion": 21,
      "useAndroidX": true,
      "parameters": {}
    }
  }
}

关键字段:

class:必须对应aar中暴露的完整类名(主入口类)。

integrateType:必须为 "aar"

例子:

bash 复制代码
{
    "name": "uniPlugin-amap",
    "id": "uniPlugin-amap",
    "version": "1.0.0",
    "description": "1",
    "_dp_type": "nativeplugin",
    "_dp_nativeplugin": {
        "android": {
            "plugins": [
                {
                    "type": "module",
                    "name": "uniPlugin-amap",
                    "class": "com.uni.amap.AmapPlugin"
                }
            ],
			      "dependencies": [
			        "com.amap.api:location:6.5.0"
			      ],
            "integrateType": "aar",
            "minSdkVersion": 16
        }
    }
}

注意:如果包含第三方依赖 而没有打入arr需要特别引入

bash 复制代码
{
  "name": "uniPlugin-amap",
  "id": "uni-plugin-amap",
  "version": "1.0.0",
  "_dp_type": "nativeplugin",
  "_dp_nativeplugin": {
    "android": {
      "plugins": [
        {
          "type": "module",
          "name": "AmapModule",
          "class": "com.uni.amap.AmapPlugin"
        }
      ],
      "integrateType": "aar",
      "minSdkVersion": 21,
      "dependencies": [
        "com.amap.api:location:6.3.0",  // 高德定位SDK
        "com.amap.api:search:9.7.0",    // 如果使用搜索功能
        "com.amap.api:map2d:6.0.0",     // 如果使用2D地图
        "com.amap.api:3dmap:10.0.0"     // 如果使用3D地图
      ],
      "permissions": [
        "android.permission.ACCESS_COARSE_LOCATION",
        "android.permission.ACCESS_FINE_LOCATION",
        "android.permission.ACCESS_WIFI_STATE",
        "android.permission.ACCESS_NETWORK_STATE",
        "android.permission.CHANGE_WIFI_STATE",
        "android.permission.READ_PHONE_STATE",
        "android.permission.WRITE_EXTERNAL_STORAGE",
        "android.permission.INTERNET"
      ],
      "parameters": {
        "AMAP_KEY": {
          "des": "高德地图Key"
        }
      }
    }
  }
}

在manifest.json中添加本地插件配置

打包自定义基座

使用uni.requireNativePlugin引用插件

bash 复制代码
const PluginName = uni.requireNativePlugin(PluginName); // PluginName 为原生插件名称

注意:uni.requireNativePlugin 的参数是 package.json 中的 "name" 字段(不是id或class)。

相关推荐
游戏开发爱好者87 小时前
日常开发与测试的 App 测试方法、查看设备状态、实时日志、应用数据
android·ios·小程序·https·uni-app·iphone·webview
2501_915106329 小时前
app 上架过程,安装包准备、证书与描述文件管理、安装测试、上传
android·ios·小程序·https·uni-app·iphone·webview
2501_915106329 小时前
使用 Sniffmaster TCP 抓包和 Wireshark 网络分析
网络协议·tcp/ip·ios·小程序·uni-app·wireshark·iphone
宠友信息10 小时前
2025社交+IM及时通讯社区APP仿小红书小程序
java·spring boot·小程序·uni-app·web app
“负拾捌”11 小时前
python + uniapp 结合腾讯云实现实时语音识别功能(WebSocket)
python·websocket·微信小程序·uni-app·大模型·腾讯云·语音识别
局外人LZ1 天前
Uniapp脚手架项目搭建,uniapp+vue3+uView pro+vite+pinia+sass
前端·uni-app·sass
2501_915918411 天前
在 iOS 环境下查看 App 详细信息与文件目录
android·ios·小程序·https·uni-app·iphone·webview
前端呆头鹅1 天前
Websocket使用方案详解(uniapp版)
websocket·网络协议·uni-app
浮桥1 天前
uniapp+h5 公众号实现分享海报绘制
uni-app·notepad++
2501_916007471 天前
没有 Mac 用户如何上架 App Store,IPA生成、证书与描述文件管理、跨平台上传
android·macos·ios·小程序·uni-app·iphone·webview