작업에 대한 Android Studio 3.0 실행 실패 : dex를 병합 할 수 없음


85

다음과 같이 빌드 실행 중에 android studio에서 빌드 오류가 발생했습니다.

오류 : ': app : transformDexArchiveWithExternalLibsDexMergerForDebug'작업에 대한 실행이 실패했습니다. java.lang.RuntimeException : java.lang.RuntimeException : com.android.builder.dexing.DexArchiveMergerException : dex를 병합 할 수 없음 "

내 app : build.gradle 파일 :

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion '26.0.2'
    defaultConfig {
        applicationId "com.pdroid.foodieschoice"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.firebaseui:firebase-ui-auth:2.3.0'

    testCompile 'junit:junit:4.12'
}
configurations.all {
    resolutionStrategy {
        force 'com.android.support:appcompat-v7:26.0.1'
        force 'com.android.support:support-compat:26.0.1'
        force 'com.android.support:support-core-ui:26.0.1'
        force 'com.android.support:support-annotations:26.0.1'
        force 'com.android.support:recyclerview-v7:26.0.1'
    }
}

apply plugin: 'com.google.gms.google-services'

모든 솔루션

편집 : 나는 firebase github 사이트를 통해 샘플을 처리하고 해결했습니다.


앱에 multiDex 지원을 포함해야합니다
Sudheesh R

프로젝트를 청소하고 재 구축해보세요
Sudheesh R

질문을 편집하고 Gradle 콘솔의 전체 출력을 게시하는 것이 좋습니다. 문제의 세부 사항은 출력의 다른 곳에 있습니다.
CommonsWare

@ CommonsWare 난 내 전체 오류를 게시했습니다. .. 단지 두 줄뿐입니다.
Anguraj

2
즉시 실행을 사용하지 않도록 설정하고 프로젝트를 정리하고 android {defaultConfig {multiDexEnabled true}}
Tara

답변:


65

Cordova 기반 프로젝트의 경우 @mkimmet이 제안한 cordova clean android대로 빌드 전에 다시 실행 하십시오 .


1
누군가이 대답을 정답으로 표시하십시오. 문제를 해결합니다.
pamekar

1
나를 위해 'cordova-plugin-androidx'및 'cordova-plugin-androidx-adapter'를 설치하면 문제가 해결되었습니다
ssz

57

이 오류는와 호환되지 않을 수있는 외부 라이브러리를 추가 할 때 발생합니다 compileSdkVersion.

추가 할 때주의하십시오 external library.

이 문제에 이틀을 보냈고 마침내 다음 단계에 따라 해결되었습니다.

  • 반드시 모든 지원 라이브러리는 동일합니다 있는지 확인하십시오 compileSdkVersion당신의 build.gradle(Module:app)내 경우가 있습니다 26.여기에 이미지 설명 입력

  • defaultConfig 카테고리에서 multiDexEnabled true를 입력 하십시오 . 이것은 중요한 부분입니다.multiDexEnabled 트루 이미지

  • 파일로 이동 | 설정 | 빌드, 실행, 배포 | 즉시 실행 을 클릭 핫 스왑 / 비활성화 즉시 실행을 사용하려고 ... 그리고 좋아 핫스왑으로 Instant Run 활성화 ... 이미지

  • Sync 당신의 프로젝트.

  • 마지막으로 빌드로 이동 | Rebuild Project를 클릭합니다 .

  • 참고 : 프로젝트 다시 빌드는 먼저 프로젝트를 정리 한 다음 빌드합니다.


도움이 돼요, 감사합니다.
수밋 Saxena는

그 말을 들으니 기쁩니다. 행복한 Androiding.
Niamatullah Bakhshi

1
@YajliMaclo 좋아요!
Niamatullah Bakhshi

47

이것을 gradle에 추가하십시오.

    android {
      defaultConfig {
        multiDexEnabled true
        }
   }

Android Studio에서 캐시를 무효화하려고 했습니까? @Anguraj
Ishan Fernando

multidex를 활성화하는 유일한 단계는 아닙니다. 최신 API 레벨에서도 필요하지 않음
OneCricketeer

25

해결:

이 링크를 참조 하세요 : minSdkVersion 에 따라 경고를 끄는 다양한 옵션이 있으므로 20 이하로 설정되어 있습니다 .

 android {
     defaultConfig {
         ...
         minSdkVersion 15 
         targetSdkVersion 26
         multiDexEnabled true
     }
     ... }

 dependencies {   compile 'com.android.support:multidex:1.0.3' }

당신이있는 경우 20 이상의 minSdkVersion의 이상을 당신의 build.gradle 세트 사용에 경고를 종료하려면 다음을 수행하십시오

  android {
      defaultConfig {
          ...
          minSdkVersion 21 
          targetSdkVersion 26
          multiDexEnabled true
      }
      ... }

