【问题标题】:Why Flutter copies the src of standard libraries to sky_engine?为什么 Flutter 将标准库的 src 复制到 sky_engine 中?
【发布时间】:2019-09-10 20:27:53
【问题描述】:

由于 dart:ffi 可从 Dart 2.2.0-dev.2.0 获得,我一直在尝试使用该库。 The sample app 对我来说很好,我也尝试将它用于我的 Flutter 应用程序,但我无法使用 import "dart:ffi" 调用它,尽管我机器上的 Flutter 是 HEADmaster 使用 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_ROOT/bin/cache/pkg/sky_engine 的,这似乎是我不能在我的Flutter 应用程序中使用dart:ffi 的原因。

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

【问题讨论】:

  • 您好,您找到解决方案了吗?
  • @ch271828n 不。
  • 听到这个消息很难过:(
  • Sky 是 Fl​​utter 的原始名称 - 想象一下它被称为 flutter_engine :)
  • 您是否考虑编辑问题以包含minimal reproducible example。另外,我认为您想澄清标题,因为我想“为什么颤动副本...”的答案可以基于意见,但是如果您问的是诸如“如何导入 dart:ffi”之类的问题,那将增加一个答案。

标签: dart flutter


【解决方案1】:

Flutter 有一个很好的 documentation for FFI 可以调用原生 C API。在我使用 Flutter 2.5 进行测试时,在 Flutter 应用程序上添加 import 'dart:ffi' as ffi; 没有问题。如果您能够针对您的问题提供minimal repro,这将有助于人们更好地理解问题。

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

【讨论】:

    猜你喜欢
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 2011-03-09
    相关资源
    最近更新 更多