오류/안드로이드

안드로이드 스튜디오 - Execution failed for VariantAttr 오류 해결 방법

낄리 2026. 1. 8. 18:10

 

 

안녕하세요! 안드로이드 앱 개발을 하다 보면 빌드 과정에서 예상치 못한 오류를 마주하게 됩니다.

그중에서도 "Execution failed for task... VariantAttr" 혹은 "Could not resolve all artifacts for configuration ':app:debugCompileClasspath'"와 같은 메시지는 개발자를 매우 당혹스럽게 만들죠.

이 오류는 주로 안드로이드 스튜디오 버전 업데이트, Gradle 플러그인 버전 변경, 혹은 특정 외부 라이브러리를 추가했을 때 발생합니다. 단순한 오타 문제가 아니라 빌드 시스템 간의 호환성(Compatibility) 문제인 경우가 많습니다. 오늘은 이 오류의 근본 원인과 확실한 해결 방법 4가지를 전문가의 시선에서 정리해 드리겠습니다.

 


1. VariantAttr 오류의 근본적인 발생 원인

이 오류의 핵심 키워드는 'Variant(변체)''Attribute(속성)'입니다. Gradle 빌드 시스템은 프로젝트를 빌드할 때 'debug', 'release'와 같은 다양한 빌드 변체(Build Variants)를 생성합니다. 이때 발생하는 오류의 주요 원인은 다음과 같습니다.

  • Gradle 플러그인 호환성 문제: 사용 중인 Android Gradle Plugin(AGP) 버전과 Gradle 자체의 버전이 맞지 않을 때 발생합니다.
  • 라이브러리 의존성 충돌: 특정 라이브러리가 요구하는 'Build Attribute'를 현재 프로젝트의 설정이 충족하지 못할 때 나타납니다.
  • 캐시 데이터 오염: 이전 빌드 기록이 로컬 캐시에 남아 있어, 새로운 설정과 충돌을 일으키는 경우입니다.
  • 잘못된 빌드 타입 설정: build.gradle 파일 내에서 buildTypesproductFlavors 설정이 불완전할 때 발생합니다.

2. 해결 방법 1: Gradle 플러그인 및 JDK 버전 최적화

가장 높은 빈도로 문제를 해결하는 방법은 프로젝트의 핵심 빌드 도구 버전을 일치시키는 것입니다.

① AGP와 Gradle 버전 체크

안드로이드 프로젝트의 build.gradle (Project) 파일에서 클래스패스(classpath) 버전을 확인하고, 최신 안정화 버전으로 업데이트하세요. 또한 gradle-wrapper.properties 파일에 정의된 Gradle 버전과 서로 호환되는지 대조해 보아야 합니다.

② JDK 버전 설정 확인

최신 안드로이드 스튜디오(Arctic Fox 버전 이후)는 JDK 11 또는 17 이상을 필수로 요구하는 경우가 많습니다. [Settings] -> [Build, Execution, Deployment] -> [Build Tools] -> [Gradle] 메뉴에서 'Gradle JDK'가 프로젝트 수준에 맞게 설정되어 있는지 확인하세요.


3. 해결 방법 2: 빌드 캐시 및 데이터 완전 초기화

설정상 문제가 없는데도 오류가 지속된다면, IDE의 '기억'을 지워야 합니다. 단순히 Clean Project를 하는 것보다 더 강력한 방법이 필요합니다.

  1. Invalidate Caches: 상단 메뉴 File > Invalidate Caches...를 선택하고 모든 항목을 체크한 뒤 재시작합니다.
  2. 로컬 디렉토리 삭제: 프로젝트 폴더 내의 .gradle, .idea, build 폴더를 수동으로 삭제한 뒤 프로젝트를 다시 엽니다.
  3. 명령어 실행: 터미널에서 다음 명령어를 입력하여 깨끗한 상태에서 의존성을 다시 내려받습니다.
./gradlew clean build --refresh-dependencies

4. 해결 방법 3: missingDimensionStrategy 설정 (심화)

특정 라이브러리가 flavorDimensions를 사용하는데, 내 앱 프로젝트에는 해당 디멘션이 정의되어 있지 않을 때 VariantAttr 관련 오류가 빈번하게 발생합니다. 이럴 때는 missingDimensionStrategy를 사용하여 기본값을 지정해 줄 수 있습니다.

app/build.gradle 파일의 defaultConfig 블록 내에 다음과 같은 코드를 추가해 보세요.


android {
    defaultConfig {
        ...
        // 라이브러리에서 요구하는 디멘션이 없을 경우 'minApi' 등의 기본값을 선택하도록 강제
        missingDimensionStrategy 'minApi', 'dev'
    }
}

이 설정은 외부 라이브러리와 내 프로젝트 간의 빌드 속성 차이를 메워주는 가교 역할을 하여 의존성 확인(Dependency Resolution) 실패를 막아줍니다.


5. 해결 방법 4: Jetifier 및 가독성 높은 로그 확인

오래된 라이브러리(Support Library)를 사용 중이라면 AndroidX와의 호환성을 위해 Jetifier 기능을 활성화해야 합니다.

gradle.properties 파일에 다음 두 줄이 포함되어 있는지 확인하세요.


android.useAndroidX=true
android.enableJetifier=true

만약 여전히 원인을 알 수 없다면, 빌드 시 로그 레벨을 높여 상세한 원인을 파악해야 합니다. --stacktrace 또는 --info 옵션을 붙여 빌드를 실행하면 어느 부분에서 VariantAttr 매칭이 실패했는지 구체적인 파일명과 라인수를 확인할 수 있습니다.


핵심 요약 및 체크리스트

Execution failed for VariantAttr 오류 해결을 위한 핵심 프로세스를 요약해 드립니다.

단계 확인 항목 비고
1 JDK 버전 프로젝트 수준과 Gradle JDK 버전 일치 여부
2 Gradle Sync Invalidate Caches 및 캐시 디렉토리 수동 삭제
3 Dimension 전략 missingDimensionStrategy 코드 추가 검토
4 라이브러리 버전 최신 AGP(Android Gradle Plugin)와 호환성 체크

글을 마치며: 빌드 오류는 개발 시간을 잡아먹는 주범이지만, 원인을 정확히 파악하면 시스템 구조를 깊이 이해하는 계기가 되기도 합니다. 위에서 언급한 순서대로 차근차근 점검해 보신다면 대부분의 빌드 문제는 해결될 것입니다.

이 글이 도움이 되셨다면 공감 부탁드리며, 추가적인 오류 메시지가 있다면 댓글로 남겨주세요. 함께 고민해 보겠습니다!