TroubleShooting/android

[Android] Sync Gradle Failed - ModelCache.safeGet(androidProjectResult.androidProject ::getNdkVersion, "") must not be null

나인에스 2022. 4. 23. 11:54

1. 증상

gradle sync에 실패!!

Sync Gradle 실행시 위와 같은 error가 발생하면서 빌드가 진행되지 않는 현상입니다.

"Sync Gradle Failed - ModelCache.safeGet(androidProjectResult.androidProject::getNdkVersion, "") must not be null"

 

2. 원인

최근 Android Studio의 버전을 Bumblebee 로 업데이트 한 후 발생한 error case 입니다.

최근 android studio에서는 빌드에 사용할 NDK의 버전을 명시적으로 선언 하도록 강제 하고 있습니다. 이는 당연하게도 여러 버전의 NDK중 현재 내가 빌드하려고 하는 프로젝트에서 사용될 NDK를 명시적으로 정의해서 원치 않는 결과를 사전에 방지 하는데에 목적을 두고 있습니다.

 

3. 해결 방법

해결방법은 아래와 같이 여러가지가 있는데 아래 방법중 편한 방법을 사용하면 되지만, 개인 프로젝트가 아닌 경우라면(소스 코드 트리를 여러사람이 같이 사용하는 group/team project) 모든 개발자들의 환경을 동일하게 맞출수 있도록 gradle파일에 NDK version을 명시하는 방법을 추천해 드립니다.

  • build.gradle에 NDK version을 명시하는 방법
    • 아래 그림과 같이 build.gradle파일에 사용할 NDK 버전을 명시한다. (물론 해당 버전의 NDK가 설치되어 있어야 겠죠?)

NDK version 명시

  • Android Studio의 Project Structure 설정에 NDK version을 명시하는 방법.
    • Menu -> File -> Project Structure -> Modules -> NDK Version 에 사용할 NDK 버전 선택

Android Studio의  Project Structure에 NDK 버전을 명시

  • build.gradle에 NDK가 설치된 Path를 명시하는 방법
    • 아래 그림과 같이 build.gradle파일에 NDK가 설치된 path를 명시한다.

NDK가 설치된 path 명시