1. Android Automotive OS와 Kotlin
AAOS(Android Automotive OS) 환경에서 AIDL이나 HAL(Hardware Abstraction Layer)까지 깊이 있게 다루려면 Kotlin만으로는 한계가 명확합니다.
특히 오디오 DSP나 하드웨어 제어 로직을 다루는 하위 계층으로 내려갈수록 C++과 Java에 대한 이해가 필수적입니다. 그 이유를 핵심 계층별로 정리해 드릴게요.
1. 하부 계층(HAL)은 C++의 영역
안드로이드 아키텍처에서 하드웨어와 직접 통신하는 HIDL이나 최신 AIDL HAL은 대부분 C++로 작성됩니다.
• 성능 및 지연 시간: 오디오 신호 처리(DSP), 에코 캔슬링(AEC), 노이즈 제거(NR) 같은 작업은 매우 낮은 지연 시간(Low Latency)을 요구하므로, 가비지 컬렉션(GC) 부하가 있는 Java/Kotlin보다는 C++이 표준입니다.
• 메모리 관리: 커널 드라이버와 직접 메모리를 공유하거나 제어해야 하므로 포인터 개념이 있는 C++ 지식이 반드시 필요합니다.
2. 중간 계층(Framework)은 Java가 주류
Kotlin이 안드로이드 앱 개발의 표준이 되었지만, 안드로이드 프레임워크 내부 소스 코드는 여전히 방대한 양의 Java로 이루어져 있습니다.
• AIDL 인터페이스: AIDL 파일 자체는 언어 중립적이지만, 이를 통해 생성된 코드를 시스템 서비스에 등록하고 관리하는 프레임워크 로직은 Java로 구현된 경우가 많습니다.
• 레거시 유지보수: AAOS의 핵심 서비스(Car Audio Service 등)를 분석하려면 Java 소스 코드를 읽고 해석할 수 있어야 합니다.
3. JNI (Java Native Interface)의 이해
Kotlin/Java로 작성된 상위 앱 계층과 C++로 작성된 하위 HAL 계층을 연결하려면 JNI라는 가교가 필요합니다.
• Kotlin에서 호출한 함수가 어떻게 C++ 라이브러리의 함수로 연결되는지 이해하려면 두 언어의 데이터 타입 매핑과 메모리 구조를 알아야 합니다.
🛠 AAOS 개발을 위한 권장 학습 로드맵
AAOS 전문가(특히 오디오 아키텍트 방향)를 목표로 하신다면 다음과 같은 비중으로 학습하시는 것을 추천합니다.
| 영역 | 주요 언어 | 핵심 키워드 |
| App / Service | Kotlin / Java | Car API, Audio Focus, Media Session |
| Framework | Java / C++ | AIDL, Binder IPC, AudioFlinger |
| HAL / Native | C++ | Audio HAL, VHAL (Vehicle HAL), JNI |
| Algorithm | C++ / MATLAB | Fixed-point math, SIMD optimization |
결론
Kotlin은 상위 비즈니스 로직을 짜기에 매우 훌륭한 언어지만, 시스템의 바닥(HAL)까지 제어하고 싶다면 C++은 피할 수 없는 산입니다. 이미 C++이나 MATLAB 등을 다뤄보셨다면, 안드로이드 특유의 Binder IPC(AIDL) 구조만 익히시면 금방 적응하실 수 있을 거예요.
'Project ES > : : AAOS' 카테고리의 다른 글
| ADB (Android Debug Bridge) (1) | 2026.04.09 |
|---|---|
| Target board에서 AAOS 소스 코드 확인? ADB를 써라! (2) | 2026.04.09 |
| [POWER] 차고 모드 (Garage Mode) (0) | 2026.03.24 |
| [POWER] 부팅 시간 관리 (0) | 2026.03.24 |
| [POWER] 전원 관리 (CarPowerManagement) (0) | 2026.03.24 |