[android] java.util.zip.ZipException : packageAllDebugClassesForMultiDex 중 중복 항목

이 오류가 무엇을 의미하는지 잘 모르겠습니다.

Execution failed for task ':excelSior:packageAllDebugClassesForMultiDex'.
> java.util.zip.ZipException: duplicate entry: android/support/v4/util/TimeUtils.class

현재 android-support-v4.jar내 라이브러리에 사용 하고 있습니다.

dependencies {
    compile project(':addThisSDK')
    compile project(':centeredContentButton')
    compile project(':googleplayservices_lib')
    compile files('libs/adxtag2.4.6.jar')
    compile files('libs/android-support-v4.jar')
    compile files('libs/aws-android-sdk-1.7.1.1-debug.jar')
    compile files('libs/commons-lang-2.6.jar')
    compile files('libs/crittercism_v4_4_0_sdkonly.jar')
    compile files('libs/dd-plist.jar')
    compile files('libs/FiksuAndroidSDK_4.1.1.jar')
    compile files('libs/iqengines-sdk-barcode.jar')
    compile files('libs/irEventTracker-1.2.jar')
    compile files('libs/jolt-core-0.0.7.jar')
    compile files('libs/json-utils-0.0.7.jar')
    compile files('libs/jsoup-1.7.2.jar')
    compile files('libs/kooaba-api-v4-java.jar')
    compile 'com.android.support:multidex:1.0.0'
}

Gradle 동기화 중에 오류가 표시되지 않습니다. 응용 프로그램을 실행하려고 할 때

무엇이 문제일까요?



답변

v4 라이브러리를 삽입하고 라이브러리를 컴파일했는지 확인해야합니까? 앱이나 의존성 프로그램에서 라이브러리를 반복해서는 안됩니다.

V4가 하나만 남도록 반복 라이브러리를 삭제하십시오.

앱 dir build.gradle파일에 다음 명령을 추가하십시오.

android{


    configurations {
        all*.exclude group: 'com.android.support', module: 'support-v4'
        all*.exclude group: 'com.android.support', module: 'support-annotations'
    }

}

그것은 나를 위해 작동합니다! 시도해 볼 수 있습니다!


답변

지금까지이 문제를 해결했지만 답이없는 상태로 유지되지 않도록 다음을 추가해보세요 build.gradle.

configurations {
    all*.exclude group: 'com.android.support', module: 'support-v4'
}


답변

이전 이클립스 프로젝트를 다시 가져올 때도 이런 종류의 문제가 발생했습니다. 프로젝트에서 jar 파일로 오래된 종속성이 발생했습니다.

그냥 제거

컴파일 fileTree (dir : ‘libs’, include : ‘* .jar’)

gradle 파일에서

gradle 파일에 종속성을 추가하십시오.

그것은 나를 위해 작동합니다 ..


답변

제 경우에는 설정 후 언급 된 “중복 입력”오류가 발생했습니다.multiDexEnable=true build.gradle에서 했습니다.

오류를 완전히 해결하려면 먼저 64K 이상의 방법으로 앱 구성을 살펴보십시오. 앱 구성 (특히 “Gradle로 Multidex 용 앱 구성”)을 살펴보십시오.

또한 Android Studio에서 ctrl + n을 사용하여 “중복 항목”오류를 일으키는 클래스 발생을 검색하십시오. 중복을 포함하는 모듈 및 종속성을 확인하고 빌드에서 제외합니다. 예 :

compile ('org.roboguice:roboguice:2.0') {
    exclude module: 'support-v4'
}

작동 할 때까지 여러 모듈 레이블을 시도해야했습니다. “support-v4″를 제외하면 “java.util.zip.ZipException : duplicate entry : android / support / v4 / *”와 관련된 문제가 해결됩니다.


답변

내 이해는 동일한 API에 대한 중복 참조가 있다는 것입니다 (아마도 다른 버전 번호). 명령 줄에서 빌드 할 때 디버그하기가 합리적으로 쉬워야합니다.

./gradlew yourBuildVariantName --debug명령 줄에서 시도하십시오 .

문제가되는 항목이 첫 번째 실패입니다. 예는 다음과 같습니다.

14:32:29.171 [INFO] [org.gradle.api.Task] INPUT: /Users/mydir/Documents/androidApp/BaseApp/build/intermediates/exploded-aar/theOffendingAAR/libs/google-play-services.jar

14:32:29.171 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter] Finished executing task ':BaseApp:packageAllyourBuildVariantNameClassesForMultiDex'

14:32:29.172 [LIFECYCLE] [class org.gradle.TaskExecutionLogger] :BaseApp:packageAllyourBuildVariantNameClassesForMultiDex FAILED'

위의 경우 내 libs 디렉토리 (theOffendingAAR)에 포함 된 aar 파일에는 Google Play 서비스 jar (예, 예, 알고 있습니다.) 파일이 포함되었으며 BaseApp 빌드 파일은 위치 서비스를 사용했습니다.

compile 'com.google.android.gms:play-services-location:6.5.87'

빌드 파일에서 문제가되는 항목을 안전하게 제거하고 정리하고 다시 빌드 할 수 있습니다 (필요한 경우 반복).


답변

종속성 버전을 확인하십시오. 호환되는 버전이 특히 com.google 패키지에주의를 기울여야하며 다음과 같은 동일한 버전이 있어야합니다.

compile 'com.google.android.gms:play-services:8.3.0'
compile 'com.google.android.gms:play-services-maps:8.3.0'

둘 다 8.3.0이며 다른 버전을 컴파일하면 해당 예외가 발생합니다.


답변

종속성에서 Jar 파일을 간단히 제거하십시오. gardle.project를 v7로하고 프로젝트를 실행하십시오.