티스토리 뷰

이클립스로 작성된 프로젝트를 안드로이드 스튜디오로 import하는것은 Android Studio가 알아서 해주기 때문에 매우 쉽습니다. 하지만 NDK 프로젝트라면 상황이 조금 다릅니다. 
실제로 프로젝트를 import 하는 중 필요한 사항들과 제가 겪었던 문제점들을 정리합니다.

NDK 다운로드 및 설정방법

  1. 먼저 안드로이드에서 제공하는 NDK 패키지를 다운받아서 적당한 곳에 압축해제합니다. 
    (단, 경로에 공백(SPACE)이 있으면 안됩니다.)
  2. 프로젝트에 NDK 경로를 설정해줍니다. 
    android studio에서 프로젝트를 우클릭하여 Open Module Setting -> SDK Location -> Android NDK location 항목에서 ndk 경로를 선택해주면 됩니다. 
    혹은, 프로젝트의 local.properties 파일에 다음과 같이 ndk.dir 항목에 경로를 작성합니다.
ndk.dir=D\:\\sample\\path\\ndk
sdk.dir=D\:\\sample\\path\\sdk

undefined reference to `__android_log_print’오류

당연히 c 파일에는 android/log.h를 include해야합니다. 만약 그래도 오류가 난다면 다음을 참고하시기 바랍니다.

  1. 앱의 build.gradle 파일에 다음과 같이 ndk에 ldLibs "log"를 추가합니다.
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"

defaultConfig {
applicationId "com.test.testproj"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0.0"

ndk {
moduleName "testmodule"
ldLibs "log"
}
}
...
}
  1. Android.mk 파일에 다음과 같이 LOCAL_LDLIBS 값을 추가합니다.
...
include $(CLEAR_VARS)
...
LOCAL_LDLIBS := -llog
...
include $(BUILD_SHARED_LIBRARY)

format not a string literal and no format arguments [-Werror=format-security] 오류

  1. 윈도우 탐색기에서 ndk경로/build/core/default-build-commands.mk 파일을 찾아 텍스트 편집기로 열어줍니다.

  2. -Werror=format-security 구문을 검색하여 지워줍니다. 제가 사용한 버전에서는 59 line에 있었습니다.

# This flag are used to provide compiler protection against format
# string vulnerabilities.
TARGET_FORMAT_STRING_CFLAGS := -Wformat -Werror=format-security


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday