소개
벌써 네번째 정리 입니다.
늦은
감이 있지만 NDK가 뭐인고? 라는 것을 정리 하지 않았군요. NDK를 이야기 하기 전에 JNI를 알고 계시나요? JNI는 C나
C++로 작성된 머신코드(Native machine code)를 Java 프로그램이 사용할 수 있도록 해주는 인터페이스(interface)입니다.
안드로이드 프로그래밍을 할때는 자바언어로 구현하죠.. 자, 그럼 답이 나왔네요. NDK는 안드로이드 응용 프로그램을 만들때 C/C++로 작성된 머신코드를 안드로이드 프로그램에서 사용할 수 있도록 해주는 도구입니다.
저는 개인적으로 자바와 C/C++쪽을 모두 잘 해야 한다고 생각 하기 때문에 NDK를 꼭 알고 싶었지요.. JNI를 기본적으로 잘 알고 있다면 NDK는 크게 어렵지 않은 것 같습니다.
Android NDK를 이용하면 좋은 경우
빠른 처리를 요구하는 루틴을 작성할때 좋습니다.
C/C++이 자바 보다 빠른건 당연합니다. 그러니 빠른 처리를 요구하는 루틴을 C/C++로 작성하고 그것을 호출하면 성능 향상을 꾀할 수 있죠
하드웨어 제어 할때 필요합니다.
안드로이드의 코어는 리눅스 입니다. 하드웨어를 직접 접근 하거나 디바이스 드라이버를 개발 할때는 당연히 C로 개발해야 하죠. 자바에서는 그렇게 구현된 코드를 이용해야 합니다.
기존의 C/C++프로그램의 재사용할 수 있습니다.
기조에 C/C++로 만들어진 좋은 소스가 있다면 그것을 굳이 자바로 다시 만들기 위해 많은 노력이 필요합니다. 이때 NDK를 사용하면 편리 하겠죠.
Android NDK를 이용하면 좋지 않은 경우
프로그램 구조가 복잡해 집니다.
프로그램을 설계할때, 프로젝트를 진행할때, 나중에 유지 보수 할때, 복잡한 구조때문에 코드분석하기가 힘들 수 있습니다.
Android NDK 개발 순서
작성된 native srouces를 $PROJECT/jni/ 에 둡니다.
여기서 $PROJECT는 여러분이 작성한 안드로이드 프로젝트가 위치 하고 있는 주소 입니다.
- $PROJECT/jni/폴더에 Android.mk라는 파일을 만들고, NDK build를 위한 설정내용을 적어 줍니다. (이 부분은 추후 포스팅에서 설명하겠습니다.)
$NDK/ndk-build 명령어를 통해 native codes를 빌드합니다.
여기서 $NDK는 여러분이 설치한 NDK의 최상이 경로를 의미합니다.
실습을 위한 포스팅을 NDK First step - 1와 NDK First step - 2에 있으니 참고 하세요.
포스팅을 마치며
다음에는 makefile의 일부분인 Android.mk를 작성하는 방법을 알아보도록 하겠습니다.