uniapp安卓应用如何使用第三方原生aar包

起因:用uniapp开发的安卓app需要集成到一个由别人开发的原生的app中去,统一在原生app登录后携带token跳转到uniapp开发的app中,但是在uniapp中需要解析跳转过来携带的token必须要用到他们的一个原生开发的aar包。

在uniapp中如果要使用aar包,必须要按照uniapp官网上的规则步骤来开发这个aar包,但是由于这个第三方的封装好来解析token的aar包(下文中统称为第三方aar)还需要其他原生的app使用,只能靠我们自己来做适配。

所以我们只好自己按照uniapp官网上的规则来开发一个aar包作为一个适配层包在第三方aar外面。

调用流程就是:

  1. uniapp调用自己的aar包中的方法
  2. 自己的aar包调用第三方的aar包

一、自定制aar引入第三方aar

  1. 按照uniapp官网上开发aar插件的步骤uniapp官网上的规则步骤创建一个Module,也就是mylibrary1文件夹,创建后报错如下:

解决报错方法: 需要将项目下的uniplugin_module文件夹中的build.gradle中的所有内容复制到自己创建的mylibrary1中的build.gradle中去,错误就解决了

2.将第三方aar包(external_library.aar)放入自己创建的mylibrary1文件夹下的libs中去

3.在mylibrary1文件夹下的build.gradle文件中添加以下代码

二、编写java代码调用第三方aar包中的方法

创建一个TestInfo.java的文件,在文件中编写按照uniapp官网上的规则编写可以通过uniapp调用的方法

注意: 一定要按照uniapp官网上的规则编写比如以下:

  • 创建TestInfo类必须继承 UniModule 类
  • 扩展方法必须加上@UniJSMethod (uiThread = false or true) 注解。
  • 回调函数必须是UniJSCallback类型的

然后给自己写的aar包命名

三、打包aar

1.打包成aar,鼠标选中mylibrary1文件夹,点击build中的make module进行打包。

报错如下:

解决报错方法如下,删除这两个文件夹,然后重新打包:

查看打包的aar结果文件,发现并没有将第三方的aar打包进来

2.直接打包aar,并不会把第三方aar包打入自己的aar中去,我们需要用到一个第三方库来将第三方aar包融入我们自己要打的aar包中去。需要根目录下的build.gradle中添加以下代码。

在mylibrary1文件夹下的build.gradle中把刚写的implementation改成embed

还需要我们在mylibrary1文件夹添加如下代码,同步完后重新打包

我们查看我们自己打包后的aar包,发现多了一个libs文件夹,文件夹中的r-classes.jar就是打包后的第三方aar包

四、uniapp中引入我们自己的aarb包

1.在uniapp根目录下创建nativeplugins文件夹,文件夹下结构如下: (mylibrary.aar就是我们自己的aar包)

lua 复制代码
|--nativeplugins
    |--mylibrary
        |--android
            |-- mylibrary.aar
        |--package.json

package.json中的内容如下,详细格式规则可以查看uniapp官网

javascript 复制代码
{
	"name": "mylibrary",
	"id": "mylibrary",
	"version": "1.1.1",
	"description": "测试使用",
	"_dp_type": "nativeplugin",
	"_dp_nativeplugin": {
		"android": {
			"plugins" :[
				{
					"type": "module",
					"name": "mylibrary",
					"class": "uni.android.mylibrary.TestInfo"
				}
			],
			"integrateType": "aar"
		}
	}
}

2.在uniapp页面中使用aar包中的原生方法如下:

相关推荐
weixin_382395235 小时前
为小工厂量身打造:本地部署的物料管理系统带缺料计算
前端·制造
__zRainy__6 小时前
解决pnpm v10+不自动构建
前端·pnpm·工程化
猫猫不是喵喵.6 小时前
Vue3 Props 属性
前端·javascript·vue.js
醉城夜风~7 小时前
CSS元素显示模式(display)
前端·css
AI大模型-小华8 小时前
Codex 三方充值快速入门指南
java·前端·数据库·chatgpt·ai编程·codex·chatgpt pro
做前端的娜娜子10 小时前
同一链接实现 PC Web 与移动 H5 自适应
前端·掘金·金石计划
小帅不太帅10 小时前
架构没变、规模没变,DeepSeek V4 Flash 正式版凭什么暴涨 47 分?
前端·aigc·deepseek
jarvisuni11 小时前
DeepSeekFlash前端依旧拉垮,而且变慢了很多!
前端·javascript·算法
卷福同学12 小时前
AI编程出海第二步:验证关键词能否做站
前端·人工智能·后端