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)。

相关推荐
HashTang1 天前
【AI 编程实战】第 12 篇:从 0 到 1 的回顾 - 项目总结与 AI 协作心得
前端·uni-app·ai编程
JunjunZ1 天前
uniapp 文件预览:从文件流到多格式预览的完整实现
前端·uni-app
郑州光合科技余经理2 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
TT_Close2 天前
“啪啪啪”三下键盘,极速拉起你的 uni-app 项目!
vue.js·uni-app·前端工程化
特立独行的猫a2 天前
uni-app x跨平台开发实战:开发鸿蒙HarmonyOS影视票房榜组件完整实现过程
华为·uni-app·harmonyos·轮播图·uniapp-x
00后整顿职场2 天前
Hbuilderx APP真机无法识别iqoo Z9+手机设备解决方案
uni-app·uniapp真机调试·真机运行
前端小雪的博客.2 天前
【保姆级教程】uniAI 插件高效开发 uni-app 微信小程序(附实战案例)
微信小程序·uni-app·ai编程·uniai
T^T尚2 天前
一个完整的项目怎么打包成为一个app
前端·uni-app
阿巴资源站3 天前
uniapp加水印
java·前端·uni-app
特立独行的猫a3 天前
uni-app x跨平台开发实战:开发鸿蒙HarmonyOS滚动卡片组件,scroll-view无法滚动踩坑全记录
华为·uni-app·harmonyos·uniapp-x