안드로이드는 다양한 기능을 제공하기 위해 여러 계층으로 구성된 소프트웨어 스택이다. 그중 Native Library(네이티브 라이브러리)는 C/C++로 작성된 시스템 라이브러리로, 고성능 연산, 그래픽 처리, 보안, 데이터베이스 관리 등 핵심 기능을 담당한다.
Android의 전체적인 구조를 보면, Native Library는 Android Runtime과 함께 중간 계층에 위치한다.
1. 리눅스 커널 (Linux Kernel)
2. HAL (Hardware Abstraction Layer)
3. Native Library + Android Runtime
4. Android Framework (Java API Framework)
5. Apps (애플리케이션 레이어)
즉, 네이티브 라이브러리는 Android Runtime과 함께 Android의 핵심 기능을 담당하는 계층이다.
Android 애플리케이션은 일반적으로 Java/Kotlin으로 개발되지만, 성능 최적화를 위해 네이티브 코드(C/C++)가 필요할 때가 있다.
안드로이드에서 제공하는 대표적인 네이티브 라이브러리는 다음과 같다.
네이티브 라이브러리 | 역할 |
---|---|
Bionic | Android에서 사용하는 C 표준 라이브러리 (glibc 대체) |
OpenGL ES | 2D/3D 그래픽 처리 (게임, UI 애니메이션) |
SQLite | 경량 데이터베이스 (로컬 데이터 저장) |
WebKit | 웹 브라우저 렌더링 엔진 |
SSL (Secure Sockets Layer) | 보안 통신을 위한 암호화 라이브러리 |
Media Framework | 오디오 및 비디오 코덱 지원 |
하드웨어 제어 가능: Android SDK로 접근할 수 없는 하드웨어 기능을 사용할 수 있음
멀티플랫폼 지원: 여러 운영체제에서 사용되는 네이티브 라이브러리를 쉽게 적용 가능
개발 난이도 증가: Java/Kotlin보다 코드가 복잡하고, JNI를 사용해야 함
디버깅 어려움: 네이티브 코드의 버그를 찾기 어렵고, 메모리 관리 이슈가 발생할 수 있음
APK 크기 증가: 여러 아키텍처(ARM, x86 등)를 지원하려면 여러 개의 네이티브 라이브러리를 포함해야 함
시스템 앱은 운영체제에 기본 내장된 앱으로, 사용자가 삭제할 수 없으며 기기 관리, 보안, 핵심 기능을 담당한다.
대표적으로 설정, 전화, 메시지, Google Play 서비스 등이 있다. 일반 앱보다 높은 권한을 가지며, 시스템 파티션에 저장된다.