构建规则
Android 构建系统(Soong)通过一系列模块来支持Rust:
Module Type | 描述 |
---|---|
rust_binary | Produces a Rust binary. |
rust_library | 生成一个 Rust 库,并提供 rlib 和 dylib 两种变体。 |
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_binary
和 rust_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 中使用)。
对所有 Rust 操作系统开发者而言,了解类似 Bazel 的构建规都很有用。
趣味小知识:《星际迷航》中的数据是 Soong 类型的 Android。