Dart

概述

Dart 工件在 Fuchsia 中的构建方式与在其他平台上不同。

无需依靠 pub 来管理依赖关系,而是将我们依赖的第三方 packages 的源检入到 //third_party/dart-pkg 下的树中。 这是为了确保我们在多个构建中使用一致的依赖版本。

同样,由于所有内容都在 out/ 下,因此不会在源代码树中放置任何构建输出。 其中包括 .packages 文件,这些文件是根据目标的依赖关系在构建过程中生成的。

退出 Dart 程序

Fuchsia 的 Dart 运行程序不会监视 Dart 程序打开的 FIDL 通道,因此不会正常结束该程序,而是等待对 fuchsia.exit() 的显式调用以指示该程序应该结束。

注意:从 dart:io 调用 exit() 将导致异常,因为不允许组件调用此方法,因为它将关闭 dart_runner 进程。

  1. import 'package:fuchsia/fuchsia.dart' as fuchsia;
  2. void main(List<String> args) {
  3. print('Hello Dart!');
  4. fuchsia.exit(23);
  5. }

目标

有五个针对构建 Dart 的 gn 目标:

请查看每个目标的定义以了解如何使用它们。

包 (package) 结构 {#layout}

我们使用和 标准包结构 十分相似的结构。

  1. my_package/
  2. |
  3. |-- pubspec.yaml # 空的,用来做标记【必需】
  4. |-- BUILD.gn # 包含所有的目标
  5. |-- analysis_options.yaml # 分析配置项【必需】
  6. |-- lib/ # dart_library 内容
  7. |-- bin/ # dart_binary 的(目标)或 dart_tool 的(宿主)
  8. |-- test/ # dart_test 内容

拓展延伸