android studio开发aar插件,并用uniapp开发APP使用这个aar

在 Android Studio 中开发 AAR 插件并在 UniApp 中集成的详细步骤:


1. 开发 Android AAR 插件

1.1 创建 Android Library 项目
  1. 打开 Android Studio → New Project → 选择 "No Activity"

  2. 右键项目 → New → Module → Android Library (命名为 MyUniPlugin)

1.2 编写插件代码

java

复制

// MyUniPlugin.java
package com.example.myuniplugin;

import com.alibaba.fastjson.JSONObject;
import io.dcloud.feature.uniapp.annotation.UniJSMethod;
import io.dcloud.feature.uniapp.common.UniModule;

public class MyUniPlugin extends UniModule {

    // 同步方法
    @UniJSMethod(uiThread = false)
    public String syncMethod(String param) {
        return "Received: " + param;
    }

    // 异步方法(带回调)
    @UniJSMethod(uiThread = true)
    public void asyncMethod(JSONObject params, UniJSCallback callback) {
        try {
            String message = params.getString("message");
            callback.invoke(new JSONObject().put("result", "Echo: " + message));
        } catch (Exception e) {
            callback.invoke(new JSONObject().put("error", e.getMessage()));
        }
    }
}
1.3 配置依赖项

在 build.gradle 中添加 UniApp 依赖:

gradle

dependencies {
    implementation 'com.github.aliyun-alpha:uni-app:8.0.0' // 使用官方或兼容版本
}
1.4 生成 AAR 文件
  1. 点击右侧 Gradle → :mylibrary → Tasks → build → assemble

  2. 生成的 AAR 文件位于 mylibrary/build/outputs/aar/mylibrary-release.aar


2. UniApp 集成 AAR 插件

2.1 创建原生插件目录

在 UniApp 项目的 nativeplugins 目录下创建结构:

复制

MyUniPlugin/
  ├── android/
  │   ├── mylibrary-release.aar
  │   └── libs/ (可选第三方库)
  └── package.json
2.2 配置 package.json

json 

{
  "name": "MyUniPlugin",
  "id": "com.example.myuniplugin",
  "version": "1.0.0",
  "description": "Custom AAR Plugin",
  "_dp_type": "nativeplugin",
  "_dp_nativeplugin": {
    "android": {
      "plugins": [
        {
          "type": "module",
          "name": "com.example.myuniplugin",
          "class": "com.example.myuniplugin.MyUniPlugin"
        }
      ],
      "integrateType": "aar",
      "minSdkVersion": 21
    }
  }
}
2.3 注册插件
  1. 在 UniApp 项目的 manifest.json 中勾选原生插件

  2. 选择本地插件 → 找到 MyUniPlugin


3. UniApp 调用插件方法

3.1 编写 JS 调用代码

vue

<template>
  <view>
    <button @click="callSync">调用同步方法</button>
    <button @click="callAsync">调用异步方法</button>
  </view>
</template>

<script>
export default {
  methods: {
    callSync() {
      const result = uni.requireNativePlugin('MyUniPlugin').syncMethod('Hello Sync');
      console.log('同步结果:', result);
    },
    callAsync() {
      uni.requireNativePlugin('MyUniPlugin').asyncMethod(
        { message: 'Hello Async' },
        (res) => {
          if(res.error) {
            console.error('异步错误:', res.error);
          } else {
            console.log('异步结果:', res.result);
          }
        }
      );
    }
  }
}
</script>

4. 调试与打包

4.1 本地调试
  1. 运行到 Android 设备:HBuilderX → 运行 → 运行到手机或模拟器

  2. 使用 Chrome 开发者工具查看控制台日志

4.2 常见问题排查
  • ClassNotFoundException: 检查 AAR 是否包含完整包路径,ProGuard 是否排除混淆

  • 方法未找到: 确认 @UniJSMethod 注解是否正确使用

  • 依赖冲突: 在 UniApp 的 build.gradle 中添加排除规则:

    gradle

    configurations {
        all*.exclude group: 'com.example', module: 'conflicting-library'
    }

高级配置

  1. 添加原生权限
    在 MyUniPlugin/android/AndroidManifest.xml 中添加权限声明

  2. 处理 Activity 生命周期

    java

    复制

    @Override
    public void onActivityResume() {
        // 处理恢复逻辑
    }
  3. 事件通知到 JS

    java

    复制

    mUniSDKInstance.fireGlobalEventCallback("globalEvent", new JSONObject().put("data", "eventData"));

通过以上步骤,您可以将 Android 原生功能封装为 AAR 插件,并在 UniApp 中无缝集成。确保保持 Android 与 UniApp 的版本兼容性,并充分测试不同设备场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天机️灵韵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值