Поддержка 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: Перейдите в Файл > Синхронизировать проект .

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

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

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

    Напоминаем, что дважды проверьте наличие rust в разделе other_languages ​​вашего .asfp-project -config.

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

Основные возможности Rust IDE

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

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

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

    Пример навигации в коде Rust
    Переход к определению символа Rust.
    Примеры использования Rust find
    Поиск всех использований символа Rust.

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

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

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

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

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

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

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

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

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

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