uniapp 调用安卓原生插件 安卓原生又调用了第三方sdk(第三方原生开发的aar怎么转成uni可以使用的aar)

最近在做一个关于uniapp的项目,遇到一个需求。有一个原生开发的aar的原生插件,不是插件市场的,开发说明原生开发的插件不可以直接提供给uniapp使用,需要按照uniapp原生插件开发文档重新制作成uniapp可以使用的aar。研究两天才捣鼓出来。整理一下步骤。
这边是将一个第三方的aar怎么变的在uniapp可以使用,所以不需要有很好的Android功底。

1.需要一个Android studio 我用的4.1.1版本
2.下载官方的SDK(注意hbuliderx的版本要和SDK版本匹配)
官方链接
在这里插入图片描述
3.下载完成后解压文件夹,用Android studio 打开Hello-AS
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4.新建一个Module(Android Library)
在这里插入图片描述
在这里插入图片描述
然后配置好Module名称,包名,安卓SDK版本等,如下(注意红框MiniMum SDK最好不要大于19,不然uniapp打包的时候可能出现错误):
在这里插入图片描述

5.将app目录下libs文件下的文件拷贝到新建的module的libs文件夹下(humesdk-1.0.0)是我需要用的第三方aar
在这里插入图片描述6.build.gradle文件,添加如下所示代码
在这里插入图片描述
class 是新建module的路径
在这里插入图片描述
在这里插入图片描述
7.编写自己的插件(必须继承UniModule,方法必须添加 @UniJSMethod(uiThread = true)其他的是我调用第三方插件的方法 callback.invoke,是在向js的回调函数,返回值,详情见官方文档)
在这里插入图片描述
8.生成uniapp可使用的aar(原生插件逻辑写完点击开发工具右侧的gradle,找到对应Module,双击如下所示跑完之后则可生成aar包待用。)
在这里插入图片描述
9.找到生成的aar(拷贝aar文件到uniapp你的项目下)
**加粗样式**在这里插入图片描述
10(导入到uniapp项目,红色模块名称保持一致,黄色部分注意,如果你引用了第三方sdk一定要也要导入进来,不然可能执行的第三模块的方法不生效,class是新建module的路径,class最后的 UpdateModule是业务逻辑文件).
在这里插入图片描述
11.最后选择本地插件,然后自定义基座云打包调试
在这里插入图片描述
在这里插入图片描述

UniApp 是一个使用 Vue.js 开发所有前端应用的框架,可以编译到 iOS、Android、以及各种小程序等多个平台。调用安卓原生 SDK,主要是通过 UniApp 提供的原生插件系统来实现的。下面是基本的步骤: 1. 创建原生插件:你需要使用 Java 语言编写一个安卓原生插件,并将其打包成一个 AAR 文件或者 JAR 文件。 2. 编写原生插件配置文件:在你的 UniApp 项目中,需要创建一个名为 `plugin.json` 的文件,用来描述原生插件的配置信息,包括插件的名称、版本、原生插件文件等。 3. 调用原生插件:在 Vue 页面的 JS 代码中,你可以使用 uni.requireNativePlugin() 方法来加载并调用原生插件。 4. 拓展API:原生插件会提供一组 API,你可以将这些 API 挂载到 Vue 的原型上,使得在 Vue 实例中可以方便地调用这些 API。 实现步骤大致如下: ```java // Java 代码示例,定义原生插件方法 public class MyNativePlugin { public static void callNativeFunction(String param, Callback callback) { // 实现具体的业务逻辑 String result = "处理后的结果"; callback.invoke(result); } } ``` ```json // plugin.json 文件示例 { "pluginName": "my-native-plugin", "javaPluginName": "com.example.MyNativePlugin", "assets": [], "platform": { "android": { "projectName": "MyNativePlugin", "searchPaths": ["../MyNativePlugin"] } } } ``` ```javascript // 在 Vue 页面中调用原生插件 export default { data() { return { nativeResult: '' }; }, methods: { callNative() { uni.requireNativePlugin('my-native-plugin').callNativeFunction('参数', (result) => { this.nativeResult = result; }); } } } ``` 请注意,这里只是一个简化的示例,实际使用中需要根据原生 SDK 的 API 来编写相应的 Java 代码,并在 UniApp 中正确配置和调用
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值