为什么 Flutter 会将标准库的 src 拷贝到 sky_engine?

Man*_*awa 16 dart flutter

由于dart:ffi可从 Dart 获得2.2.0-dev.2.0,我一直在尝试使用该库。示例应用程序对我来说很好用,我也尝试将它用于我的 Flutter 应用程序,但我无法调用它import "dart:ffi",尽管我机器上HEAD的Flutter 是master使用 Dart 的2.3.0-dev.0.0

我检查了发生了什么,然后我发现sky_engine没有包含,ffi.dart而它包含其他库(例如“dart:core”)。我还注意到这些库的源文件是使用BUILD.gn_embedder.yaml复制$FLUTTER_ROOT/bin/cache/dart-sdk/lib到的,这似乎是我无法在我的 Flutter 应用程序中使用的原因。$FLUTTER_ROOT/bin/cache/pkg/sky_enginedart:ffi

但是,首先,为什么 Flutter 需要 sky_engine,也就是“Dart 和 Flutter Engine 之间的接口”?为什么不用这个胶水代码直接调用它们呢?

Oma*_*att 1

Flutter 有很好的文档让 FFI能够调用原生 C API。import 'dart:ffi' as ffi;根据我使用 Flutter 2.5 的测试,添加Flutter 应用程序不会出现任何问题。如果您能够提供问题的最小重现,这将有助于人们更好地理解问题。

至于为什么 Flutter 使用 sky_engine 的问题,那只是因为它是“flutter_engine” - 类似于评论中已经提到的内容。