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

技术咨询:能否在Android Kotlin/Java项目中使用Flutter包?

可以在Android Kotlin/Java应用中使用Flutter包吗?

完全可以实现,官方提供了成熟的集成方案,核心思路是将Flutter模块嵌入原生Android项目,以此复用Flutter包的功能。以下是具体实现步骤:

  • 创建Flutter模块
    在原生Android项目的同级目录下,执行命令生成Flutter模块:
    flutter create --template module flutter_module

  • 配置原生项目依赖
    在原生项目的settings.gradle中添加Flutter模块的引用:

    setBinding(new Binding([gradle: this]))
    evaluate(new File(
      settingsDir.parentFile,
      'flutter_module/.android/include_flutter.groovy'
    ))
    

    接着在app模块的build.gradle中添加依赖:
    implementation project(':flutter')

  • 调用Flutter包功能
    分两种场景处理:

    1. 需要UI展示的Flutter包
      在Kotlin中启动Flutter页面,复用包的UI功能:
      val flutterEngine = FlutterEngine(this)
      flutterEngine.dartExecutor.executeDartEntrypoint(
        DartExecutor.DartEntrypoint.createDefault()
      )
      FlutterEngineCache.getInstance().put("my_engine", flutterEngine)
      
      startActivity(
        FlutterActivity.withCachedEngine("my_engine").build(this)
      )
      
    2. 纯逻辑类Flutter包
      通过MethodChannel实现原生与Flutter的跨端通信,调用包的逻辑功能:
      Flutter端代码(在模块的main.dart中):
      import 'package:flutter/services.dart';
      import 'package:your_flutter_package/your_flutter_package.dart';
      
      void main() {
        const MethodChannel channel = MethodChannel('com.your.app/flutter_func');
        channel.setMethodCallHandler((call) async {
          if (call.method == 'invokePackageFunc') {
            // 调用目标Flutter包的方法
            return await YourFlutterPackage.processData(call.arguments);
          }
          return null;
        });
      }
      
      原生Kotlin代码:
      val channel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "com.your.app/flutter_func")
      channel.invokeMethod("invokePackageFunc", "传入参数") { result ->
        // 处理Flutter返回的结果
        result?.let {
          // 业务逻辑处理
        }
      }
      
  • 关键注意点

    • 确保Flutter模块的pubspec.yaml中已添加目标Flutter包依赖,并执行flutter pub get
    • 原生项目的minSdkVersion需与Flutter模块兼容(建议不低于21)
    • 若Flutter包包含Android原生插件代码,需确认这些代码能被正确集成到原生项目中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:35:23