Правила побудови
Система збірки Android (Soong) підтримує Rust за допомогою кількох модулів:
Тип модуля | Опис |
---|---|
rust_binary | Створює бінарний файл Rust. |
rust_library | Створює бібліотеку Rust і надає варіанти rlib та dylib . |
rust_ffi | Створює бібліотеку Rust C, яку використовують модулі cc , і надає як статичні, так і спільні варіанти. |
rust_proc_macro | Створює бібліотеку proc-macro Rust. Вони аналогічні плагінам компілятора. |
rust_test | Створює бінарний файл тесту Rust, який використовує стандартну систему тестування Rust. |
rust_fuzz | Створює бінарний файл Rust fuzz, використовуючи libfuzzer . |
rust_protobuf | Генерує вихідний код і створює бібліотеку Rust, яка надає інтерфейс для певного protobuf. |
rust_bindgen | Генерує вихідний код і створює бібліотеку Rust, яка містить прив’язки Rust до бібліотек C. |
Далі ми розглянемо rust_binary
і rust_library
.
Спікер може згадати додаткові деталі:
-
Cargo не оптимізований для багатомовних репозиторіїв, а також завантажує пакети з інтернету.
-
Для сумісності та продуктивності, Android повинен мати крейти в межах дерева. Він також повинен взаємодіяти з кодом C/C++/Java. Soong заповнює цю прогалину.
-
Soong має багато спільного з Bazel, який є варіантом Blaze з відкритим вихідним кодом (використовується в google3).
-
Цікавий факт: Дані із "Зоряного шляху" - це Android типу Soong