NDK 설정과 NDK 버전에 관련된 오류 대처 방법

2020. 12. 8. 09:48Programming/Android

반응형

Android Studio에서 NDK 설정에 대해 알아보자

기본적인 설정은 Configure the NDK for the Android Gradle plugin 문서를 참조하여 설정하면 된다. 위 링크에서는 SDK Manager를 통해서 NDK를 설치하면 된다. 특정 버전의 NDK를 적용하고싶은 경우, 파일을 다운받아 압축을 푼 뒤 File > Project Structure > Project에서 경로를 지정해주거나 build.gradle파일에 ndkPath를 지정해주면 된다.

android {
  ndkPath "/Users/ndkPath/ndk21"  // Point to your own NDK
}

아마 여기까지 읽었다면 엥, 링크타면 다 나와있는 내용을 굳이 글로 작성할 필요가 있나? 라는 생각이 드는 사람도 있을거고, 정작 이 내용을 검색해서 여기까지 왔을 것 같지도 않다. 위의 내용을 설명한 이유는 기록하고자하는 내용은 다음의 내용인데, 너무 짧아서 NDK 설정 방법에 대한 기본적인 내용을 기록해봤다.

형상관리툴에서 Android 소스코드를 받았는데, NDK 버전과 관련된 오류가 난다

NDK not configured. Download it with SDK manager.
Preferred NDK version is '[특정 NDK 버전]'
No version of NDK matched the requested version [특정 NDK 버전].
Versions available locally: [설치되어있는 NDK 버전들]

브랜치 경로에서 다운받은 안드로이드 소스를 빌드할 때, 위와 같은 에러가 출력되는 경우가 있다. 누군가 NDK 버전과 관련된 개인 설정파일을 소스 코드에 추가해서 커밋하는 바람에 출력되는 에러인데, 대충 해석해보면 이 프로젝트는 NDK 특정 버전으로 설치되어있는데, 네 컴퓨터에 설치되어있는 버전은 이런 녀석들밖에 없는데?라는 의미이다. 이 경우에는 .idea, .gradle, local.properties를 제거한 뒤 다시 Gradle Sync를 하도록 하자.

File > Project Structure > Project에서 NDK 경로를 지정해주는 것으로도 가능하다. 이 경우 local.properties 등의 개인 설정이 재구성되기때문에, 위의 방법과 크게 다르지 않다.

다른 방법으로는 build.gradle에 ndkVersion을 지정해줌으로써 해결 가능하다.

android {
    compileSdkVersion 29


    defaultConfig {
        // ...
    }

    buildTypes {
        // ...
    }

    externalNativeBuild {
        // ...
    }

    ndkVersion "[설치되어있는 NDK 버전]" // ⬅️ 이 부분이다.
}

에러가 발생했을 때 [설치되어있는 NDK 버전]에 표시되어있던 버전들 중 하나를, build.gradle에 저장해줌으로써 문제를 해결할 수도 있다. 물론 이 경우에는 이 프로젝트의 소스코드를 사용하는 모든 사람들에게 빅엿을 먹일 수 있으니, NDK 버전을 특정 버전으로 고정해야하는 경우가 아니라면, 이 방법은 최대한 피하도록 하자.

반응형