Compatibilidad con Rust en ASfP

Descripción general

Rust es un lenguaje de programación de sistemas moderno que se enfoca en el rendimiento y la seguridad, en particular, la seguridad de la memoria. Rust es cada vez más importante en el ecosistema de Android como una alternativa más segura a C o C++ para desarrollar componentes críticos del sistema, ya que ofrece mayor seguridad y estabilidad.

En esta página, se explica cómo configurar Android Studio for Platform (ASfP) para admitir el desarrollo en Rust dentro de tus proyectos del Proyecto de código abierto de Android (AOSP).

Requisitos previos

  • ASfP instalado: Verifica que ASfP esté instalado y en ejecución.
  • Confirmación de compra en la plataforma: Necesitas una confirmación de compra en la plataforma de AOSP que funcione en tu máquina.

Habilita la compatibilidad con Rust

A continuación, se muestra el proceso paso a paso para que la compatibilidad con Rust funcione en tu proyecto de ASfP:

  1. Habilitar Rust

    • Cuando crees un proyecto nuevo en el asistente de configuración, selecciona la casilla de verificación de Rust:
    Se agregó la casilla de verificación Rust en el asistente de configuración de proyectos nuevos.
    Casilla de verificación de Rust en el asistente de configuración de proyectos nuevos.
    • En el caso de los proyectos existentes, abre el archivo de configuración .asfp-project y agrega rust a 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. Sincroniza tu proyecto

    Activa una sincronización del proyecto para que el IDE genere e indexe tus crates de Rust: selecciona ASfP > Sync > Sync Project.

Verifica la configuración

Después de completar estos pasos, verifica los siguientes resultados:

  • rust-project.json aparece en la vista del proyecto debajo del archivo fuente .iml. Soong genera este archivo durante el análisis y lo vincula simbólicamente a la raíz del repositorio, lo que es necesario para que el Protocolo del servidor de lenguaje (LSP) proporcione servicios de lenguaje. No edites este archivo directamente. En su lugar, vuelve a sincronizar para que Soong lo controle.

    Verifica que rust esté presente en other_languages en la configuración de .asfp-project.

    Asegúrate de que se haya generado rust-project.json.
    Asegúrate de que se haya generado rust-project.json.
  • Tu IDE habilita las siguientes funciones específicas de Rust.

Funciones clave del IDE de Rust

  • Depuración LLDB integrada y visualizadores de variables: Depura los servicios del dispositivo Rust en ejecución desde Ejecutar > Adjuntar al proceso de Android. También puedes iniciar destinos rust_test o rust_test_host directamente desde los íconos de margen Android.bp con el depurador LLDB integrado de ASfP (lldb-dap), con impresoras automáticas de formato para String, Vec, HashMap y Option. Para obtener más información, consulta Cómo depurar código de Rust.
  • Finalización de código: Obtén sugerencias inteligentes para el código de Rust, incluidos elementos de otros módulos.

    Ejemplo de finalización de código entre módulos de Rust
    La finalización de código sugiere elementos de un módulo de Rust diferente.

  • Navegación: Salta a las definiciones y encuentra los usos de los símbolos de Rust en todo tu proyecto.

    Ejemplo de navegación de código de Rust
    Navegar a la definición de un símbolo de Rust.
    Ejemplo de búsqueda de usos de Rust
    Cómo encontrar todos los usos de un símbolo de Rust.

  • Sugerencias: Mantén el puntero sobre los símbolos para ver información sobre el tipo y documentación.

    Ejemplo de cuadro de información de Rust
    Información sobre la herramienta que muestra información de tipo para un símbolo de Rust de otro módulo.

  • Sugerencias intercaladas: Consulta información sobre el tipo de vista y otras sugerencias contextuales directamente en el editor.

    Ejemplo de sugerencias intercaladas de Rust
    Sugerencias intercaladas que muestran información de tipo dentro del código.

  • Vista de estructura: Navega por la estructura de tus archivos de Rust con la ventana de herramientas Structure (View > Tool Windows > Structure).

    Ejemplo de vista de estructura de Rust
    La ventana de herramientas de estructura que muestra el esquema de un archivo de Rust.

  • Refactorización: Cambia el nombre de los símbolos de forma segura y actualiza todos los usos.

    Ejemplo de refactorización de cambio de nombre de símbolo en Rust
    Cambia el nombre de un símbolo de Rust y actualiza todas sus referencias.

  • Análisis en tiempo real: Obtén comentarios instantáneos sobre los errores y las advertencias en tu código de Rust.

    Ejemplo de análisis de código en tiempo real de Rust
    IDE que muestra errores y advertencias en tiempo real en el código de Rust.