ビルドのルール

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 has many similarities to Bazel, which is the open-source variant of Blaze (used in google3).

  • 豆知識: スタートレックの「データ」は、スン(Soong)型アンドロイドです。