NDK(Native Development Kit)란?
안드로이드에서 C/C++ 코드를 사용할 수 있게 해주는 일련의 도구 모음으로, 네이티브 액티비티를 관리하고 센서 및 터치 입력과 같은 실제 디바이스의 컴포넌트(구성요소)에 액새스하는 데에 사용할 플랫폼 라이브러리를 제공한다.
NDK의 쓰임
앱을 개발할 때 기기의 성능을 최대한 활용하여 짧은 지연 시간을 구현해야하거나, 게임 또는 물리엔진이 적용된 컴퓨팅 집약적 애플리케이션을 실행해야하는 상황, 혹은 본인 또는 다른 개발자의 C/C++ 라이브러리를 재사용하는 경우 사용된다.
NDK를 사용하려면 다음과 같은 도구가 선택적으로 설치되어 있어야한다.
- CMake: 네이티브 라이브러리를 빌드하는 외부 빌드 도구. (ndk-build만 사용하려는 경우에는 필요없다.)
- LLDB: Android 스튜디오에서 네이티브 코드를 디버깅하는 데 사용한다.
NDK 상세 설명
안드로이드에서 C/C++ 코드를 사용해야 할 때는 이전 포스트에서 다뤘던 JNI를 통해 사용 및 개발을 할 수 있는데, 이때 NDK가 JNI를 사용하기 위해 구성된 키트라고 설명하면 이해가 쉽다. 요즘에는 C언어를 사용해 개발하는 일이 많지는 않지만, 안드로이드는 대부분 C로 제작된 리눅스 기반이기 때문에 C로 작성된 라이브러리를 사용하는 것이 당연하다.
NDK 장점
안드로이드 애플리케이션을 개발할 때, 자바로 만든 애플리케이션에서 일정 부분을 네이티브 코드로 미리 작성된 라이브러리를 불러와 개발 시간이 단축된다. 또한 시스템 라이브러리를 직접 Include 하여 사용할 수 있기 때문에 안드로이드 SDK만으로는 구현하기 힘든 부분 들을 보완해준다.
ex) Opengl 핵심 코드는 전부 NDK로 개발되며 어플리케이션 부분만 자바로 호출되는 형태가 많음.
*SDK(Software Development Kit, SDK): 하드웨어 플랫폼, 운영체제, 프로그래밍 언어 제작사가 제공하는 툴.
참고 자료
'Android > 필기' 카테고리의 다른 글
Android OS 부팅 순서와 자료 구조 (0) | 2023.03.16 |
---|---|
JNI(Java Native Interface) 개요 및 사용법 (0) | 2023.03.11 |
안드로이드 - JAVA, Kotlin (0) | 2023.03.11 |
디컴파일의 개요, 원리 및 이유 (+Apktool) (0) | 2023.03.11 |
안드로이드의 개요, 4대 구성 요소(+240720 수정) (0) | 2023.03.11 |