ASfP의 Rust 지원

개요

Rust는 성능과 안전, 특히 메모리 안전에 중점을 둔 최신 시스템 프로그래밍 언어입니다. Rust는 중요한 시스템 구성요소를 개발하는 데 있어 C/C++의 더 안전한 대안으로 Android 생태계에서 점점 더 중요해지고 있으며, 보안과 안정성이 개선되었습니다.

이 페이지에서는 Android 오픈소스 프로젝트 (AOSP) 프로젝트 내에서 Rust 개발을 지원하도록 플랫폼용 Android 스튜디오 (ASfP)를 설정하는 방법을 안내합니다.

기본 요건

  • ASfP 설치됨: ASfP가 설치되어 있고 실행 중인지 확인합니다.
  • 플랫폼 체크아웃: 머신에 작동하는 AOSP 플랫폼 체크아웃이 필요합니다.

Rust 지원 사용 설정

ASfP 프로젝트에서 Rust 지원을 작동시키기 위한 단계별 프로세스는 다음과 같습니다.

  1. Rust 사용 설정

    • 설정 마법사에서 새 프로젝트를 만들 때 Rust 체크박스를 선택하기만 하면 됩니다.
    새 프로젝트 설정 마법사의 Rust 체크박스
    새 프로젝트 설정 마법사의 Rust 체크박스
    • 기존 프로젝트의 경우 .asfp-project 구성으로 이동하여 other_languagesrust을 추가합니다.
        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 프로젝트를 인식하도록 프로젝트 동기화를 트리거해야 합니다. File > Sync Project로 이동합니다.

성공 여부 확인

이 단계를 완료한 후 다음을 수행합니다.

  • 프로젝트 뷰 (소스 iml 아래)에 rust-project.json가 표시됩니다. 이 파일은 분석 중에 Soong에 의해 생성되고 저장소 루트에 심볼릭 링크됩니다. 이는 LSP가 언어 서비스를 제공하는 데 필요합니다. 이 파일을 직접 수정하지 마세요. 대신 Soong이 처리하도록 다시 동기화하세요.

    .asfp-project 구성의 other_languages 아래에 rust가 있는지 다시 확인하세요.

    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 코드의 오류 및 경고에 대한 즉각적인 피드백을 받습니다.

    Rust 실시간 코드 분석 예시
    Rust 코드에서 실시간 오류 및 경고를 보여주는 IDE