构建规则

Android 构建系统(Soong)通过一系列模块来支持Rust:

Module Type描述
rust_binaryProduces a Rust binary.
rust_library生成一个 Rust 库,并提供 rlibdylib 两种变体。
rust_ffi生成一个可由 cc 模块使用的 Rust C 库,并提供静态和共享两种变体。
rust_proc_macro生成“proc-macro”Rust 库。这些宏与编译器插件类似。
rust_test生成使用标准 Rust 测试框架的 Rust 测试二进制文件。
rust_fuzz生成使用 libfuzzer 的 Rust 模糊测试二进制文件。
rust_protobuf生成源代码并生成为特定 protobuf 提供接口的 Rust 库。
rust_bindgen生成源代码并生成包含 Rust 绑定到 C 库的 Rust 库。

下面我们来看看 rust_binaryrust_library

演讲者可能会提及其他内容:

  • Cargo 未针对多语言代码库进行优化,并且从互联网下载软件包。

  • For compliance and performance, Android must have crates in-tree. It must also interop with C/C++/Java code. Soong fills that gap.

  • Soong 与 Bazel 有许多相似之处,后者是 Blaze 的开源变体(在 google3 中使用)。

  • 我们计划逐渐在 AndroidChromeOSFuchsia 中采用 Bazel 进行开发。

  • 对所有 Rust 操作系统开发者而言,了解类似 Bazel 的构建规都很有用。

  • 趣味小知识:《星际迷航》中的数据是 Soong 类型的 Android。