You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter项目中如何使用与调用AAR文件?

调用Flutter项目中集成的AAR类步骤指南

1. 确认AAR集成配置无误

  • 将AAR文件放置在android/app/libs目录下(无libs文件夹则新建)
  • 在android/app/build.gradle的dependencies块中添加:
    implementation files('libs/你的AAR文件名.aar')
    
  • 同步Gradle,确保没有编译报错

2. 通过MethodChannel实现Flutter与AAR的交互

Flutter无法直接调用原生AAR类,需要通过MethodChannel做桥接:

步骤1:Flutter端定义MethodChannel

在Dart文件中编写调用桥接:

import 'package:flutter/services.dart';

class AarBridge {
  static const MethodChannel _channel = MethodChannel('aar_interaction_channel');

  // 封装调用AAR方法的函数
  static Future<String?> invokeAarMethod(String inputParam) async {
    try {
      final String? result = await _channel.invokeMethod(
        'call_aar_target_method',
        {'param': inputParam}
      );
      return result;
    } on PlatformException catch (e) {
      return "调用失败: ${e.message}";
    }
  }
}

步骤2:Android原生层调用AAR类

打开android/app/src/main/kotlin/你的包名/MainActivity.kt(Java对应MainActivity.java):

Kotlin版本

import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
import com.your.aar.package.TargetAarClass // 替换为AAR中实际类的完整包路径

class MainActivity : FlutterActivity() {
    private val CHANNEL = "aar_interaction_channel"

    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine)
        MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { call, result ->
            when (call.method) {
                "call_aar_target_method" -> {
                    val param = call.argument<String>("param")
                    // 实例化AAR类并调用目标方法
                    val aarInstance = TargetAarClass()
                    val aarResult = aarInstance.targetMethod(param) // 替换为AAR中实际方法名
                    result.success(aarResult)
                }
                else -> result.notImplemented()
            }
        }
    }
}

Java版本

import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugin.common.MethodChannel;
import com.your.aar.package.TargetAarClass; // 替换为AAR中实际类的完整包路径

public class MainActivity extends FlutterActivity {
    private static final String CHANNEL = "aar_interaction_channel";

    @Override
    public void configureFlutterEngine(FlutterEngine flutterEngine) {
        super.configureFlutterEngine(flutterEngine);
        new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL).setMethodCallHandler(
                (call, result) -> {
                    if (call.method.equals("call_aar_target_method")) {
                        String param = call.argument("param");
                        TargetAarClass aarInstance = new TargetAarClass();
                        String aarResult = aarInstance.targetMethod(param); // 替换为AAR中实际方法名
                        result.success(aarResult);
                    } else {
                        result.notImplemented();
                    }
                }
        );
    }
}

3. 调用示例

在Flutter页面中直接调用封装好的方法:

ElevatedButton(
  onPressed: () async {
    String? result = await AarBridge.invokeAarMethod("测试参数");
    print("AAR返回结果: $result");
  },
  child: const Text("调用AAR方法"),
)

关键注意事项

  • 必须明确AAR中类的完整包名和方法签名,若没有文档,可直接将AAR拖入Android Studio查看类结构
  • 若AAR依赖其他第三方库,需在android/app/build.gradle的dependencies中添加对应依赖,否则会出现类找不到的错误
  • 确保AAR的CPU架构(armeabi-v7a、arm64-v8a等)与Flutter项目的架构配置一致,避免运行时崩溃

内容的提问来源于stack exchange,提问作者ABDELILAH MOUHIB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 15:50:12