قوانین ساخت

‏ Android build system (Soong) از Rust از طریق تعدادی ماژول پشتیبانی می‌کند:

Module Typeتوضیحات
rust_binaryیک Rust binary تولید می‌کند.
rust_libraryیک کتابخانه Rust تولید می‌کند و هر دو نوع rlib و dylib را ارائه می‌دهد.
rust_ffiیک کتابخانه Rust C قابل استفاده توسط ماژول‌های cc تولید می‌کند و انواع متغیرهای static و share را ارائه می‌کند.
rust_proc_macroیک کتابخانه proc-macro تولید می‌کند. اینها مشابه پلاگین‌های کامپایلر هستند.
rust_testیک باینری تست Rust تولید می‌کند که از استاندارد Rust test مهار شده استفاده می‌کند.
rust_fuzzیک libfuzzer باینری Rust fuzz تولید می‌کند.
rust_protobufیک source تولید می‌کند و یک کتابخانه Rust تولید می‌کند که یک interface برای یک protobuf خاص فراهم می‌کند.
rust_bindgenیک source تولید می‌کند و یک کتابخانه Rust حاوی پیوندهای Rust به کتابخانه‌های C تولید می‌کند.

در ادامه به rust_binary و rust_binary نگاه خواهیم کرد.

موارد دیگری که سخنران ممکن است ذکر کند:

  • ‏ Cargo برای repoهای چند‌زبانه بهینه‌سازی نشده است و همچنین packageها را از اینترنت دانلود می‌کند.

  • برای انطباق و کارایی، اندروید باید crates in-tree داشته باشد. همچنین باید با کد C/C++/Java همکاری داشته باشد. Soong این شکاف را پر می کند.

  • Soong has many similarities to Bazel, which is the open-source variant of Blaze (used in google3).

  • Fun fact: Data from Star Trek is a Soong-type Android.