Поддержка Rust в ASfP

Обзор

Rust – это современный язык системного программирования, ориентированный на производительность и безопасность, особенно безопасность памяти. Rust становится все более важным языком в экосистеме Android как более безопасная альтернатива C или C++ для разработки критически важных системных компонентов, обеспечивающая повышенную безопасность и стабильность.

На этой странице рассказывается, как настроить Android Studio для платформы (ASfP), чтобы поддерживать разработку на Rust в проектах Android Open Source Project (AOSP).

Требования

  • Установлен ли ASfP. Убедитесь, что ASfP установлен и запущен.
  • Проверка платформы. На вашем компьютере должна быть рабочая версия платформы AOSP.

Как включить поддержку Rust

Чтобы добавить поддержку Rust в проект ASfP, выполните следующие действия:

  1. Включить Rust

    • При создании нового проекта в мастере настройки установите флажок Rust:
    Флажок Rust в мастере настройки нового проекта.
    Флажок Rust в мастере настройки нового проекта.
    • В существующих проектах откройте файл конфигурации .asfp-project и добавьте rust в other_languages:
        other_languages:
          -   cpp
          -   rust
        ```
    
    <figure>
          <img src="/studio/platform/images/1-modify_asfp_project_languages.png" alt="Modifying the .asfp-project file to add rust to other_languages" class="screenshot">
          <figcaption>Adding Rust support in the <code>.asfp-project</code> file.</figcaption>
        </figure>
    
  1. Синхронизация проекта

    Запустите синхронизацию проекта, чтобы IDE сгенерировала и проиндексировала ваши крейты Rust: выберите ASfP > Sync > Sync Project.

Проверка конфигурации

После этого проверьте следующие результаты:

  • rust-project.json появится в представлении проекта под исходным файлом .iml. Этот файл создается Soong во время анализа и связывается с корневым каталогом репозитория, что необходимо для протокола языкового сервера (LSP), чтобы предоставлять языковые сервисы. Не редактируйте этот файл напрямую. Вместо этого выполните повторную синхронизацию, чтобы это сделал Soong.

    Убедитесь, что элемент rust присутствует в разделе other_languages конфигурации .asfp-project.

    Убедитесь, что файл rust-project.json создан.
    Убедитесь, что токен rust-project.json создан.
  • В вашей IDE доступны следующие функции, связанные с Rust:

Основные функции IDE для Rust

  • Встроенная отладка LLDB и визуализаторы переменных. Отлаживайте запущенные сервисы устройств Rust, выбрав Run > Attach to Android Process (Запустить > Подключиться к процессу Android). Вы также можете запускать цели rust_test или rust_test_host непосредственно из значков на полях Android.bp, используя встроенный отладчик LLDB (lldb-dap) с автоматическими автоформатировщиками для String, Vec, HashMap и Option. Подробнее о том, как отлаживать код Rust…
  • Автозаполнение кода. Получайте интеллектуальные подсказки для кода Rust, в том числе элементы из других модулей.

    Пример дополнения кода в Rust для разных модулей
    Дополнение кода предлагает элементы из другого модуля Rust.

  • Навигация. Переходите к определениям и находите места использования символов Rust в проекте.

    Пример навигации по коду Rust
    Переход к определению символа Rust.
    Пример использования функции поиска в Rust
    Как найти все случаи использования символа Rust

  • Подсказки. Наведите указатель на символ, чтобы посмотреть информацию о его типе и документацию.

    Пример подсказки в Rust
    Подсказка с информацией о типе для символа Rust из другого модуля.

  • Встроенные подсказки. Информация о типе просмотра и другие подсказки, связанные с контекстом, показываются прямо в редакторе.

    Пример подсказок для встраивания на языке Rust
    Встроенные подсказки с информацией о типах в коде.

  • Структура. Перемещайтесь по структуре файлов Rust с помощью окна инструментов Структура (Вид > Окна инструментов > Структура).

    Пример представления структуры Rust
    Окно инструмента "Структура" с контуром файла Rust.

  • Рефакторинг. Безопасное переименование символов и обновление всех их использований.

    Пример рефакторинга символов в Rust
    Переименование символа Rust и обновление всех ссылок на него.

  • Анализ в реальном времени. Получайте мгновенные отзывы об ошибках и предупреждениях в коде Rust.

    Пример анализа кода Rust в реальном времени
    IDE showing real-time errors and warnings in Rust code.