플랫폼용 Android 스튜디오 (ASfP)의 프로젝트에는 소스 코드 및 애셋에서 테스트 코드와 Soong 빌드 구성에 이르기까지 AOSP 코드베이스를 위한 작업공간을 정의하는 모든 항목이 포함됩니다.
IntelliJ 작업공간 모델을 기반으로 하는 ASfP는 대규모 플랫폼 프로젝트를 구성하고 시작 시 캐시된 스냅샷에서 프로젝트 모델을 복원합니다. out/ 디렉터리 내부의 콘텐츠와 생성된 gen 파일은 기호 및 파일 탐색이 빠르게 유지되도록 프로젝트 검색 범위에서 제외됩니다.
프로젝트 구성 (.asfp-project)
프로젝트 디렉터리의 루트에 있는 .asfp-project YAML 파일은 ASfP 프로젝트 구성을 제어합니다. 이 파일은 작업공간에 포함되는 디렉터리, Soong 모듈, 언어, 빌드 플래그를 정의합니다.
다음 옵션 중 하나를 사용하여 언제든지 프로젝트 구성을 열 수 있습니다.
- 기본 메뉴에서 ASfP > 프로젝트 > 구성 열기 를 선택합니다.
- 프로젝트 도구 창의 루트에서
.asfp-project를 더블클릭합니다. - Soong 도구 창 툴바에서 구성 열기 를 클릭합니다.
.asfp-project를 수정한 후 변경사항을 적용하려면 프로젝트 동기화를 실행합니다.
공유 가능한 프로젝트 템플릿 (내보내기 및 가져오기)
동일한 하위 시스템 (예: SystemUI, 설정, SurfaceFlinger 또는 Automotive)에서 작업하는 팀은 표준 .asfp-project 구성을 템플릿으로 공유할 수 있습니다.
템플릿으로 내보내기:
.asfp-project편집기 탭을 마우스 오른쪽 버튼으로 클릭하거나 ASfP > 프로젝트 > 템플릿으로 구성 내보내기를 선택하여 공유 가능한 템플릿 파일을 저장합니다.
템플릿에서 가져오기: 프로젝트 설정 마법사에서 새 프로젝트를 만들 때 템플릿에서 가져오기를 선택하고 공유된
.asfp-projectYAML 파일을 선택하여 디렉터리, 모듈, 빌드 설정을 미리 채웁니다.
구성 매개변수
.asfp-project 파일은 다음 매개변수를 지원합니다.
repo
필수: Android 플랫폼 저장소 체크아웃 루트의 절대 경로입니다.
repo: /path/to/aosp
lunch
필수: 프로젝트와 결합된 lunch 타겟입니다. 모든 Soong 빌드, 동기화, 배포 작업에 사용됩니다.
lunch: aosp_cf_x86_64_phone-aosp_current-userdebug
directories
선택 사항: 프로젝트에 포함하거나 프로젝트에서 제외할 디렉터리 (repo 루트를 기준으로 함)입니다. 심볼릭 링크된 디렉터리와 소스 루트가 지원됩니다.
directories:
include:
- frameworks/base
- packages/apps/Settings
exclude:
- vendor
- out/soong
modules
선택사항: 프로젝트에 포함하거나 프로젝트에서 제외할 특정 Soong 모듈입니다.
directories와 함께 작동합니다. 전체 모듈 이름과 약식 모듈 이름이 모두 지원됩니다.
modules:
include:
- SystemUI
- frameworks/base/services/core/java:services
exclude:
- UnusedModule
test_sources
선택사항: ASfP의 자동 테스트 소스 휴리스틱을 수동으로 재정의해야 할 때 테스트 소스 루트로 표시할 상대 경로입니다.
test_sources:
- cts/tests/tests/example
- tests/mytests
other_languages
선택사항: Java, Kotlin, Android.bp 지원은 기본적으로 사용 설정되어 있습니다. C 및 C++의 경우 cpp를 추가하고 Rust 언어 지원의 경우 rust를 추가합니다.
other_languages:
- cpp
- rust
build_config
선택사항: 동기화, 거터 빌드, 실행 구성을 비롯하여 IDE에서 트리거된 Soong 빌드 호출에 전달되는 맞춤 플래그 또는 환경 변수입니다.
build_config:
flags:
- -j64
env:
SOONG_PARTIAL_COMPILE: true
SOONG_ALLOW_MISSING_DEPENDENCIES: true
동기화 모드 및 Soong 도구 창
ASfP는 워크플로 요구사항에 따라 IDE 프로젝트를 AOSP 체크아웃과 동기화하는 여러 방법을 제공합니다. ASfP > 동기화 메뉴 또는 Soong 도구 창에서 이러한 작업에 액세스합니다.
- 프로젝트 동기화: 구성된 디렉터리와 모듈을 분석하고 IDE 색인 생성 및 종속 항목을 업데이트합니다.
- 부분 동기화: 모듈 또는 디렉터리의 타겟팅된 하위 집합만 동기화하여 트리의 현지화된 영역에서 작업할 때 시간을 절약합니다.
- 빌드 없음 동기화: Soong 빌드 단계를 실행하지 않고 IDE 프로젝트 구조와 소스 루트를 새로고침합니다. 소스 파일을 추가하거나 이동했거나 터미널에서 이미 빌드한 경우에 유용합니다.
- 동기화 및 전체 빌드: 프로젝트 동기화와 전체 Soong 빌드를 단일 단계로 결합합니다.
Soong 도구 창 (뷰 > 도구 창 > Soong)에는 각 동기화 작업 노드의 실시간 상태 표시기, 빠른 액세스 빌드 버튼, Soong 명령어 실행이 표시됩니다.
편집기 내 Android.bp 빌드, 배포, 탐색
ASfP는 Android.bp 파일에 통합 편집기 지원을 제공합니다.
거터에서 타겟 빌드, 실행, 디버그
프로젝트에서 Android.bp 파일을 열어 두 개의 거터 아이콘에서 타겟을 빌드하거나 실행합니다.
- 빌드 아이콘 (이름이 지정된 모든 모듈): 모든 이름이 지정된
모듈 (
cc_library_shared,java_library,rust_binary,android_app, 테스트 타겟)의name:옆에 표시되어 해당 Soong 타겟 (빌드 "<module>")을 빌드합니다. - 실행 또는 디버그 아이콘 (
*_test,*_test_host,android_app): 테스트 모듈 또는android_app선언 옆에 있는 실행을 클릭하여 모듈을 실행하거나 디버그합니다.android_test모듈은atest를 통해 디버그하고cc_test*및rust_test*모듈은 기본 제공 LLDB에서 실행됩니다.

