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_languages에 rust을 추가합니다.
        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이 처리하도록 합니다.

    .asfp-project 구성의 other_languages 아래에 rust가 있는지 확인합니다.

    rust-project.json이 생성되었는지 확인합니다.
    rust-project.json가 생성되었는지 확인합니다.
  • IDE에서 다음과 같은 Rust 관련 기능을 사용할 수 있습니다.

주요 Rust IDE 기능

  • 내장 LLDB 디버깅 및 변수 시각화 도구: 실행 > Android 프로세스에 연결에서 실행 중인 Rust 기기 서비스를 디버그합니다. Android.bp 여백 아이콘에서 ASfP의 내장 LLDB 디버거 (lldb-dap)를 사용하여 rust_test 또는 rust_test_host 타겟을 직접 실행할 수도 있습니다. String, Vec, HashMap, Option의 자동 pretty-printer가 포함되어 있습니다. 자세한 내용은 Rust 코드 디버그를 참고하세요.
  • 코드 완성: 다른 모듈의 항목을 비롯한 Rust 코드에 대한 지능형 제안을 받습니다.

    Rust 교차 모듈 코드 완성 예시
    다른 Rust 모듈의 항목을 제안하는 코드 완성

  • 탐색: 정의로 이동하고 프로젝트 전체에서 Rust 기호의 사용을 찾습니다.

    Rust 코드 탐색 예
    Rust 기호의 정의로 이동합니다.
    Rust 사용 사례 찾기 예
    Rust 심볼의 모든 사용 사례 찾기

  • 도움말: 기호 위로 포인터를 가져가면 유형 정보와 문서가 표시됩니다.

    Rust 도움말 예시
    다른 모듈의 Rust 심볼에 관한 유형 정보를 보여주는 도움말

  • 인레이 힌트: 편집기에서 직접 유형 정보와 기타 컨텍스트 힌트를 볼 수 있습니다.

    Rust 인레이 힌트 예시
    코드 내에 유형 정보를 표시하는 인레이 힌트

  • 구조 뷰: 구조 도구 창 (보기 > 도구 창 > 구조)을 사용하여 Rust 파일의 구조를 탐색합니다.

    Rust 구조 뷰 예시
    Rust 파일의 개요를 보여주는 구조 도구 창

  • 리팩터링: 안전하게 심볼 이름을 바꾸고 모든 사용을 업데이트합니다.

    Rust 이름 바꾸기 심볼 리팩터링 예시
    Rust 심볼의 이름을 바꾸고 모든 참조를 업데이트합니다.

  • 실시간 분석: Rust 코드의 오류 및 경고에 대한 즉각적인 피드백을 받습니다.

    Rust 실시간 코드 분석 예시
    Rust 코드에서 실시간 오류 및 경고를 표시하는 IDE