cygwin 으로 안드로이드 JNI 소스 NDK 빌드를 해보겠습니다.






1. www.cygwin.com 에서 cygwin을 다운 받습니다.
2. 설치 시 Devel 부분은 전체 install 해야 합니다. (상당히 오래 걸립니다. )
3. 이제 cygwin에서 사용할 ndk를 다운 받습니다. (http://developer.android.com/tools/sdk/ndk/index.html)
4. ndk는 경로 편한곳으로 압축해제 하시면 됩니다. (저는 c:\ 에 풀었습니다.)
//환경변수 등록 필요 (path) 2014-10-20 update
5. 이제 cygwin 설정을 해야 하는데, cygwin\administrator(사용자 이름) 폴더에 가시면 .bash_profile 파일이 있습니다.
에디터로 열어주세요.
// 버전이 바껴서 그런지 저 위의 경로가 없드라고요. cygwin\home\사용자이름
6. 아래와 같은 부분에 ndk와 jdk PATH를 넣습니다. (/cygdrive/c/ 가 c드라이브 입니다.)
# Set MANPATH so it includes users' private man if it exists
# if [ -d "${HOME}/man" ]; then
# MANPATH="${HOME}/man:${MANPATH}"
PATH=$HOME/bin:$PATH:/cygdrive/c/android-ndk-r9d-windows-x86/android-ndk-r9d
PATH=$HOME/bin:$PATH:/cygdrive/c/Java/jdk1.7.0_21
# fi
7. cygwin terminal을 실행해서 ndk-build와 java를 치도록 합니다.
(기존 terminal 실행 상태로 6번을 수정하셨다면 재 실행 합니다.)

% 이제 cygwin 설정이 끝났습니다. 간단한 hello world 빌드를 해볼게요.
8. eclipse로 새 프로젝트를 생성합니다.

9. TestJniHelloworld.java 파일에 아래와 같이 작성 합니다.
10. 그리고 cygwin으로 해당 프로젝트 경로 +src 폴더에 진입합니다.(드라이브 이동은 cd d: )
11. workspace/TestJniHelloworld/src 에서 아래 명령어를 호출 합니다.
javah com.example.testjnihelloworld.TestJniHelloWorld
src경로에서 호출이기에 패키지 명까지 다 적으셔야 합니다.
그러면 com_example_testjnihelloworld_TestJniHelloWorld.h 파일이 생성됩니다.
12. 위 헤더파일을 jni폴더에 넣으시고 동일 이름의 c파일을 생성합니다.
com_example_testjnihelloworld_TestJniHelloWorld.c 내용.
#include <com_example_testjnihelloworld_TestJniHelloWorld.h>
JNIEXPORT jstring JNICALL Java_com_example_testjnihelloworld_TestJniHelloWorld_priftHello (JNIEnv *env, jobject object){
return (*env)->NewStringUTF(env, "Hello world!!!!!");
}
13. 그리고 Android.mk파일과 Application.mk 파일이 필요합니다.
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := helloworld
LOCAL_SRC_FILES := com_example_testjnihelloworld_TestJniHelloWorld.c
include $(BUILD_SHARED_LIBRARY)
---------------------------------
LOCAL_MODULE은 만들어질 .so 파일명 (helloworld.so 가 만들어짐.)
Application.mk (선택 사항)
APP_ABI := all
-------------------------
cpu종류를 선택적으로 생성할 수 있습니다. all로 하시면 다 생성한다는 뜻.
14. 그럼 이제 준비가 끝났습니다.
cygwin으로 다시 프로젝트 경로로 가시고
ndk-build -B를 입력합니다.

그럼 프로젝트에 libs 폴더에 libhelloworld.so 파일들이 만들어지는데 이제 끝났습니다.
15. 안드로이드 Run을 합니다.
로그에 Hello world가 찍힐 겁니다.

덧글