قوانین ساخت
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.