重复的 zip 条目 retrofit-1.3.0
Duplicate zip entry retrofit-1.3.0
当我尝试创建已激活 Proguard 的已签名 Apk 时,相对于带有改造的重复 zip 条目,我收到错误消息:
Note: there were 110 duplicate class definitions.
(http://proguard.sourceforge.net/manual/troubleshooting.html#duplicateclass)
Warning:can't write resource [.readme] (Duplicate zip entry [classes.jar:.readme])
Warning:can't write resource [META-INF/LICENSE.txt] (Duplicate zip entry [commons-lang3-3.2.1.jar:META-INF/LICENSE.txt])
Warning:can't write resource [META-INF/NOTICE.txt] (Duplicate zip entry [commons-lang3-3.2.1.jar:META-INF/NOTICE.txt])
Warning:can't write resource [META-INF/LICENSE.txt] (Duplicate zip entry [commons-io-1.3.2.jar:META-INF/LICENSE.txt])
Warning:can't write resource [META-INF/NOTICE.txt] (Duplicate zip entry [commons-io-1.3.2.jar:META-INF/NOTICE.txt])
Warning:can't write resource [.readme] (Duplicate zip entry [classes.jar:.readme])
:app:proguardAppRelease FAILED
Error:Execution failed for task ':app:proguardAppRelease'.
> java.io.IOException: Can't write [/Users/me/Projects/myProject/app/build/intermediates/classes-proguard/app/release/classes.jar] (Can't read [/Users/me/Projects/myProject/app/build/intermediates/exploded-aar/myProject/mySubProject/unspecified/jars/libs/retrofit-1.3.0.jar(;;;;;;!META-INF/MANIFEST.MF)] (Duplicate zip entry [b/a/a.class == retrofit-1.3.0.jar:retrofit/android/AndroidApacheClient.class]))
这里是我的 build.gradle 依赖关系:
dependencies {
compile 'joda-time:joda-time:2.7'
compile 'com.android.support:multidex:1.0.0'
compile 'com.android.support:support-v4:19.1.0'
compile 'com.google.code.gson:gson:2.2.4'
compile('com.octo.android.robospice:robospice-retrofit:1.4.11') {
exclude group: 'commons-io', module: 'commons-io'
}
compile('com.squareup.okhttp:okhttp:1.5.4')
compile 'com.google.android.gms:play-services:5.0.89'
compile 'com.splunk.mint:mint:4.0.5'
compile fileTree(dir: 'libs', include: ['*.jar'])
compile files('libs/PushLinkAndroid-5.3.0.jar')
compile project(':mobihelp_sdk_android_v1.5.4')
}
而且我还添加了这个 packaginOptions :
packagingOptions {
exclude '.readme'
exclude 'LICENSE.txt'
exclude 'README.txt'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/MANIFEST.MF'
}
我想知道是否可以通过从我的编译('com.octo.android.robospice:robospice-retrofit:1.4.11')中排除 retrofit-1.3.0 来解决这个问题,或者是否有其他更好的解决方案。
尝试将其添加到您的 build.gradle
文件中。
android {
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
}
编辑
根据this issue,与你的问题相同,你可以这样做。
compile ('com.octo.android.robospice:robospice-retrofit:1.4.13') {
exclude group: 'org.apache.commons', module: 'commons-io'
}
compile 'commons-io:commons-io:1.3.2'
希望对你有用。
我的依赖项部分都有
compile ('com.squareup.retrofit:retrofit:1.9.0') {
exclude group: 'org.apache.commons', module: 'commons-io'
} and compile fileTree(dir: 'libs', include: ['*.jar']).
这意味着我已经两次包含该库,因此出现错误。从 dependencies
中删除 compile fileTree(dir: 'libs', include: ['*.jar'])
后,一切都按预期工作
当我尝试创建已激活 Proguard 的已签名 Apk 时,相对于带有改造的重复 zip 条目,我收到错误消息:
Note: there were 110 duplicate class definitions.
(http://proguard.sourceforge.net/manual/troubleshooting.html#duplicateclass)
Warning:can't write resource [.readme] (Duplicate zip entry [classes.jar:.readme])
Warning:can't write resource [META-INF/LICENSE.txt] (Duplicate zip entry [commons-lang3-3.2.1.jar:META-INF/LICENSE.txt])
Warning:can't write resource [META-INF/NOTICE.txt] (Duplicate zip entry [commons-lang3-3.2.1.jar:META-INF/NOTICE.txt])
Warning:can't write resource [META-INF/LICENSE.txt] (Duplicate zip entry [commons-io-1.3.2.jar:META-INF/LICENSE.txt])
Warning:can't write resource [META-INF/NOTICE.txt] (Duplicate zip entry [commons-io-1.3.2.jar:META-INF/NOTICE.txt])
Warning:can't write resource [.readme] (Duplicate zip entry [classes.jar:.readme])
:app:proguardAppRelease FAILED
Error:Execution failed for task ':app:proguardAppRelease'.
> java.io.IOException: Can't write [/Users/me/Projects/myProject/app/build/intermediates/classes-proguard/app/release/classes.jar] (Can't read [/Users/me/Projects/myProject/app/build/intermediates/exploded-aar/myProject/mySubProject/unspecified/jars/libs/retrofit-1.3.0.jar(;;;;;;!META-INF/MANIFEST.MF)] (Duplicate zip entry [b/a/a.class == retrofit-1.3.0.jar:retrofit/android/AndroidApacheClient.class]))
这里是我的 build.gradle 依赖关系:
dependencies {
compile 'joda-time:joda-time:2.7'
compile 'com.android.support:multidex:1.0.0'
compile 'com.android.support:support-v4:19.1.0'
compile 'com.google.code.gson:gson:2.2.4'
compile('com.octo.android.robospice:robospice-retrofit:1.4.11') {
exclude group: 'commons-io', module: 'commons-io'
}
compile('com.squareup.okhttp:okhttp:1.5.4')
compile 'com.google.android.gms:play-services:5.0.89'
compile 'com.splunk.mint:mint:4.0.5'
compile fileTree(dir: 'libs', include: ['*.jar'])
compile files('libs/PushLinkAndroid-5.3.0.jar')
compile project(':mobihelp_sdk_android_v1.5.4')
}
而且我还添加了这个 packaginOptions :
packagingOptions {
exclude '.readme'
exclude 'LICENSE.txt'
exclude 'README.txt'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/MANIFEST.MF'
}
我想知道是否可以通过从我的编译('com.octo.android.robospice:robospice-retrofit:1.4.11')中排除 retrofit-1.3.0 来解决这个问题,或者是否有其他更好的解决方案。
尝试将其添加到您的 build.gradle
文件中。
android {
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
}
编辑
根据this issue,与你的问题相同,你可以这样做。
compile ('com.octo.android.robospice:robospice-retrofit:1.4.13') {
exclude group: 'org.apache.commons', module: 'commons-io'
}
compile 'commons-io:commons-io:1.3.2'
希望对你有用。
我的依赖项部分都有
compile ('com.squareup.retrofit:retrofit:1.9.0') {
exclude group: 'org.apache.commons', module: 'commons-io'
} and compile fileTree(dir: 'libs', include: ['*.jar']).
这意味着我已经两次包含该库,因此出现错误。从 dependencies
中删除compile fileTree(dir: 'libs', include: ['*.jar'])
后,一切都按预期工作