当前位置: 首页 > news >正文

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 插件市场

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 什么是Jmeter ?Jmeter使用的原理步骤是什么?
  • Cobalt Strike 4.8 用户指南-第五节-获取初始访问
  • [数据集][目标检测]玻璃瓶塑料瓶检测数据集VOC+YOLO格式8943张2类别
  • 猫咪浮毛清理措施?希喂、安德迈、有哈宠物空气净化器数据大揭秘
  • html+css+js网页设计 翘珠宝微商城移动端20个页面
  • 正则表达式实现带有条件的爬取
  • .net dataexcel winform控件 更新 日志
  • Linux - 深入探讨 Linux `ls` 命令:一个全面的技术指南
  • 【前端面试】采用react前后,浏览器-解析渲染UI的变化
  • cnocr 安装
  • OpenHarmony使用ArkUI Inspector分析布局
  • 一套高效、稳定的自卸车自动充电系统
  • 3.7 Browser -- useMediaQuery
  • 数字经济GBC管理平台高管培训在京圆满成功举办
  • uniapp+vue3+setup返回上一页传参
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • AWS实战 - 利用IAM对S3做访问控制
  • JavaScript创建对象的四种方式
  • Mysql数据库的条件查询语句
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • Shadow DOM 内部构造及如何构建独立组件
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • Wamp集成环境 添加PHP的新版本
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 分布式熔断降级平台aegis
  • 如何解决微信端直接跳WAP端
  • 树莓派 - 使用须知
  • -- 数据结构 顺序表 --Java
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • k8s使用glusterfs实现动态持久化存储
  • scrapy中间件源码分析及常用中间件大全
  • # Maven错误Error executing Maven
  • #APPINVENTOR学习记录
  • #Java第九次作业--输入输出流和文件操作
  • #Linux(make工具和makefile文件以及makefile语法)
  • #VERDI# 关于如何查看FSM状态机的方法
  • (145)光线追踪距离场柔和阴影
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (26)4.7 字符函数和字符串函数
  • (阿里云在线播放)基于SpringBoot+Vue前后端分离的在线教育平台项目
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (接上一篇)前端弄一个变量实现点击次数在前端页面实时更新
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (一)插入排序
  • (转)IOS中获取各种文件的目录路径的方法
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .Mobi域名介绍
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET程序集编辑器/调试器 dnSpy 使用介绍
  • .net反编译的九款神器