컨텍스트 배포 및 플래시 실행 구성
Android.bp 파일의 배포 가능한 모듈의 경우 다음 기능을 사용하여 거터 또는 마우스 오른쪽 버튼 클릭 컨텍스트 메뉴에서 컨텍스트 Soong 배포 실행 구성을 만들고 실행할 수 있습니다.
- 배포 방법:
adb, 맞춤 셸 스크립트,adevice, 또는flashall을 사용하여 배포합니다. - 실행 전 Soong 빌드 후크: 타겟 Soong 모듈을 자동으로 빌드합니다. 연결된 기기 또는 Cuttlefish 가상 기기에 배포하기 전에

소스 코드와 Android.bp 간 전환
프로젝트 도구 창, 편집기 탭 또는 편집기 컨텍스트 메뉴의 소스 파일 또는 디렉터리에서 마우스 오른쪽 버튼을 클릭하고 해당 Android.bp 파일 열기 를 선택합니다. ASfP는 해당 파일을 컴파일하는 Android.bp 모듈 선언을 찾아 강조표시하여 defaults 블록, 와일드카드 srcs 패턴, 심볼릭 링크를 확인합니다.

Android.bp 편집기 인텔리전스 및 툴팁 문서
- 파일 간 탐색 및 사용 횟수: 모듈
참조,
srcs파일 또는soong_config_module_type을 Control 키를 누른 상태로 클릭하여 선언으로 이동합니다. 클릭 가능한N Usages인레이 힌트가 모듈 이름과 공유된srcs타겟 옆에 표시되고 참조되지 않은 라이브러리 모듈은 시각적으로 흐리게 표시됩니다. - Soong 속성 문서 툴팁:
Android.bp파일의 속성 위에 포인터를 올려놓으면target,arch,multilib아래의 아키텍처 또는 타겟 범위 속성을 비롯하여 Soong 유형 서명과 문서가 인라인으로 표시됩니다.

Cuttlefish 가상 기기 관리 및 멀티스크린 미러링
ASfP에는 로컬로 빌드된 Cuttlefish 가상 기기를 사용하는 플랫폼, Android Automotive OS (AAOS), 소프트웨어 정의 차량 (SDV) 개발자를 위한 기본 제공 Cuttlefish 플러그인이 포함되어 있습니다.
- 기기 관리도구의 다중 기기 설정: 로컬 AOSP
체크아웃 (
$ANDROID_BUILD_TOP및$ANDROID_PRODUCT_OUT)을 사용하여 기기 관리도도구에서 다중 기기 Cuttlefish 가상 기기 설정을 만들고 관리합니다. - Cuttlefish 도구 창의 멀티스크린 디스플레이 미러링: 기본 제공 Cuttlefish 멀티스크린 디스플레이 미러링을 위해 뷰 > 도구 창 > Cuttlefish를 열어 AAOS 및 SDV 워크플로를 위해 여러 자동차 디스플레이를 한 번에 보고 상호작용할 수 있습니다.
