소개

벌써 네번째 정리 입니다.

늦은 감이 있지만 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 개발 순서

  1. 작성된 native srouces를 $PROJECT/jni/ 에 둡니다.

    여기서 $PROJECT는 여러분이 작성한 안드로이드 프로젝트가 위치 하고 있는 주소 입니다.

  2. $PROJECT/jni/폴더에 Android.mk라는 파일을 만들고, NDK build를 위한 설정내용을 적어 줍니다. (이 부분은 추후 포스팅에서 설명하겠습니다.)
  3. $NDK/ndk-build 명령어를 통해 native codes를 빌드합니다.

    여기서 $NDK는 여러분이 설치한 NDK의 최상이 경로를 의미합니다.

실습을 위한 포스팅을 NDK First step - 1와  NDK First step - 2에 있으니 참고 하세요.


포스팅을 마치며

다음에는 makefile의 일부분인 Android.mk를 작성하는 방법을 알아보도록 하겠습니다.