2014-11-25 3 views
4

minifyEnabled를 사용할 때 "중복 된 zip 입력 오류"가 나타납니다. 안드로이드 스튜디오의중복 된 우편 항목 [commons-io-1.3.2.jar : org/apache/commons/io/CopyUtils.class]

버전 : 1.0 RC 1
OS 버전 : 맥 OS 10.9.5
자바 JRE/JDK 버전 "1.7.0_71"
Gradle을 : 0.14.0

다음의 일부입니다 내 build.gradle 설정. 내가 assembleDebug 때

compileSdkVersion 21 
buildToolsVersion "21.1.1" 

packagingOptions { 
    exclude 'META-INF/DEPENDENCIES.txt' 
    exclude 'META-INF/LICENSE.txt' 
    exclude 'META-INF/NOTICE.txt' 
    exclude 'META-INF/NOTICE' 
    exclude 'META-INF/LICENSE' 
    exclude 'META-INF/DEPENDENCIES' 
    exclude 'META-INF/notice.txt' 
    exclude 'META-INF/MANIFEST.MF' 
    exclude 'META-INF/license.txt' 
    exclude 'META-INF/dependencies.txt' 
} 

buildTypes { 
    release { 
     minifyEnabled true 
     //proguardFile file('proguard-project.txt') 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt' 
    } 
    debug { 
     minifyEnabled true 
     //proguardFile file('proguard-project.txt') 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt' 
     debuggable true 
     applicationIdSuffix = '.alpha' 
     versionNameSuffix = 'a' 
    } 
} 
dependencies { 
compile 'com.android.support:support-v4:21.0.0' 
compile 'com.android.support:appcompat-v7:21.0.2' 
compile project(':modules:Aviary-SDK') 
compile project(':modules:facebook') 
compile ('com.crashlytics.android:crashlytics:1.+'){ 
    exclude group: 'commons-io', module: 'commons-io' //added this because crashlytics seems to be using commons-io 
} 
compile 'com.google.android.gms:play-services:6.1.11' 
compile 'org.apache.httpcomponents:httpcore:4.3.2' 
compile 'org.apache.httpcomponents:httpmime:4.3.5' 
} 

는이 오류 메시지가 :

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':app:proguardDebug'. 
> java.io.IOException: Can't write [/Users/tomoaki/Workspace/temp/someproject/app/build/intermediates/classes-proguard/debug/classes.jar] (Can't read [/Users/tomoaki/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-io/1.3.2/b6dde38349ba9bb5e6ea6320531eae969985dae5/commons-io-1.3.2.jar(;;;;;;!META-INF/MANIFEST.MF)] (Duplicate zip entry [commons-io-1.3.2.jar:org/apache/commons/io/CopyUtils.class])) 

나는 this question 읽을 수 있지만 대답은 나를 위해 작동하지 않았다. 어떤 도움을 주셔서 감사합니다.

+1

"gradlew : : dependencies"를 실행할 수 있습니까? ''을 앱 모듈 이름으로 바꿉니다. "commash-io"가 "crashlytics"외의 다른 몇 가지 라이브러리에 나타나며이를 제외해야 할 수도 있습니다. 결과를 게시하십시오. 감사. – AndroidGuy

+0

@AndroidGuy 도움에 감사드립니다! 나는 명령을 실행했고 그것을 [요지] (https://gist.github.com/tomoima525/97eaf11e59698b57afe6)에 넣었습니다. Aviary에는 "commons-io"가 있습니다. 나는 시도 : 컴파일 프로젝트 (': 모듈 : 조류 사육장 - SDK') { 그룹 제외 '공유지-IO'모듈을 '공유지-IO' } 하지만 그것은 작동하지 않았다. Gradle DSL method가 발견되지 않았습니다 : exclude() – tomoima525

+0

느슨하게 관련되었지만 같은 트릭이 작동했습니다 : oac commons-io가 'commons-io : commons-io'라는 것에 의존하는 것처럼 보이는 동일한 문제가 발생했습니다. 그것들은 같은 이름을 가지고 있기 때문에 무해한 것처럼 보이기 때문에 까다로운 일이지만, 속임수 오류를 일으킬 수있는 전이 의존성이 있습니다. – jayunit100

답변

0

당신이뿐만 아니라 조류 사육장에서 발견 때문에, 당신은 시도 할 수 :

컴파일 (프로젝트 (': 모듈 : 조류 사육장 - SDK')) {제외 그룹 : '공유지-IO'모듈 ' commons-io '}

이렇게하면 DSL 오류가 발생하지 않습니다.

+0

주석 주셔서 감사합니다. 예, 효과가있었습니다! 나는 프로젝트 (': 모듈 : Aviary-SDK')에 넣지 않았으므로 그것이 작동하지 않는 이유입니다. 고마워요! – tomoima525