티스토리 뷰

프로젝트를 빌드 하다 보면 Execution failed for task ':app:transformClassesWithDexForDebug'에러가 발생 될 때가 있습니다.

위 오류는 많은 원인에서 발생 하게 되는데 해당 원인 및 해결방안은 아래와 같습니다.


원인 1 :

중복된 클래스 파일 이름이 사용된 경우

해결방법 :

여러 라이브러리를 사용 하는 경우 종종 같은 클래스 파일이 사용 되는 경우 가 있습니다. 이럴때 중복된 클래스 파일 이름이 없도록 클래스 파일 명을 확인 해 주어야 합니다.


원인 2 :

캐시 메모리가 부족한 경우

해결방법 :

장시간 개발을 하다보면 Android Studio 내 캐시메모리가 지속적으로 쌓여 메모리가 부족할 때 해당 에러가 발생 될 수 있습니다.

Android Studio 상단 메뉴바에서 [File] - [Invalidate caches / Restart] - [Invalidate and Restart] 선택 후 캐시를 정리 해주시면 됩니다.


원인 3 :

내부 빌드/컴파일 진행중 꼬인 경우

해결방법 :

빌드/컴파일 중에 프로젝트가 꼬일 수 있습니다. 이럴때는 다시 빌드를 해주어야 합니다.

Android Studio 상단 메뉴바에서 [Build] - [Clean Project]로 프로젝트를 클린 한 후에  [Build] - [Rebuild Project]로 프로젝트를 다시 빌드 해주면 됩니다.


원인 4 :

시스템 자체에 메모리가 부족한 경우

해결방법 :

Android Studio 메모리가 아닌 PC 자체에 메모리가​ 부족 한 경우에도 해당 오류가 발생 될 수 있습니다.

작업 관리자를 열어 리소스가 많이 사용 하고 있는 응용 프로그램이나 서비스를 중지 해 주면 됩니다.

 

원인 5 :

프로젝트 내 메소드 개수가 65K를 초과한 경우 

해결방법 :

이 오류에 가장 많은 원인이 바로 최대 메소드 추가 입니다. 개발시에 여러개의 라이브러리를 사용 하는 경우 사용된 메소드의 개수가 약 65,000개 넘는 경우 에러가 발생 되게 됩니다.

이럴 경우  App의 build.gradle(Module:app)에서 아래와 같이 추가 해주면 됩니다.

1.defaultConfig 안에 multiDexEnabled true 추가

2.dexOptions{ javaMaxHeapSize = "4g" } 추가

3.dependencies 안에 compile 'com.android.support:multidex:1.0.0' 추가


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
build.gradle(Module:app)
android {
             ...
defaultConfig {
                   ...
multiDexEnabled true 
}
      ...
  dexOptions{
javaMaxHeapSize = "4g" 
}
}
dependencies {
...
compile 'com.android.support:multidex:1.0.0' 
}
cs


Execution failed for task ':app:transformClassesWithDexForDebug' 에러는 대부분 위 해결방법으로 해결 하실 수 있습니다.

저같은 경우에는 이미 원인5에 해결방법처럼 되어 있는 상태일 때 원인2,4의 해결방법으로 수정 후 정상적으로 빌드가 되었습니다.

댓글