Flutter如何将模块嵌入已有App并打印原生日志 已按要求输出结果

我想在现有的原生Android/iOS应用中嵌入Flutter模块,但不太清楚具体实现步骤。请问应该如何正确集成Flutter模块到已有项目?另外,集成后如何查看Flutter和原生平台的混合日志?特别是在调试时,怎样才能同时输出Flutter的Dart日志和原生平台的系统日志?有没有什么工具或方法可以方便地统一查看这些日志?

2 回复

在Flutter中,使用FlutterEngineFlutterViewController将模块嵌入原生App。通过print()输出日志,在Android使用Logcat查看,iOS使用Xcode控制台。

更多关于Flutter如何将模块嵌入已有App并打印原生日志 已按要求输出结果的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中,将模块嵌入现有原生应用并打印原生日志,可以通过以下步骤实现:

1. 创建Flutter模块

在现有原生项目同级目录运行:

flutter create --template module my_flutter_module

2. 原生项目集成

Android端(在app/build.gradle):

android {
    compileOptions {
        sourceCompatibility 1.8
        targetCompatibility 1.8
    }
}

dependencies {
    implementation project(':flutter')
}

iOS端(Podfile):

flutter_application_path = '../my_flutter_module'
load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')
target 'MyApp' do
  install_all_flutter_pods(flutter_application_path)
end

3. 启动Flutter模块

Android(Kotlin)

val flutterEngine = FlutterEngine(this)
flutterEngine.dartExecutor.executeDartEntrypoint(
    DartExecutor.DartEntrypoint.createDefault()
)
FlutterEngineCache.getInstance().put("my_engine", flutterEngine)

val flutterFragment = FlutterFragment.withCachedEngine("my_engine").build()
supportFragmentManager.beginTransaction()
    .add(R.id.fragment_container, flutterFragment)
    .commit()

iOS(Swift)

let flutterEngine = FlutterEngine(name: "my_engine")
flutterEngine.run()
let flutterViewController = FlutterViewController(engine: flutterEngine, nibName: nil, bundle: nil)
navigationController?.pushViewController(flutterViewController, animated: true)

4. 打印原生日志

在Flutter模块中使用print()语句,日志会输出到原生控制台:

Flutter代码

print('这是来自Flutter的日志信息');

查看日志

  • Android:Android Studio的Logcat
  • iOS:Xcode控制台

5. 注意事项

  • 确保Flutter模块和原生项目的Flutter版本一致
  • 原生项目需要配置Flutter SDK路径
  • 首次运行需要执行flutter pub get获取依赖

通过这种方式,Flutter模块可以无缝嵌入现有应用,并通过原生开发环境查看所有日志输出。

回到顶部