Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Правила сборки

Система сборки Android (Soong) поддерживает Rust через несколько модулей:

Тип модуляОписание
rust_binaryСоздаёт бинарный файл Rust.
rust_libraryСоздаёт библиотеку Rust и предоставляет варианты rlib и dylib.
rust_ffiСоздаёт библиотеку C на Rust, которую могут использовать модули cc; предоставляет статический и динамический варианты.
rust_proc_macroСоздаёт библиотеку Rust типа proc-macro. Они аналогичны плагинам компилятора.
rust_testСоздаёт бинарный файл тестов Rust, который использует стандартную тестовую обвязку (test harness) Rust.
rust_fuzzСоздаёт бинарный файл Rust для фаззинга на основе libfuzzer.
rust_protobufГенерирует исходный код и создаёт библиотеку Rust, которая предоставляет интерфейс для конкретного protobuf.
rust_bindgenГенерирует исходный код и создаёт библиотеку Rust с привязками к библиотекам C.

Дальше мы рассмотрим rust_binary и rust_library.

Дополнительные моменты, которые может упомянуть докладчик:

  • Cargo не оптимизирован для репозиториев с несколькими языками, а также загружает пакеты из интернета.

  • Из соображений соответствия требованиям и производительности Android должен хранить крейты внутри дерева исходников. Кроме того, он должен взаимодействовать с кодом на C/C++/Java. Soong восполняет этот пробел.

  • Soong во многом похож на Bazel, который представляет собой открытый вариант Blaze (используемого в google3).

  • Забавный факт: Data из «Звёздного пути» — Android типа Soong.