建構規則

Android 的建構系統 (Soong) 透過以下模組支援 Rust:

模組型態敘述
rust_binary生成一個 Rust 執行檔。
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生成用於連接 C 函式庫的 Rust 原始碼及函式庫。

接下來我們會探討 rust_binaryrust_library

講者可以提及以下其他事項:

  • Cargo 未針對使用多種程式語言的倉儲進行最佳化調整,並且會從網際網路下載套件。

  • 為了遵循常規並確保效能,Android 必須在自身專案內提供 Crate。此外,也必須保有與 C/C++/Java 程式碼的互通性。Soong 可以彌補這中間的落差。

  • Soong 與 Bazel 有許多相似之處,後者是 Blaze 的開放原始碼變化版本 (用於 google3)。

  • Google 有將 AndroidChromeOSFuchsia 轉移到 Bazel 的規畫。

  • 對所有 Rust OS 開發人員來說,學習類似 Bazel 的建構規則都能派上用場。

  • 趣味小知識:《星艦迷航記》中的「百科 (Data)」是 Soong 型的仿生機器人 (android)。