Uniapp 调用aar、jar包

废话

坑是真的多,官方文档简陋到可以忽略不计。

大概流程

1. 新建一个Android模块,需要用这个模块打包成aar

2. 用这个模块引用uniapp-v8-release.aar以及你需要用到的aar、jar,用不到则忽略这步

        坑一:不要直接放到这个模块的libs文件夹,放到别的地方,然后在build.gradle中通过类似“compileOnly fileTree(dir: '../app/libs', include: ['uniapp-v8-release.aar'])”的这种方式引用。

3. 模块中封装、编写调用代码,然后打包成aar

4. 新建一个uniapp项目

5. 新建nativeplugins文件夹,然后将上面模块的aar包添加进来

6. 编写package.json配置文件,并在mainfest.json中勾选本地插件

7. 发行->云打包->打自定义调试基座

8. 真机调试

9. 真机调试没问题了,发行->云打包->打正式包

开搞

1. 搞aar

1.1 新建一个安卓项目(略)

1.2 新建一个安卓模块(略)

1.3 引用uniapp-v8-release.aar和其他aar、jar(我这里没有其他aar、jar略)

1.4 编写调用代码,必须继承UniDestroyableModule,可以理解为是一套用来跟uniapp交互的接口。我这里就写了两个方法,一个带回调,一个带Activity

package com.test.service;import android.app.Activity;
import android.widget.Toast;import io.dcloud.feature.uniapp.annotation.UniJSMethod;
import io.dcloud.feature.uniapp.bridge.UniJSCallback;
import io.dcloud.feature.uniapp.common.UniDestroyableModule;public class TestUtils extends UniDestroyableModule {@UniJSMethod(uiThread = true)public static void test(String msg, UniJSCallback jsCallback) {jsCallback.invoke("收到信息:" + msg);}@UniJSMethod(uiThread = true)public static void toast(Activity activity, String msg) {Toast.makeText(activity, msg, Toast.LENGTH_SHORT).show();}@Overridepublic void destroy() {}
}

1.5  将模块设置成release版本

1.6 构建一下,生成aar包

2. 搞uniapp

2.1 新建一个uniapp项目(略)

2.2 项目第一级目录下新建nativeplugins文件夹,并且按照对应逻辑新建对应的字文件夹,并将aar拷贝进来,另外生成并编写一个package.json配置文件。

2.3 mainfest.json中勾选你刚刚配置的插件

2.4 其他配置(略)

        注:配置项目名称、logo、权限之类的,特别是权限,配置好了之后必须重新打包基座才生效。

2.5 打包基座,发行->云打包->打自定义基座。

2.6 编写调用代码,这里用了两种不同的调用方式,都可以使用。

