建構規則
Android 的建構系統 (Soong) 透過以下模組支援 Rust:
模組型態 | 敘述 |
---|---|
rust_binary | 生成一個 Rust 執行檔。 |
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 | 生成用於連接 C 函式庫的 Rust 原始碼及函式庫。 |
接下來我們會探討 rust_binary
及 rust_library
。
講者可以提及以下其他事項:
-
Cargo 未針對使用多種程式語言的倉儲進行最佳化調整,並且會從網際網路下載套件。
-
為了遵循常規並確保效能,Android 必須在自身專案內提供 Crate。此外,也必須保有與 C/C++/Java 程式碼的互通性。Soong 可以彌補這中間的落差。
-
Soong 與 Bazel 有許多相似之處,後者是 Blaze 的開放原始碼變化版本 (用於 google3)。
-
對所有 Rust OS 開發人員來說,學習類似 Bazel 的建構規則都能派上用場。
-
趣味小知識:《星艦迷航記》中的「百科 (Data)」是 Soong 型的仿生機器人 (android)。