ビルドルール

Android ビルドシステム(Soong)は、いくつかのモジュールを通じて Rust をサポートしています。

モジュール タイプ説明
rust_binaryRust バイナリを生成します。
rust_libraryRust ライブラリを生成し、rlibdylib の両方のバリアントを提供します。
rust_fficc モジュールで利用可能な Rust C ライブラリを生成し、静的版と共有版の両方のバリアントを提供します。
rust_proc_macroproc-macro Rust ライブラリを生成します。これらはコンパイラプラグインに相当します。
rust_test標準の Rust テストハーネスを使用する Rust テストバイナリを生成します。
rust_fuzzlibfuzzer を活用する Rust ファズバイナリを生成します。
rust_protobufソースを生成し、特定の protobuf に対するインターフェースを提供する Rust ライブラリを生成します。
rust_bindgenソースを生成し、C ライブラリへの Rust バインディングを含む Rust ライブラリを生成します。

次に、rust_binaryrust_library を見ていきます。

発表者が触れる可能性のある追加項目:

  • Cargo は多言語リポジトリ向けに最適化されておらず、さらにインターネットから パッケージをダウンロードします。

  • コンプライアンスとパフォーマンスのため、Android ではクレートをツリー内に 持つ必要があります。また、C/C++/Java コードと相互運用できる必要もあります。 Soong はそのギャップを埋めます。

  • Soong には Bazel との多くの類似点があります。Bazel は Blaze(google3 で使用されている)のオープンソース版です。

  • 豆知識: Star Trek の Data は Soong 型 Android です。