uni-app调用java代码(uniapp调用安装原生插件aar)

news2024/9/21 12:46:24

uni-app调用java代码(uniapp调用安装原生插件aar)

文章目录

  • uni-app调用java代码(uniapp调用安装原生插件aar)
  • 前言
  • 一、开发环境、文档资料
    • 1.Java环境下载
    • 2.App离线SDK下载
    • 3.AndroidStudio下载
    • 4.HBuilderX下载
    • 5.uni-app扩展原生插件文档
    • 6.插件官方示例
  • 二、将Java代码打包成aar文件
    • 1.下载解压SDK
    • 2.打开UniPlugin-Hello-AS项目
    • 3.新建一个Module(Android Library)
    • 4.修改build.gradle
    • 5.修改AndroidManifest.xml
    • 6.编写Java代码
    • 7.打包成aar文件
  • 三、uni-app调用原生插件
    • 1.更改项目结构
    • 2.在manifest.json中添加本地插件配置
    • 3.打包自定义基座
    • 4.测试运行
    • 5.前端代码调用


前言

最近在研究uniapp,领导有个需求。要在uniapp中调用java的方法。实际上是在安卓中写java方法最后打包成aar原生插件,再将aar插件在uniapp中进行调用。

一、开发环境、文档资料

1.Java环境下载

我这里使用的是JDK1.8,配置环境变量自行百度
官方下载地址:https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html

2.App离线SDK下载

官方下载地址:https://nativesupport.dcloud.net.cn/AppDocs/download/android.html#

3.AndroidStudio下载

官方下载地址:https://developer.android.google.cn/studio/index.html

4.HBuilderX下载

官方下载地址:https://www.dcloud.io/hbuilderx.html

5.uni-app扩展原生插件文档

官方地址:https://uniapp.dcloud.net.cn/plugin/native-plugin.html

6.插件官方示例

官方地址:https://ext.dcloud.net.cn/plugin?id=36

二、将Java代码打包成aar文件

1.下载解压SDK

将App离线SDK下载解压

在这里插入图片描述

2.打开UniPlugin-Hello-AS项目

在这里插入图片描述

3.新建一个Module(Android Library)

右击项目名称>New>Module>Android Library。配置好Module名称,包名,安卓SDK版本等
在这里插入图片描述
在这里插入图片描述

4.修改build.gradle

将uniplugin_module 中的build.gradle内容全部复制,并覆盖mylibrary的build.gradle内容
在这里插入图片描述

5.修改AndroidManifest.xml

在这里插入图片描述删除 mylibrary 路径src下的androidTest和test

6.编写Java代码

代码注意事项:
1.类要继承 UniModule
2.方法上加入注解@UniJSMethod(uiThread = false)
3.方法必须事public 方法
4.方法返回类型要以JSONObject形式返回

在src的包下新建类MyTest

在这里插入图片描述

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;
    }
}

代码中涉及到com.sun.crypto.provider.SunJCE()报错问题,可在C:\Program Files\Java\jdk1.8.0_72\jre\lib\ext拷贝sunjce_provider.jar至libs中,并通过右键-add as library 引用即可

7.打包成aar文件

选中mylibrary,通过build-makemodule “*.mylibrary” 打包
在这里插入图片描述

打包后可以在build>outputs中找到aar文件

三、uni-app调用原生插件

1.更改项目结构

原生插件开发格式要求官方文档:https://nativesupport.dcloud.net.cn/NativePlugin/course/package.html#

  1. 用HBuilder 打开要集成插件的项目
  2. 在项目下创建目录nativeplugins(名称不可改)
  3. 在目录nativeplugins下按照官方格式要求进行更改
  4. 编写package.json

package.json

{
	"name": "mylibrary-debug",
	"id": "mylibrary-debug",
	"version": "1.1.1",
	"description": "测试使用",
	"_dp_type": "nativeplugin",
	"_dp_nativeplugin": {
		"android": {
			"plugins" :[
				{
					"type": "module",
					"name": "mylibrary-debug",
					"class": "uni.dcloud.io.mylibrary.MyTest"
				}
			],
			"integrateType": "aar"
		}
	}
}

