uniapp开发android原生插件

一、下载原生开发SDK

           Android 离线SDK - 正式版 | uni小程序SDK (dcloud.net.cn)、

           https://nativesupport.dcloud.net.cn/AppDocs/download/android.html

          将开发uniappa原生android的插件解压到ben本地目录,目录结构如下:

          接下就可以使用 UniPlugin-Hello-AS这个工程制作原生插件

二、制作原生插件

1、androidstudio打开UniPlugin-Hello-AS

        调整好本地androidsdk和gradle环境进行下一步

2、创建一个library的module

3、配置gradle依赖

        将uniplugin_modle模块下的gradle依赖全部拷贝到新建的mylibrary的gradle中

    compileOnly fileTree(dir: 'libs', include: ['*.jar'])compileOnly fileTree(dir: '../app/libs', include: ['uniapp-v8-release.aar'])compileOnly 'androidx.recyclerview:recyclerview:1.0.0'compileOnly 'androidx.legacy:legacy-support-v4:1.0.0'compileOnly 'androidx.appcompat:appcompat:1.0.0'implementation 'com.alibaba:fastjson:1.2.83'implementation 'com.facebook.fresco:fresco:1.13.0'

4、编写android代码

/*** 提供给uni的js调用的类需要继承  io.dcloud.feature.uniapp.common.UniModule
*  这里定义的java类名就是后面uniapp调用的插件名称
*/
public class MyLibraryPlugin  extends UniModule {/*** 暴露一个给js调用的方法* UniJSMethod注解标记是否需要主线程调用* @return*/@UniJSMethod(uiThread = false)public   String  getTimeFromNative(){SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss", Locale.CHINA);return  "get time from native " + sdf.format(new Date());}}

5、打包aar文件

         进入到工程的根目录,执行assembleRelease命令

 ./gradlew   mylibrary:assembleRelease

        在build->outputs->aar提取aar文件

      这样就生成了一个名为mylibrary-release.aar的插件

6、编写插件打包配置package.json

{  "name": "MyLibraryPlugin",  "id": "MyLibraryPlugin",  "version": "1.0",  "description": "uniapp原生android插件",  "_dp_type":"nativeplugin",  "_dp_nativeplugin":{    "android": {  "plugins": [  {  "type": "module","name": "SunMiUtilsService","class": "com.example.mylibrary.MyLibraryPlugin"}],   "integrateType": "aar",  "minSdkVersion": "21"  }  }  
}

       这样package.json文件就配置好了 

三、uniapp集成插件

 1、导入原生插件

        在uniapp项目目录下创建一个名为nativeplugins的文件夹,在nativeplugins目录下创建目录以插件名称MyLibraryPlugin命名,在MyLibraryPlugin插件目录下创建一个android目录,将mylibrary-release.aar插件拷贝进去,在android的统计目录中奖package.json文件拷贝进去,整体目录结构如下:



2、在manifest.json中配置插件

3、测试代码

methods: {clickNative(){const  libPlugin =  uni.requireNativePlugin("MyLibraryPlugin");uni.showModal({title:'提示',content: libPlugin.getTimeFromNative(),})},
}

