如何解决 Android 中的“TransformException:java.util.zip.ZipException:重复条目”?
Posted
技术标签:
【中文标题】如何解决 Android 中的“TransformException:java.util.zip.ZipException:重复条目”?【英文标题】:How to resolve "TransformException: java.util.zip.ZipException: duplicate entry" in Android? 【发布时间】:2016-06-18 19:03:51 【问题描述】:错误描述:
错误:任务执行失败 ':app:transformClassesWithJarMergingForDebug'。 > com.android.build.api.transform.TransformException: java.util.zip.ZipException:重复条目: com/google/api/client/http/AbstractInputStreamContent.class
这是我的 gradle 代码
apply plugin: 'com.android.application'
android
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig
applicationId "com.richwebs.user.hohoride"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
multiDexEnabled true
buildTypes
release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
packagingOptions
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
dependencies
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile('com.google.api-client:google-api-client-android:1.20.0')
exclude group: 'org.apache.httpcomponents'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.google.android.gms:play-services:9.0.2'
compile 'com.google.android.gms:play-services-base:9.0.2'
compile 'com.google.android.gms:play-services-analytics:9.0.2'
compile 'com.google.android.gms:play-services-maps:9.0.2'
compile 'com.mcxiaoke.volley:library-aar:1.0.0'
compile 'com.android.support:design:23.4.0'
compile 'com.android.support:support-v4:23.4.0'
compile 'com.google.android.gms:play-services-ads:9.0.2'
compile 'com.google.android.gms:play-services-auth:9.0.2'
compile 'com.google.android.gms:play-services-gcm:9.0.2'
compile group: 'commons-io', name: 'commons-io', version: '2.0.1'
android
useLibrary 'org.apache.http.legacy'
【问题讨论】:
先告诉我你应用了dexConfig吗? 不,我没有使用 dexconfig 否则把整个 gradle.build 代码.. 所以我可以建议你你必须实现什么 是的,我编辑了我的代码,请帮助 【参考方案1】:有两种方法可以解决这个问题
-
如果您的应用中的方法引用超过其限制,则像这样增加堆大小。
dexOptions preDexLibraries = 假 javaMaxHeapSize "4g"
并像这样启用 mutidexSupport:
defaultConfig
multiDexEnabled true
dependencies
compile 'com.android.support:multidex:1.0.1'
并在清单文件中设置名称属性:
<application
android:name="android.support.multidex.MultiDexApplication" >
</application>
-
如果这不起作用,那么您只有一个选项,并且它在您的 gradle 文件中排除重复的库。此错误称为“已添加”,当您在 lib 中添加 .jar 文件时会发生此错误。文件夹并为此设置 gradle 依赖项。
这是我完整的 gradle 文件代码..
apply plugin: 'com.android.application'
android
compileSdkVersion 23
buildToolsVersion "23.0.3"
useLibrary 'org.apache.http.legacy'
dexOptions
preDexLibraries = false
javaMaxHeapSize "4g"
defaultConfig
applicationId "com.apple"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
multiDexEnabled true
buildTypes
release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
compileOptions
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
packagingOptions
exclude 'META-INF/license.txt'
exclude 'META-INF/LICENSE'
exclude 'META-INF/notice.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE-FIREBASE.txt'
exclude 'META-INF/NOTICE'
dependencies
testCompile 'junit:junit:4.12'
compile 'com.android.support:support-v4:23.3.0'
compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.android.support:design:23.3.0'
compile project(':library')
compile files('libs/httpmime-4.3.jar')
compile files('libs/gcm.jar')
compile 'com.mcxiaoke.volley:library:1.0.19'
compile 'com.google.code.gson:gson:2.4'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.android.support:multidex:1.0.1'
compile 'com.firebase:firebase-client-android:2.3.1'
compile files('libs/httpcore-4.3.2.jar')
compile files('libs/httpclient-4.3.3.jar')
configurations
all*.exclude group: 'com.android.support', module: 'support-vector-drawable'
all*.exclude group: 'com.android.support', module: 'animated-vector-drawable'
all*.exclude group: 'com.android.support', module: 'support-annotations'
我对这三个模块有问题,所以只需从所有依赖项中排除,我的错误就消失了。
【讨论】:
bcz 您只从一个库中排除。你应该像我所做的那样从所有库中排除。并且不要只通过组。也通过模块,bcz 当我遇到这个问题时,我参考了很多 *** 的链接。这是我找到的最佳解决方案。 方式2是什么?另外,问题变了吗?多重索引在这里必须做什么?【参考方案2】:可能在不同版本的导入库中存在问题
你有
compile 'com.google.android.gms:play-services-analytics:9.0.0' // wrong!
compile 'com.google.android.gms:play-services-gcm:9.0.2'
确保您始终使用相同的版本,例如:
compile 'com.google.android.gms:play-services-analytics:9.0.2'
compile 'com.google.android.gms:play-services-gcm:9.0.2'
【讨论】:
以上是关于如何解决 Android 中的“TransformException:java.util.zip.ZipException:重复条目”?的主要内容,如果未能解决你的问题,请参考以下文章