Project ES/: : AAOS

Android Automotive OS와 Kotlin

Jay.P Morgan 2026. 3. 25. 14:21

 

  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) 구조만 익히시면 금방 적응하실 수 있을 거예요.