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

如何在Flutter Android应用中添加.aar文件作为依赖包?

在Flutter中导入并调用*.aar格式的Android SDK

一、将AAR文件添加到Flutter项目的Android模块

  • 打开Flutter项目的android目录,在app模块下创建libs文件夹(若无则新建)
  • 将目标.aar文件复制到android/app/libs目录中

二、配置Android构建脚本(build.gradle)

  • 打开android/app/build.gradle文件
  • 在android块中添加libs目录的依赖引用配置:
android {
    // 保留原有配置
    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }
}
  • 在dependencies块中添加AAR文件的依赖:
dependencies {
    // 保留原有依赖
    implementation files('libs/your-sdk-file.aar')
    // 若AAR存在额外依赖,需在此补充对应依赖项
}

注:将your-sdk-file.aar替换为实际的文件名

三、通过MethodChannel实现Flutter与原生的通信

Flutter无法直接调用原生方法,需通过MethodChannel完成跨平台交互:

1. 配置Android原生端的MethodChannel

  • 打开android/app/src/main/kotlin/[你的包名]/MainActivity.kt(Java项目则打开MainActivity.java)
  • 在configureFlutterEngine方法中初始化通道,并处理Flutter的调用请求:
    示例(Kotlin):
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel

class MainActivity : FlutterActivity() {
    private val CHANNEL = "com.yourcompany/yoursdk-channel" // 自定义通道标识

    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine)
        MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { call, result ->
            when (call.method) {
                "invokeSdkMethod" -> {
                    // 获取Flutter传递的参数
                    val inputParam = call.argument<String>("input")
                    // 调用AAR中的目标方法
                    val sdkResponse = YourSdkClass.targetMethod(inputParam)
                    // 将结果返回给Flutter
                    result.success(sdkResponse)
                }
                else -> result.notImplemented()
            }
        }
    }
}

注:替换YourSdkClass、targetMethod为AAR中实际的类和方法名,通道标识可自定义

2. 在Flutter Dart代码中调用原生方法

  • 在Dart文件中初始化MethodChannel,并封装调用方法:
import 'package:flutter/services.dart';

class SdkConnector {
  static const MethodChannel _channel = MethodChannel('com.yourcompany/yoursdk-channel');

  static Future<String?> invokeSdkMethod(String input) async {
    try {
      final String? response = await _channel.invokeMethod('invokeSdkMethod', {'input': input});
      return response;
    } on PlatformException catch (e) {
      print("SDK调用失败: ${e.message}");
      return null;
    }
  }
}

之后即可在Flutter页面中通过SdkConnector.invokeSdkMethod("测试参数")调用AAR中的方法

四、注意事项

  • 确保AAR的架构(如arm64-v8a、armeabi-v7a)与项目Android配置兼容
  • 若AAR依赖其他第三方库,需在build.gradle的dependencies中补充对应依赖,否则会出现编译错误
  • 遇到构建问题时,可先执行flutter clean再重新运行项目,避免缓存干扰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 20:15:37