Sunday, March 3, 2013

Android NDK-Build 문제

최근에 NDK로 앱을 만들 일이 생겨서 cygwin 인스톨 하고 ndk-build 돌리려니 참 설정하는데에 머리 썩이고 골치아픈 문제들이 몇가지 발견되서 여기에 적어본다.

1. cygwin 설치시 주의사항

cygwin을 인스톨 할 시 패키지를 추가적으로 인스톨 시킬 수 있는 항목들이 나온다. 반드시 makevim을 설치해 주도록 하자.



윗 스샷을 보면 make가 Reinstall이라고 되어있는데 필자의 경우 이미 make 패키지가 설치되어 있어서 저렇게 표시되는 것이며, 독자들은 처음 인스톨시 저걸 클릭해서 Install로 바꿔주면 된다.


2. ndk-build 경로 설정법

웹상에 떠돌아 다니는 튜토리얼들을 보면 Android NDK 폴더에 있는 ndk-build의 경로를 환경 경로로 맵핑시켜주라는 말들이 많은데 그거 하지 마라. 내가 했을때는 아무리 해도 안됬고 되는 사람들도 있겠지만 그것보다 더 확실한 방법이 있다.

처음 cygwin 루트 들어가면 vim .bash_profile 키고 다음과 같이 path를 설정하면 된다:



앞에 주석 (#) 빼주는거 절대로 잊지 말고, 예를들어 NDK의 경로가 D:\android-ndk-r8d라고 있다면 위에 적은것과 같이 /cygdrive/d/android-ndk-r8d식으로 맵핑해 주면 된다.

3. Android.mk 작성시 절대적으로 주의해야 하는 사항

다음과 같은 android.mk가 있다고 치자
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_LDLIBS := -llog
LOCAL_MODULE    := ndk1
LOCAL_SRC_FILES := native.c
include $(BUILD_SHARED_LIBRARY)
문제 없이 돌아가야 정상인데, 실제로 ndk-build를 때려보면 이런 X같은 에러가 뜨는 경우가 있을수도 있다:

make: * No rule to make target '/native.c', needed by'/Users/ivan/Documents/workspace/TestNDK/obj/local/armeabi/objs/myNDK/native.o'. Stop.


이런 문제가 발생하면 android.mk에 들어가서 스페이스(공백)이 없는지 샅샅이 살펴본다. 공백이 하나라도 있으면 저 말도 안되는 에러가 발생한다 (THANKS ANDROID!)

... 

4.기타 사항

소스코드 및 ndk 경로에 공백이 포함되어 있으면 제데로 컴파일이 되지 않는다. 그래서 모든 경로에 공백이 들어가 있으면 꼭 빼주도록..

No comments:

Post a Comment