Dart
概述
Dart 工件在 Fuchsia 中的构建方式与在其他平台上不同。
无需依靠 pub
来管理依赖关系,而是将我们依赖的第三方 packages 的源检入到 //third_party/dart-pkg
下的树中。
这是为了确保我们在多个构建中使用一致的依赖版本。
同样,由于所有内容都在 out/
下,因此不会在源代码树中放置任何构建输出。
其中包括 .packages
文件,这些文件是根据目标的依赖关系在构建过程中生成的。
退出 Dart 程序
Fuchsia 的 Dart 运行程序不会监视 Dart 程序打开的 FIDL 通道,因此不会正常结束该程序,而是等待对 fuchsia.exit()
的显式调用以指示该程序应该结束。
注意:从 dart:io 调用 exit() 将导致异常,因为不允许组件调用此方法,因为它将关闭 dart_runner 进程。
import 'package:fuchsia/fuchsia.dart' as fuchsia;
void main(List<String> args) {
print('Hello Dart!');
fuchsia.exit(23);
}
目标
有五个针对构建 Dart 的 gn 目标:
dart_library
定义了一个能够被其他 Dart 目标使用的库;dart_app
为 Fuchsia 定义了一个 Dart 可执行程序;dart_tool
为主机定义了一个 Dart 工具;flutter_app
定义了一个 Flutter 应用程序;dart_test
定义了一个测试组。
请查看每个目标的定义以了解如何使用它们。
包 (package) 结构 {#layout}
我们使用和 标准包结构 十分相似的结构。
my_package/
|
|-- pubspec.yaml # 空的,用来做标记【必需】
|-- BUILD.gn # 包含所有的目标
|-- analysis_options.yaml # 分析配置项【必需】
|-- lib/ # dart_library 内容
|-- bin/ # dart_binary 的(目标)或 dart_tool 的(宿主)
|-- test/ # dart_test 内容