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

相关推荐
andr_gale1 天前
02_uniapp自定义上凸效果的底部TabBar
前端·javascript·uni-app·移动端
不爱说话郭德纲1 天前
uni-app x iOS 扫码模糊怎么办?AVFoundation 灰尘级别摄像头助你超广角聚焦
前端·uni-app·app
CHB2 天前
uni-app x 蒸汽模式 性能测试基准报告 Benchmark【Android版】
android·ios·uni-app
游戏开发爱好者84 天前
系统状态:专为iPhone和iPad设计的实时系统性能监控工具全面介绍
android·ios·小程序·uni-app·iphone·webview·ipad
2501_915909064 天前
全面解析iOS应用上架到App Store的完整流程与关键注意事项
android·macos·ios·小程序·uni-app·cocoa·iphone
2501_915106324 天前
iOS 证书类型及作用说明 账号证书与签名配置的完整解读
android·ios·小程序·https·uni-app·iphone·webview
2501_916008895 天前
移动安全之 APP 加固,保障移动应用安全的重要手段
安全·macos·ios·小程序·uni-app·iphone·xcode
2501_915106325 天前
Python爬虫从零开始:七天掌握HTTP协议、数据解析与反爬策略
android·ios·小程序·https·uni-app·iphone·webview
90后的晨仔5 天前
uni-app 项目目录结构全解:每个文件、每个文件夹的作用与配置详解
vue.js·uni-app
爱看老照片5 天前
关于uniapp中单位rpx的注意点
uni-app·rpx