ビルドルール
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 ライブラリを生成します。 |
次に、rust_binary と rust_library を見ていきます。
発表者が触れる可能性のある追加項目:
-
Cargo は多言語リポジトリ向けに最適化されておらず、さらにインターネットから パッケージをダウンロードします。
-
コンプライアンスとパフォーマンスのため、Android ではクレートをツリー内に 持つ必要があります。また、C/C++/Java コードと相互運用できる必要もあります。 Soong はそのギャップを埋めます。
-
Soong には Bazel との多くの類似点があります。Bazel は Blaze(google3 で使用されている)のオープンソース版です。
-
豆知識: Star Trek の Data は Soong 型 Android です。