Cygwin으로 JNI NDK 빌드 및 hello world 소스 빌드 ■ 안드로이드 프로그래밍

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가 찍힐 겁니다.




덧글

  • 최기동 2015/07/21 14:54 # 삭제 답글

    여기대로 하니 100% 되네요 감사 합니다.
댓글 입력 영역