D8은 안드로이드의 차세대 덱서(Dexer)로, Java 바이트코드를 Android 기기에서 실행 가능한 DEX 코드로 변환하는 역할을 합니다. 이 과정에서 오류가 발생했다는 것은 코드 변환 중 심각한 충돌이 일어났음을 의미합니다.

1. Java 8 컴파일 옵션 및 디슈가링(Desugaring) 설정
가장 흔한 원인 중 하나는 프로젝트가 Java 8 이상의 기능을 사용하고 있음에도 불구하고, Gradle 설정에서 이를 명시적으로 지원하지 않을 때 발생합니다. 람다 식(Lambda expressions)이나 메서드 참조 같은 기능을 사용하려면 '디슈가링' 과정이 원활해야 합니다.
해결 방법: build.gradle (Module: app) 파일의 android 블록 안에 다음 설정을 추가하거나 확인하세요.
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
}
이 설정은 컴파일러에게 Java 8 호환성을 강제하여 D8 엔진이 바이트코드를 변환할 때 기준을 잡아주는 역할을 합니다.
2. 의존성 충돌 및 중복 클래스 제거
두 개 이상의 라이브러리가 동일한 클래스 파일을 포함하고 있을 때 D8은 어떤 것을 선택해야 할지 판단하지 못하고 오류를 뱉습니다. 주로 com.google.guava, androidx 관련 라이브러리에서 발생합니다.
해결 방법: 터미널에서 다음 명령어를 입력하여 의존성 트리를 확인해 보세요.
./gradlew :app:dependencies
만약 중복된 라이브러리를 발견했다면, 다음과 같이 특정 모듈을 제외(Exclude) 처리해야 합니다.
dependencies {
implementation('some-library') {
exclude group: 'com.android.support', module: 'support-v4'
}
}
3. MultiDex 활성화
안드로이드 앱의 메서드 개수가 65,536개(64K)를 초과하면 단일 DEX 파일에 담을 수 없게 됩니다. 최근에는 라이브러리의 크기가 커짐에 따라 이 한계치에 쉽게 도달하며, 이때 D8 오류가 발생할 수 있습니다.
해결 방법: defaultConfig 내에 MultiDex를 활성화해 주세요.
android {
defaultConfig {
...
multiDexEnabled true
}
}
dependencies {
implementation 'androidx.multidex:multidex:2.0.1'
}
참고로, minSdkVersion이 21(Android 5.0) 이상이라면 MultiDex가 기본적으로 지원되지만, 설정에 명시해 주는 것이 빌드 안정성 측면에서 유리합니다.
4. 캐시 삭제 및 클린 빌드 (가장 빠른 해결책)
가끔은 설정의 문제가 아니라 안드로이드 스튜디오의 빌드 캐시가 꼬여서 발생하는 유령 같은 오류일 때가 있습니다. 설정을 고쳤는데도 계속 에러가 난다면 캐시를 완전히 비워야 합니다.
- Step 1: Build -> Clean Project 실행
- Step 2: File -> Invalidate Caches / Restart 실행
- Step 3: 프로젝트 루트 폴더의
.gradle및.idea폴더 수동 삭제 (선택 사항)
위 과정을 거치면 D8 엔진이 깨끗한 상태에서 다시 인덱싱을 시작하므로 상당수의 일시적인 오류가 해결됩니다.
💡 핵심 요약 정리
- Java 8 호환성: compileOptions에서 Java 1.8 버전을 명시했는지 확인하세요.
- 중복 라이브러리:
./gradlew dependencies로 중복 클래스를 찾아 제외(exclude)하세요. - MultiDex: 메서드 수 제한을 넘었을 수 있으니
multiDexEnabled true를 설정하세요. - 캐시 초기화: 해결되지 않는다면
Invalidate Caches를 통해 빌드 환경을 초기화하세요.
Execution failed for D8 오류는 결국 "코드를 DEX로 변환하는 규칙"이 어긋났을 때 발생합니다. 위 단계별 가이드를 차근차근 따라 하시면 대부분의 빌드 오류를 극복하실 수 있을 것입니다. 즐거운 개발 되시길 바랍니다!
'오류 > 안드로이드' 카테고리의 다른 글
| SSLHandshakeException 오류 해결 방법 (0) | 2026.02.14 |
|---|---|
| Read timed out 오류 해결 방법 [안드로이드 스튜디오] (0) | 2026.01.30 |
| Could not find method compile() 오류 해결 방법 [안드로이드 스튜디오] (0) | 2026.01.28 |
| Program type already present 오류 해결 방법 (안드로이드 스튜디오) (0) | 2026.01.11 |
| Cannot choose between the following variants 오류 해결 방법 (안드로이드 스튜디오) (0) | 2026.01.10 |