다음과 같이 종속성을 업데이트하십시오.

     dependencies {
        implementation 'com.android.support:multidex:1.0.3'
     }

다시 한 번 유일한 차이점은 종속성의 키워드입니다.

minSdkVersion 20 미만 : 컴파일 사용

minSdkVersion 20 이상 : 구현 사용

  1. 도움이 되었기를 바랍니다. 문제가 해결 되었으면 찬성 해주세요. 시간을 내 주셔서 감사합니다.
  2. 또한 이것이 발생 하는 이유대한 자세한 정보 는 링크의 첫 번째 단락을 읽으십시오. 이유를 자세히 설명합니다. 그리고 무엇이 경고는 것을 의미한다.

24

"Build-> Clean Project"를 시도해보십시오. 그것은 나를 위해 문제를 해결했습니다.


5
나는 cordova-android-support-gradle-release 플러그인을 설치하면서 cordova clean android 를 실행하여 Ionic / Cordova 프로젝트에서 저에게 도움이되었습니다.
mkimmet

간단한 것이 문제를 해결할 때 그것을 사랑하십시오 !! 감사!
tonejac

이것은 React Native로 작업 할 때 저를 위해 수정되었습니다.
Michael Auderer

감사합니다.이 문제에 대한 가장 쉬운 해결책입니다.이 문제를 해결하는 데 3 일을 보냈으며 귀하의 답변으로 모든 문제가 해결되었습니다. 다시 한번 감사합니다!
gautamsinh mori

감사. Android Studio 4.1에서 나를 도왔습니다. 내 하루를 구했습니다.
Atif

7

나를 위해, 추가

multiDexEnabled true

packagingOptions {
        exclude 'META-INF/NOTICE' 
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/notice'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license'
        exclude 'META-INF/license.txt'
    }

응용 프로그램 수준 Build.gradle의 파일은 문제를 해결


5

모듈 레벨 build.gradle파일로 이동 하여 코드에 다음 행을 추가하십시오.

    defaultConfig {
        ...
        minSdkVersion 15 
        targetSdkVersion 28
        multiDexEnabled true
    }
    ...
}

dependencies {
  implementation 'com.android.support:multidex:1.0.3'
}

그것은 문제를 쉽게 해결했습니다. 이 문서를 확인하십시오.


4

아래와 같이 multiDexEnabled true를 사용하십시오.

{
 minSdkVersion 17
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}

implementation 'com.android.support:multidex:1.0.3'

이 솔루션은 저에게 효과적이었습니다.


4

multiDexEnabled true를 포함하여 위에서 언급 한 많은 솔루션을 시도했지만 그 중 어느 것도 나를 위해 일하지 않았습니다.

다음은 나를 위해 일한 솔루션입니다-이 코드를 app \ build.gradle 파일에 복사하십시오.

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support' && requested.name != 'multidex') {
            details.useVersion "${rootProject.ext.supportLibVersion}"
        }
    }
}

코드를 실행하기 전에 gradlew를 깨끗하게 실행하십시오.


minSdkVersion을 변경했습니다. 충분합니다
Mr Special

2

나에게도 똑같은 일이 일어 났고 내가 AS 3.0.1로 업데이트하는 중이라는 것을 알았고 업데이트를 수행하고 앱을 정리하고 다시 빌드 한 후 모든 것이 수정되었습니다.


2

나를 위해이 오류를 수정 한 것은 내 앱의 gradle 종속성에서 한 줄을 변경하는 것입니다.

이것에서 :

compile('com.google.android.gms:play-services-gcm:+') {
    force = true
}

이것에 :

compile('com.google.android.gms:play-services-gcm:11.8.0') {
    force = true
}

그것만이 나를 위해 일했습니다. 나는 힘을 추가 할 필요가 없었다 = true
Paulo Linhares-Packapps

1

또한 앱이 MultiDexApplication을 서브 클래 싱하고 있는지 확인하십시오.

import android.support.multidex.MultiDexApplication

class App : MultiDexApplication()

또는 Application 클래스를 서브 클래 싱하지 않는 경우 AndroidManifest.xml에 추가합니다.

<application
  android:name="android.support.multidex.MultiDexApplication"

0

SDK 또는 플랫폼 업데이트 사이에 있습니까? 그렇다면 완전히 완료 한 다음 계속하십시오. 나는 일반적으로 업데이트해야하는 개별 패키지를 업데이트하여 때때로 최대 2.5GB까지 올라갈 수있는 전체 업데이트를 수행합니다. 이 전체 업데이트를 수행하면 때때로 실패합니다. Android Studio 3.0으로 업그레이드 한 후 여러 SDK 업데이트가 있었고 모든 패키지가 업데이트되지 않았기 때문에 위의 오류가 발생했습니다. 모든 패키지를 업데이트하면 위의 오류가 사라졌습니다.


캐시를 지우거나 무효화하고 Android Studio를 다시 시작하셨습니까? 나에게 Android Studio 3은 이전 버전에 비해 버그가있는 것 같습니다.
Vineet Jain

