当前位置: 首页 > 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 插件市场


http://www.mrgr.cn/news/13635.html

相关文章:

  • 学习笔记——Redis基础
  • ★ 算法OJ题 ★ 力扣1089 - 复写零
  • Java 结合elasticsearch-ik分词器,实现评论的违规词汇脱敏等操作
  • 2024.8.28 作业
  • Spring:浅谈对Spring的认识
  • 【微信小程序】全局数据共享 - MobX
  • 【学习笔记】 陈强-机器学习-Python-Ch13 提升法(1)
  • 云计算环境下的数据治理
  • 光性能 -- 光功率平坦度
  • 【计算机网络】mini HTTP服务器框架与代码
  • XR虚拟拍摄短剧 | 探索虚拟制作在短剧领域的应用与发展
  • 今日算法:蓝桥杯基础题之“门牌制作”
  • Python 正则表达式
  • 掌握PyTorch模型的版本控制:高效管理与迭代
  • 乐凡三防:工业界的硬核产品——重新定义三防平板的极限
  • Nginx 负载均衡深入指南:`proxy_pass` 指令的高效使用
  • 怎样写好提示词(Prompt) 二
  • Ruby Web服务开发:构建高效RESTful API的秘诀
  • IO多路复用
  • CSS动画的使用