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

相关推荐
芋头莎莎2 小时前
UNIAPP连接MQTT记录要点
uni-app
新 一.2 小时前
uniapp在ios上真机测试运行
ios·uni-app
2501_916007473 小时前
不越狱如何查看iOS 应用的详细信息及其文件目录结构
android·macos·ios·小程序·uni-app·cocoa·iphone
李慕婉学姐4 小时前
【开题答辩过程】以《基于uniapp的养宠互助服务程序设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
android·mysql·uni-app
李慕婉学姐5 小时前
【开题答辩过程】以《基于uni-app的手账记录小程序的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·小程序·uni-app
2501_916008895 小时前
无需钥匙串快速创建 iOS 开发 / 发布证书 P12 CSR
android·ios·小程序·https·uni-app·iphone·webview
&活在当下&6 小时前
uniapp 选择城市区号索引列表实现
前端·uni-app
1登峰造极21 小时前
uniapp 运行安卓报错reportJSException >>>> exception function:createInstanceContext, exception:white screen
android·java·uni-app
滴水未满1 天前
uniapp的组件
uni-app