[android] NDK 개발환경 세팅

android 2013. 9. 9. 18:04

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

1. NDK

앱을 개발할 때 보통은 SDK를 이용하여 개발을 한다. 그러나 SDK 에서 지원하지 않거나, 성능상의 이슈를 해결하기 위해서 NDK를 이용한다. NDK로 할 수 있는 것들은 어떤 것이 있을까를 알아보기 위해서 NDK에서 제공하는 것들을 알아보자.

·         libc (C library) headers

·         libm (math library) headers

·         JNI interface headers

·         libz (Zlib compression) headers

·         liblog (Android logging) header

·         OpenGL ES 1.1 and OpenGL ES 2.0 (3D graphics libraries) headers

·         libjnigraphics (Pixel buffer access) header (for Android 2.2 and above).

·         A Minimal set of headers for C++ support

·         OpenSL ES native audio libraries

·         Android native application APIS

많구나~ ㅋㅋ.  근데 이걸로 멀 할 수 있을까? 현실적인 주요 목적은 기존에 작성된  c/c++ 코드로 구현된 코드를 (java로 처리가 느린 image processing 같은것이 좋은 예) 그대로 이식할 수 있게 된다. 물론 필요에 따라서 java 로직을 c/c++으로 개발 할 수도 있다. 

 

2. NDK 설치하기

설치전 필요한것들  (자세한건 http://developer.android.com/tools/sdk/ndk/index.html#Reqs 참고 )

Android SDK  : android 1.5 SDK 이상

지원하는 운영체제 : windows XP 이상, Mac OS X 10.4.8 이상 ( x86 ), Linux ( GLibc 2.7 이상 )

필요한 개발도구 :

OS에 맞는 GNU Make 3.81 이상

최신 버전의 awk

윈도우의경우 Cygwin 1.7 이상

 

아래를 클릭해서 설치한다. ( 자신의 OS에 맞는 걸로 )  나는 window 64bit를 받았다. 

http://developer.android.com/tools/sdk/ndk/index.html

450MB 크기의 zip파일을 받아서 그냥 아무곳에 압축을 해제하면 된다. (해제하니 1GB 헐 ㅠㅠ)

 

3. Cygwin 설치 (윈도우에서)

다음으로 Windows 환경이므로 cygwin을 설치한다.

http://cygwin.com/install.html

여기서 setup.exe를 받아서 설치한다.

설치 중간에 package를 선택하는게 나오는데 아래는 꼭 선택해야 한다.

gcc-core : C compiler

gcc-g++ : C++ Compiler

make : The GNU version of the ‘make’ utility

 

(본인은 make를 선택안 했다가 나중에 구글링을 좀 했었다. )

그러면 dependency가 걸려 있는 다른 모듈들도 같이 설치된다. ( maven 처럼 좋네~ )

 

Cygwin을 실행한 후에 path를 설정하면 편하다.

vi .bashrc

export PATH=$PATH: {여기에 ndk-build경로 추가}

alias ll=’ls –all’

 

 

4. sample build test

Cywin을 실행한 뒤에 NDK sample 폴더로 이동한뒤에 hello-jni로 이동한다.

그러면 jni 폴더에 2개의 파일이 존재한다.

$ tree jni

jni

├── Android.mk

└── hello-jni.c

 

여기서 ndk-build를 실행하면 libhello-jni.so 파일이 생성된다.  생성후 /libs/armeabi/libhello-jni.so에 설치했다고 나온다.

$ ndk-build

Gdbserver      : [arm-linux-androideabi-4.6] libs/armeabi/gdbserver

Gdbsetup       : libs/armeabi/gdb.setup

Install        : libhello-jni.so => libs/armeabi/libhello-jni.so

 

참고로 .so 파일은 apache의 모듈로 자주 보던 형식이었는데 linux share object 파일으로 윈도우의  dll 과 비슷한 것으로 생각하면 된다. Linexstatic library .a 파일이고, shared-library.so 파일이므로 .so 로 빌드해야 한다. Android .so 파일만 로딩할 수 있다.

 

 

 



: