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

Обзор

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

Эта страница поможет вам настроить Android Studio for Platform (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: перейдите в меню Файл > Синхронизировать проект .

Проверка успеха

После выполнения этих шагов:

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

    Напоминаем, что необходимо убедиться в наличии rust в разделе other_languages ​​в вашем файле конфигурации .asfp-project .

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

Ключевые особенности Rust IDE

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

    Пример автодополнения кода между модулями Rust
    Автозавершение кода предлагает элементы из другого модуля Rust.

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

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

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

    Пример всплывающей подсказки в Rust
    Всплывающая подсказка, отображающая информацию о типе символа Rust из другого модуля.

  • Встроенные подсказки: Просматривайте информацию о типе и другие контекстные подсказки непосредственно в редакторе.

    Пример подсказок по инкрустации ржавчиной
    Встроенные подсказки, отображающие информацию о типах данных в коде.

  • Просмотр структуры: Для навигации по структуре файлов Rust используйте окно инструментов «Структура» (Вид > Окна инструментов > Структура).

    Пример представления структуры в Rust
    Окно инструментов структуры, отображающее контур файла Rust.

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

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

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

    Пример анализа кода в реальном времени на Rust
    IDE отображает ошибки и предупреждения в коде Rust в режиме реального времени.