         注意:新引入插件一定要重新对自定义基座进行打包,不然插件引入会失效

     

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/718484.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【本科组冠名奖】2023年第八届数维杯数学建模挑战赛获奖感言

美国大学生数学建模竞赛已结束过半,现在又迎来了2024年第九届数维杯国赛,准备参加今年数维杯国赛的同学,今天我们一起看看去年优秀的选手都有什么获奖感言吧~希望能帮到更多热爱数学建模的同学。据说文末在看点赞的大佬都会直冲国奖呢&#x…

实用Pycharm插件

Pycharm的离线安装:https://plugins.jetbrains.com/ 需要根据对应的Pycharm/Goland版本选取所需的 对于实用的插件如下: 实时查看每一行的git blame信息: Gittoolbox 转换IDE的英文为中文:Chinese IDE侧格式化json字符串&#…

UE5 C++ TPS开发 学习记录(八

这一次到了p19 完善了UI和写了创建房间 MultiPlayerSessionSubsystem.h // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Subsystems/GameInstanceSubsystem.h" #in…

python基础-基本数据类型深入-2.2

目录 集合 集合的定义 集合操作 集合的内建函数 集合与内置函数 集合练习-1 集合练习-2 集合练习-3 集合 集合的定义 学习关于 Python 集的所有内容;如何创建它们、添加或删除其中的元素,以及在 Python 中对集合执行的所有操作。 Python 中的集…

掌握Go语言:探索Go语言中的变量,灵活性与可读性的完美结合(4)

想要编写简洁高效的Go语言代码吗?掌握变量的使用是关键!Go语言的变量声明方式多样,包括var关键字和短变量声明,同时支持类型推断,让代码更加清晰易读。 变量声明方式 在Go语言中,变量的声明方式有两种&am…

少儿编程 中国电子学会C++等级考试一级历年真题答案解析【持续更新 已更新82题】

C 等级考试一级考纲说明 一、能力目标 通过本级考核的学生,能对 C 语言有基本的了解,会使用顺序结构、选择结构、循环结构编写程序,具体用计算思维的方式解决简单的问题。 二、考核目标 考核内容是根据软件开发所需要的技能和知识&#x…

Leetcode 3071. Minimum Operations to Write the Letter Y on a Grid

Leetcode 3071. Minimum Operations to Write the Letter Y on a Grid 1. 解题思路2. 代码实现 题目链接:3071. Minimum Operations to Write the Letter Y on a Grid 1. 解题思路 这一题思路上也是比较直接的,就是首先找到这个Y字符,然后…

单词规律00

题目链接 单词规律 题目描述 注意点 pattern只包含小写英文字母s只包含小写英文字母和 ’ ’s不包含任何前导或尾随对空格s中每个单词都被 单个空格 分隔 解答思路 本题与上一次同构字符串类似,思路可以参照同构字符串 代码 class Solution {public boolean …

工作流/任务卸载相关开源论文分享

decima-sim 概述: 图神经网络强化学习处理多工作流 用的spark的仿真环境,mit的论文,价值很高,高被引:663仓库地址:https://github.com/hongzimao/decima-sim论文:https://web.mit.edu/decima/co…

企业财务规划的未来:自动化智能化如何推动全面预算管理

随着自动化和智能化对企业的影响日益明显,了解和接受那些有可能改变企业财务规划的技术变得愈发重要。新兴技术是推动企业增长和业务生产的中坚力量。作为企业财务专业人员,熟悉技术能够帮助他们了解企业的未来价值,从而更好的领导团队。数智…

springboot支持的常用日志框架介绍

日志系统是计算机系统中用于记录和跟踪事件、错误和信息的软件组件。在软件开发和维护过程中,日志系统起着至关重要的作用。它可以帮助开发人员了解软件的运行情况,快速定位和解决问题。本文将从以下几个方面介绍日志系统:日志系统概述、Spri…

Mybatis plus拓展功能-枚举处理器

目录 1 前言 2 使用方法 2.1 在application.yml中添加配置 2.2 定义枚举类 2.3 在实体类和赋值时中使用 1 前言 在我们的开发过程中,常常需要用一些数字来表示状态。比如说:1-正常,0-冻结。然而这样并不能做到见名知意,特别是…

HTML最强入门学习笔记+GitHub小项目源码

HTML学习笔记 GitHub项目链接: 点我跳转GitHub 本博客采用markdown编写&#xff0c;上面这个链接跳转就是采用了html的<a></a>的代码设计的跳转提示~ 1.创建文件可以使用 ! 在VSCode中进行快速补全从而生成一整个HTML结构 HTML组成 <!DOCTYPE html><htm…

vscode——远端配置及一些问题解决

vscode——远端配置 安装Remote -SSH插件配置config本地变化一些问题缺失核心关闭vscode自动更新 尝试写入管道不存在hostname -I 查出来的ip连不上 我们之前大概了解了vscode的本地设置&#xff0c;我们之前提过&#xff0c;vscode是一款编辑器&#xff0c;在文本编辑方面有着…

Windows安装Neo4j数据库教程(3.X版本)

安装java的jdk&#xff08;jdk1.8仅支持Neo4j 3.X版本&#xff09;去 Index of /doc/neo4j/ 下载目标版本的Windows zip安装包将安装包解压到任意目录&#xff0c;并记住解压后带版本号的文件夹路径添加系统环境变量&#xff0c;变量名&#xff1a;NEO4J_HOME&#xff0c;变量值…

程序员的金三银四求职宝典:如何在关键时期脱颖而出?

个人主页&#xff1a;17_Kevin-CSDN博客 随着春天的脚步渐近&#xff0c;程序员们的求职热潮也随之而来。在这个被称为“金三银四”的招聘季&#xff0c;如何从众多求职者中脱颖而出&#xff0c;成为了许多程序员关注的焦点。本文将为你提供一份全面的求职宝典&#xff0c;助你…

前端架构: 脚手架通用框架封装之CommonJS和ESM混合开发兼容解决(教程五)

CommonJS 和 ESModule 混合开发 接上文&#xff0c;仍旧在 abc-cli 项目中参考&#xff1a;https://blog.csdn.net/Tyro_java/article/details/136433159现在要在脚手架项目中安装 chalk 依赖&#xff0c;因为在 abc-cli 项目几乎都是 CommonJS的实现而 chalk 这个依赖源码是基…

彻底剖析激光-视觉-IMU-GPS融合SLAM算法:理论推导、代码讲解和实战

自主导航是机器人与自动驾驶的核心功能&#xff0c;而SLAM技术是实现自主导航的前提与关键。现有的机器人与自动驾驶车辆往往会安装激光雷达&#xff0c;相机&#xff0c;IMU&#xff0c;GPS等多种模态的传感器&#xff0c;而且已有许多优秀的激光SLAM与视觉SLAM算法。但是每种…

获取wifi内容信息(仅供学习使用,勿作他用)

文章目录 背景代码实现槽点槽点 1槽点2总结背景 上一篇文章我们讲解学习了密码字典生成,下面我们来看一下如何获取wifi信息 代码实现 下面代码,附带注释,可以很清晰的看明白每一行代码具体是什么含义,通俗易通的变量定义,已经函数调用。如有任何不明白的地方可以随时联…

曲线生成 | 图解Dubins曲线生成原理(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 什么是Dubins曲线&#xff1f;2 Dubins曲线原理2.1 坐标变换2.2 单步运动公式2.3 曲线模式 3 Dubins曲线生成算法4 仿真实现4.1 ROS C实现4.2 Python实现4.3 Matlab实现 0 专栏介绍 &#x1f525;附C/Python/Matlab全套代码&#x1f525;课程设计、毕业设计、…