最终如下:
在这里插入图片描述

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

在这里插入图片描述

3.打包自定义基座

点击菜单栏“运行”->“运行到手机或模拟器”->“制作自定义基座”生成自定义基座安装包。
在这里插入图片描述

4.测试运行

点击菜单栏“运行”->“运行到手机或模拟器”->“运行到Android app”选择自定义基座
在这里插入图片描述

5.前端代码调用

使用uni.requireNativePlugin引用插件

	const PluginName = uni.requireNativePlugin(PluginName); // PluginName 为原生插件名称

例:
此处调用了两个不同的插件上边调用的为文章的demo
在这里插入图片描述

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

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

相关文章

MD5、RSA 和自定义签名的 Java 数据安全实战

前言 在现代的数字世界中,数据的安全性和完整性变得尤为重要。为了确保数据在传输和存储过程中不受到攻击,我们可以借助各种加密和签名技术来加强数据安全。本文将介绍如何使用 MD5、RSA 加密,以及如何自定义签名规则来保护数据的安全性。下…

ISO 21202:2020 智能交通系统 - 部分自动变道系统 (PALS) - 功能/操作要求和测试规程

​ 介绍 一般来说,车辆配备的驾驶辅助系统和自动驾驶系统可减轻驾驶员的负担,有助于安全驾驶。就变道操作而言,有许多驾驶员并不擅长变道,为了辅助这类驾驶员,部分自动变道系统(PALS)可根据驾驶员的要求,在驾驶员的监督下,在禁止非机动车和行人通行、有明显车道标记的…

C#中的委托

目录 概述: 举例:​ 总结: 概述: 中文的角度来说:指的是把事情托付给别人或别的机构(办理),造个句子:别人委托的事情,我们一定要尽力而为,不遗余力的去办成。 在C#中,委托是一种…

TCP/IP协议组

TCP/IP通信协议是目前最完整、使用最广泛的通信协议。它的魅力在于可使不同硬件结构、不同操作系统的计算机相互通信。TCP/IP协议既可用于广域网,也可用于局域网,它是Internet/Intranet的基石。TCP/IP通信协议事实上是一组协议。 TCP/IP协议可分为5层也可…

图像处理的未来:揭秘扫描全能王的AI驱动创新

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

LeetCode235. 二叉搜索树的最近公共祖先

235. 二叉搜索树的最近公共祖先 文章目录 [235. 二叉搜索树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/)一、题目二、题解方法一:递归方法二:迭代 一、题目 给定一个二叉搜索树, 找到该树中两个指定…

java八股文面试——String StringBuilder StringBuffer

String类型定义: final String 不可以继承 final char [] 不可以修改 String不可变的好处: hash值只需要算一次,当String作为map的key时, 不需要考虑hash改变 天然的线程安全 知识来源: 【基础】String、StringB…

安卓手机录屏app合集,总有一种适合你

在现代生活中,录屏已经变得越来越重要。它可以帮助人们记录并分享他们的屏幕内容。在安卓手机上,有很多应用程序可以帮助您进行屏幕录制。本文将介绍一些最好的安卓手机录屏应用程序,以及一些有关录屏技巧。 录屏工具: 迅捷录屏大…

通达信接口开发大全(一)

通达信软件的接口开发主要可以分为以下几个方面: 行情接口:通达信提供行情订阅和实时数据查询接口,可以获取市场行情数据。开发者通过这些接口获取股票、期货、外汇等市场的实时行情数据,包括价格、成交量、买卖盘等。 交易接口&…

博弈论简介

目录 博弈分类 合作与非合作博弈: 同时与顺序博弈: 完全信息与不完全信息博弈: 零和与非零和博弈: 囚徒困境的例子 纳什平衡 代码示例 博弈论是一个数学分支,研究多个理性决策者之间的战略互动。它的主要目的是…