<template><view class="content"><image class="logo" src="/static/logo.png"></image><view class="text-area"><text class="title">{{title}}</text></view><view class="button-container"><button class="button" @click="onTest">调试返回</button><button class="button" @click="onToast">调试输出</button></view></view>
</template><script>export default {data() {return {title: 'Hello'}},onLoad() {},methods: {onTest() {const PluginName = uni.requireNativePlugin("test-service");PluginName.test('传个值过去',ret => {uni.showToast({title: ret,icon: 'none', duration: 2000 });});},onToast() {var main = plus.android.runtimeMainActivity();plus.android.invoke('com.test.service.TestUtils', 'toast', main,"测试Toast提示");}}}
</script><style>.content {display: flex;flex-direction: column;align-items: center;justify-content: center;}.logo {height: 200rpx;width: 200rpx;margin-top: 200rpx;margin-left: auto;margin-right: auto;margin-bottom: 50rpx;}.text-area {display: flex;justify-content: center;}.title {font-size: 36rpx;color: #8f8f94;}.button {margin-top: 15px;/* 上边距为15px */margin-bottom: 5px;/* 下边距为5px */}
</style>

2.7 真机调试:运行->运行到手机->运行到Android App基座

2.8 打包发布,发行->云打包->正式包(略)

参考链接:

https://github.com/dcloudio/RichAlert

原生增强提示框插件 - DCloud 插件市场

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

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

相关文章

详解JavaScript

目录 JavaScript 引入样式 基础语法 变量 数据类型 运算符 JavaScript对象 数组 数组定义 数组操作 函数 语法格式 关于参数个数 函数表达式 对象 JQuery 语法 选择器 事件 常见的事件 操作元素 获取/设置元素内容 获取/设置元素属性 获取/设置CSS属性 …

StringTable

10.1. String的基本特性 String&#xff1a;字符串&#xff0c;使用一对""引起来表示String声明为final的&#xff0c;不可被继承String实现了Serializable接口&#xff1a;表示字符串是支持序列化的。String实现了Comparable接口&#xff1a;表示string可以比较大小…

JMeter 工具安装以及简单使用

一、安装以及汉化 傻瓜式JMeter下载和环境配置及永久汉化-CSDN博客https://blog.csdn.net/weixin_45608163/article/details/136528719 二、发送GET请求 配置请求头: 配置该线程组的请求: 放在线程组统计,下面请求则共享配置

[图解]SysML和EA建模住宅安全系统-活动作为块

1 00:00:00,210 --> 00:00:04,360 下一个步骤是识别潜在的失效 2 00:00:06,850 --> 00:00:11,150 这里它是用一个块定义图来表达的 3 00:00:12,150 --> 00:00:16,790 图17.21&#xff0c;失效模式识别和因果依赖 4 00:00:19,110 --> 00:00:22,400 但是这个块定义…

Java基于微信小程序的美食推荐小程序,附源码

博主介绍&#xff1a;✌Java徐师兄、7年大厂程序员经历。全网粉丝13w、csdn博客专家、掘金/华为云等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不…

通过Docker部署Nacos,以及Docker Desktop进行管理

目录 一.不需要持久化存储 1.启动容器 2.查看容器和镜像​ 3.容器管理 二.持久化存储启动mysql容器 1.创建docker卷 2.运行容器,指定卷 3.在nacos里面随便建个配置文件 4.停止并删除nacos容器 5.重新运行容器,并且挂载相同的卷,也就是上面第二步的命令 6.打开nacos并…

Tortoise-ORM FastAPI integration 中文文档(完整版)

Tortoise-ORM FastAPI integration 中文文档(完整版) 前言 初衷:在学习的时候发现 Tortoise-ORM FastAPI integration 官方文档缺中文版,翻阅英文文档效率低,萌生翻译想法。 本系列旨在原汁原味的翻译 Tortoise-ORM FastAPI integration 官方文档,帮助英语不好的小伙伴快速…

UE5游戏——显示打击怪物的伤害值显示

要在Unreal Engine 5中实现显示打击怪物时的伤害数值&#xff0c;你可以按照以下步骤操作&#xff1a; 1. 创建UI元素: 在UE5的内容浏览器中创建一个新的User Widget蓝图&#xff08;或者直接从项目设置的默认UI蓝图开始&#xff09;。在这个蓝图中添加一个Text Block组件用于…

相似图像、相似商品检索的流程具体是什么样的?

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 1. 数据收集和预处理&#xff1a; 首先&#xff0c;我们需要构建一个包含丰富图像或商品信息的数据库。针对每个图像或商品&#xff0c;我们需确保以下几点&#xff1a; 高质量的图像数据。相关的元数…

fiddler安装和汉化和抓https的包

下载和汉化 官网下载 https://www.telerik.com/ 1、「安装英文版Fiddler」、假如将Fiddler安装在&#xff1a;「D:\Programs\Fiddler」 2、将压缩包「fiddler菜单汉化」文件夹中的「FiddlerTexts.txt」复制到「D:\Programs\Fiddler\」 3、将压缩包「fiddler菜单汉化」文件夹…

外部排序之文件归并

概述 外部排序&#xff08;External Sorting&#xff09;是一种用于处理无法完全加载到内存中的大量数据的排序技术。由于内存的限制&#xff0c;传统的内存排序算法&#xff08;如快速排序、归并排序&#xff09;可能无法处理超大规模的数据集合。因此&#xff0c;需要采用外…

JVM面试(一)什么是虚拟机?什么是class文件?

什么是java虚拟机&#xff1f; 如果通俗点来讲&#xff0c;我们在电脑上一行行敲出来的代码&#xff0c;电脑本身是不认识的&#xff0c;最终是要转成电脑可以运行的101001这种字节。 但是这些我们又不可能手动来转换&#xff0c;所以呢&#xff0c;就需要一个工具&#xff0…

零差云控电机ubuntu+IGH调试记录

一、上位机 Twincat3安装&#xff1a;https://blog.csdn.net/LclLsh/article/details/122863502 Twincat3设置实时网卡&#xff1a;https://zhuanlan.zhihu.com/p/217715531 Twincat3设置独立cpu&#xff1a;https://blog.csdn.net/weixin_44555503/article/details/108711912…

PyCharm中python语法要求——消去提示波浪线

PyCharm中python语法要求——消去提示波浪线 关闭代码规范检查 在Setting里边搜索pep&#xff0c;取消勾选pep8 coding style violation 问题产生 解决问题 按照下图操作&#xff0c;也可直接CtrlAlts弹出设置页面 在 Settings 中 &#xff1a; Editor > Color Sheame >…

Nginx: TCP建立连接的优化和启用Fast Open功能

TCP 建立连接优化 在三次握手中&#xff0c;相关TCP的内核参数可优化这一过程 net.ipv4.tcp_syn_retries 6net.ipv4.tcp_synack_retries 5net.ipv4.tcp_syncookies 0net.ipv4.tcp_max_syn_backlognet.core.somaxconnnet.core.netdev_max_backlog 1 &#xff09; net.ipv4…

书生大模型实战营(1)——InterStudio基础知识+Vscode SSH连接远程服务器+Linux基础指令

参加书生.浦江大模型实战训练营&#xff0c;学习大模型知识和微调技术&#xff0c;所有课程免费&#xff0c;通过闯关的形式学习&#xff0c;也比较有趣。一起来了解LLM的世界。邀请链接 产品简介 InternStudio 是大模型时代下的云端算力平台。基于 InternLM 组织下的诸多算法…

小程序全局挂载对像

1. 定义并导出 `utils` 模块 // utils.js const utils = {/*** 用户消息反馈* @param {string} title 文字提示的内容*/toast(title = 数据加载失败...) {wx.showToast({title,mask: true,icon: none,});} }// 挂载到全局对象 wx wx.utils = utils;// 模块导出 export default…

使用 FormCreate 渲染 Element Plus 表单

使用 FormCreate 渲染 Element Plus 表单 FormCreate 支持多个主流 UI 框架&#xff0c;您可以根据自己项目的需求选择对应的版本进行安装。 请根据您项目中使用的 UI 框架&#xff0c;安装对应的 FormCreate 版本。 Vant UI 版本 移动端 npm i form-create/vant^3Element Pl…

高级java每日一道面试题-2024年9月01日-基础篇-事物的隔离级别?

如果有遗漏,评论区告诉我进行补充 面试官: 事物的隔离级别? 我回答: 事务的隔离级别是一个重要的考点。事务的隔离级别决定了一个事务在访问数据库时如何受到其他事务的影响&#xff0c;以及不同事务之间的并发控制程度。下面将详细解释Java中事务的隔离级别。 事务的隔离…

【工控】线扫相机小结 第二篇

背景 上一篇中《线扫相机小结》中介绍了一些基础知识和注意事项&#xff0c;这一篇是对上一篇的进一步补充。 会介绍线扫相机的一些调试技巧。 如何在线调试&#xff1f; 我们知道&#xff0c;线扫相机不能像面阵相机一样实时的呈现图像&#xff0c;只能一行行的扫描&#x…