누구든지 이것을 고쳐 본 적이 있습니까? 지나칠 수 없습니다!
68,060

0

제 경우에는 firebase 라이브러리 버전을 2.6.0에서 2.4.2로 변경하면 문제가 해결되었습니다.


0

저에게 문제는 모듈에서 Java 1.8을 사용하는 것이었지만 앱 모듈에서는 사용하지 않았습니다. 나는 이것을 앱 빌드 gradle에 추가하고 일했습니다.

android{
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

0

같은 문제입니다. multidex를 활성화했습니다. defaultConfig {applicationId "xxx.xxx.xxxx"minSdkVersion 24 targetSdkVersion 26 multiDexEnabled true

캐시를 지우고, gradle을 정리하고, 다시 빌드하고, 만들고, 가져온 라이브러리에서 충돌이 없는지 확인하고 (모든 전이 종속성 제거) 모든 업데이트를 수행했습니다. 아직도:

오류 : ': app : transformDexArchiveWithExternalLibsDexMergerForDebug'작업에 대한 실행이 실패했습니다. java.lang.RuntimeException : com.android.builder.dexing.DexArchiveMergerException : dex를 병합 할 수 없습니다.

빌드가 좋아하지 않은 것으로 밝혀졌습니다. implementation 'org.slf4j : slf4j-android : 1.7.21'


0

Android Studio 버전이 3.0.1, Gradle 버전이 4.1, Android PluginVersion이 3.0.0 인 경우이 문제가 발생합니다. 그런 다음 Gradle 버전을 3.3으로 다운 그레이드하고 Android Android는 0이며 그런 문제가 없습니다.


0

요청한 SDK 버전이 종속성과 일치하지 않을 때이 문제가 발생했습니다. 강조 표시된 선을 클릭하고 빨간색 전구를 클릭하면이를 수정할 수 있습니다. 실제 버전을 찾을 필요없이 IDE에서 알아 내도록하십시오. 그리고 maven 구성에 google repo를 추가하십시오.


0

동일한 오류가 발생했으며 경우에는 현재 빌드중인 것과 다른 빌드 변형과 관련된 빌드 오류를 수정했을 때 오류가 해결되었습니다.

오류없이 잘보고 있던 빌드 변형을 빌드하고 있었지만 디버그를 시도하면 app:transformDexArchiveWithExternalLibsDexMergerForDebug오류가 발생했습니다 . 다른 빌드 변형을 빌드하도록 전환 한 후 빌드 프로세스에서 오류를 포착하여 수정했습니다. 이것은 app:transformDexArchiveWithExternalLibsDexMergerForDebug모든 빌드 변형에 대한 내 문제 를 해결하는 것 같았습니다 .

이 오류가 아니라는 것을주의 내에서 참조 된 외부 모듈하지만 외부 모듈을 참조하는 빌드 변종의 독특한 소스 세트에서. 나와 같은 사건을보고있는 사람에게 도움이되기를 바랍니다.


0

내 코드에서이 작업을 수행하여이 문제를 해결했습니다.

열기-> build.gradle 값 변경

compile 'com.google.code.gson:gson:2.6.1'

...에

compile 'com.google.code.gson:gson:2.8.2'

0

이 Dex 문제를 제거하려면 하나의 종속성을 구현하십시오. 이 문제는 동일한 서버에서 여러 다른 서비스를 사용할 때 발생합니다. 프로젝트에서 광고와 Firestore를 사용하고 있고 둘 다 저장소 전문가가 있다고 가정합니다. 그래서 우리는 저장소에서 다른 데이터를 호출해야합니다. 구현하려면 dex 의존성이 필요합니다. 새로운 업데이트 종속성 :-

 implementation 'com.android.support:multidex:1.0.3'

문제가 영구적으로 해결 될 것이라고 확신합니다.


자사의 의존성은 Gradle을에 넣어
프라 딥 Sheoran에게

0
1) multiDexEnabled true를 추가하십시오.
2) 컴파일 오류가 발생하면 앱 수준 build.gradle 날씨 동일한 종속성이 다른 버전으로 구현되었는지 확인하십시오.
3) 동일한 종속성을 찾으면 하나를 제거하십시오.

android {compileSdkVersion 28 defaultConfig {

    minSdkVersion 17
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}
잘 작동하기를 바랍니다 :) 해피 코딩

0

Suck 종류의 오류를 피하는 가장 쉬운 방법은 다음과 같습니다.

-앱 compilesdkversion과 동일하게 라이브러리 combilesdkversion 변경

-build.gradle (app)과 동일하게 라이브러리의 supportLibrary 버전 변경


0

이것이 나를 위해 일하는 것입니다. 깨끗한 준비 및 실행.

cordova clean android;
ionic cordova prepare andriod;
ionic cordova run andriod;

도움이되기를 바랍니다.



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.