Kafka 集群搭建过程

前言 跟着尚硅谷海哥文档搭建的Kafka集群环境,在此记录一下,侵删 注意:博主在服务器上搭建环境的时候使用的是一个服务器,所以这篇博客可能会出现一些xsync分发到其他服务器时候的错误,如果你在搭建的过程中出现了错…

CKZF-D60170、CKZF-D70190、CKZF-D80210单向离合器

CKZF-C30100、CKZF-C35110、CKZF-C40125、CKZF-C45130、CKZF-C50150、CKZF-C55160、CKZF-C60170、CKZF-C70190、CKZF-C80210、CKZF-C90230、CKZF-C100270、CKZF-C130310、CKZF-B30100、CKZF-B35110、CKZF-B40125、CKZF-B45130、CKZF-B50150、CKZF-B55160、CKZF-B60170、CKZF-B7…

Java课题笔记~ 什么是跨域?

什么是跨域? 浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域。 域名: 主域名不同 百度一下,你就知道 -->新浪网 子域名不同 http://www.666.baidu.com/index.html -->htt…

原生js获取今天、昨天、近7天的时间(年月日时分秒)

有的时候我们需要将今天,昨天,近7天的时间(年月日时分秒)作为参数传递给后端,如下图: 那怎么生成这些时间呢?如下代码里,在methods里的toDay方法、yesterDay方法、weekDay方法分别用于生成今天、昨天和近7天的时间: <template><div class="box"&…

springBoot是如何实现自动装配的

目录 1 什么是自动装配 2 Spring自动装配原理 2.1 SpringBootConfiguration ​编辑 2.2 EnableAutoConfiguration 2.2.1 AutoConfigurationPackage 2.2.2 Import({AutoConfigurationImportSelector.class}) 2.3 ComponentScan 1 什么是自动装配 自动装配就是将官方写好的的…

电脑c盘满了怎么办,使用硬盘专家一件解决!

下载硬盘专家后&#xff0c;点击释放C盘系统空间&#xff0c;就可以节省出很多空间&#xff0c;win10系统一般节省出20G都是正常的&#xff0c;因为win10在很多地方都恶意占用磁盘空间&#xff0c;比如一些大型的垃圾&#xff0c;都没有及时清理&#xff0c;就算你使用杀毒软件…

接口和抽象类的区别(一看就懂)

目录 1 抽象类作用 2 接口和抽象类区别 1 抽象类作用 接口&#xff1a;接口其实可以看做是多态的一种体现&#xff08;多态&#xff1a;一种行为的多种表现形态&#xff09;不妨想想平时你自己在service中写是不是定义了一个service接口&#xff0c;然后用一个serviceImpl实…

无代码集成飞书连接更多应用

场景描述&#xff1a; 基于飞书开放平台能力&#xff0c;无代码集成飞书连接更多应用&#xff0c;打通数据孤岛。通过Aboter可轻松搭建业务自动化流程&#xff0c;实现多个应用之间的数据连接。 支持包括飞书事件监听和接口调用的能力&#xff1a; 事件监听&#xff1a; 用…

Java“牵手”根据商品ID获取1688商品评论数据方法,1688API实现批量商品评论内容数据抓取示例

1688商城是一个网上购物平台&#xff0c;售卖各类商品&#xff0c;包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取1688商品详情页面评价内容数据&#xff0c;您可以通过开放平台的接口或者直接访问1688商城的网页来获取商品详情信息内的评论数据。以下是两种常用方法…

netstat: command not found

执行&#xff1a; cd /etc/yum.repos.d/ sed -i s/mirrorlist/#mirrorlist/g /etc/yum.repos.d/CentOS-* sed -i s|#baseurlhttp://mirror.centos.org|baseurlhttp://vault.centos.org|g /etc/yum.repos.d/CentOS-* wget: command not found 执行&#xff1a;&#xff08;安装…