프로그래밍/Android

안드로이드 NDK 시작

이재만박사 2017. 11. 30. 13:28

C++ 로 모바일 애플리케이션을 개발할 때, 기존의 C++ 라이브러리를 재활용하고 싶거나 부분적인 성능 향상을 위해 네이티브 기능을 사용하고 싶을 때는 주로 안드로이드 NDK(Native Development Kit)를 이용한다


초기에 NDK는 바이오닉(Bionic) 라이브러리를 기반으로 했다

이 라이브러리는 구글에서 안드로이드용으로 개발한 BSD 표준 C 라이브러리(libc)의 파생 버전이다


바이오닉의 주요 목표는 다음과 같다


 - 라이선스 : 원래의 GNU C 라이브러리(glibc)는 GPL 라이선스를 가지고, 바이오닉은 BSD 라이선스를 가진다

 - 크기 : 바이오닉은 GNU C 라이브러리에 비해 크기면에서 훨씬 작다

 - 속도 : 바이오닉은 상대적으로 낮은 클록 주파수를 가진 모바일 CPU용으로 설계됐다 

           일례로, 이 라이브러리는 pthread 의 커스텀 구현을 가지고 있다


바이오닉에는 RTTI나 C++ 예외 처리 지원 등 완전한 libc 구현에 속하는 많은 중요한 기능들이 빠져 있다

하지만 NDK는 이런 기능들을 구현하는 다른 C++ 헬퍼 런타임을 가진 몇 가지 라이브러리를 제공한다

GAbi++ 런타임, STLport 런타임, GNU 표준 C++ 라이브러리가 그 라이브러리들이다

기본적인 POSIX 기능 외에 바이오닉은 로깅(logging)과 같은 안드로이드의 고유 메커니즘을 지원한다


NDK는 기존 C와 C++의 훌륭한 유산을 재사용하는 상당히 효과적인 방법이다