【发布时间】:2017-10-30 12:16:27
【问题描述】:
我正在开发一个项目。这在 Android Studio 2.3.3 上运行良好,但是当我更新我的 Android Studio 3.0 并打开我的项目然后它无法组装并且它发送给我下面的错误日志时会发生什么。
错误日志
Error:Error converting bytecode to dex:
Cause: com.android.dex.DexException: Multiple dex files define Lorg/apache/commons/io/IOCase;
Error:com.android.dex.DexException: Multiple dex files define Lorg/apache/commons/io/IOCase;
Error: at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:661)
Error: at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:616)
Error: at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:598)
Error: at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
Error: at com.android.dx.merge.DexMerger.merge(DexMerger.java:198)
Error: at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:61)
Error: at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:36)
Error: at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)
Error: at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
Error: at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
Error: at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
Error: at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Error:Execution failed for task ':app:transformDexArchiveWithDexMergerForDebug'.
> com.android.build.api.transform.TransformException: com.android.dex.DexException: Multiple dex files define Lorg/apache/commons/io/IOCase;
请不要重复,因为我已经尝试过以下所有内容
- 清理项目
- 重建项目
- 重新打开项目并清理和重建后删除了项目中的 /.gradle 文件夹
- 重新打开项目并清理和重建后删除了 .gradle 现金文件夹
其他的认为是我检查了下面的堆栈溢出问题及其答案,其他的我也没有得到解决方案。
1. Question、2. Question、3. Question、4. Question 和 5. Question
项目级build.gradle文件
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
classpath 'com.google.gms:google-services:3.1.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
google()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
应用级build.gradle文件
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion '26.0.2'
defaultConfig {
applicationId "com.mypackage"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
// for render script to create blur image
renderscriptTargetApi 18
renderscriptSupportModeEnabled true
multiDexEnabled true
}
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:appcompat-v7:25.3.1'
compile 'com.android.support:cardview-v7:25.3.1'
compile 'com.android.support:design:25.3.1'
compile 'com.android.support:multidex:1.0.0'
testCompile 'junit:junit:4.12'
compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
//google API
compile 'com.google.firebase:firebase-auth:10.0.1'
compile 'com.google.firebase:firebase-messaging:10.0.1'
compile 'com.google.firebase:firebase-core:10.0.1'
compile 'com.google.android.gms:play-services-auth:10.0.1'
compile 'com.google.android.gms:play-services-places:10.0.1'
compile 'com.google.android.gms:play-services-maps:10.0.1'
//facebook SDK
compile 'com.facebook.android:facebook-android-sdk:[4,5)'
compile 'de.hdodenhof:circleimageview:2.1.0'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.squareup.okhttp3:okhttp:3.4.2'
compile ('org.apache.commons:commons-lang3:3.4'){
exclude module: 'commons-io'
}
compile('net.yazeed44.imagepicker:imagepicker:1.3.0') {
exclude module: 'cam2'
}
}
apply plugin: 'com.google.gms.google-services'
请帮我解决这个问题。我可以知道你是否需要我这边的任何东西。帮助将不胜感激。提前致谢。
【问题讨论】:
-
libs/中是否有任何 JAR?如果没有,请删除compile fileTree(dir: 'libs', include: ['*.jar']),因为您没有使用该行。如果你是,那么你有什么 JAR 在那里。在某个地方,您有 2+ 个定义org.apache.commons.io.IOCase的依赖项,您需要修复重复项。 -
我没有使用任何
jar文件,但是当我创建项目时,它会自动添加该行。可以删除该行并再次重建吗?我也试过exclude module,但也没有工作? -
您可以(并且应该)删除该行,但这不会解决问题。 2+ 的其他依赖项必须包含该类。一个可能是
org.apache.commons:commons-lang3:3.4。您需要找到另一个拥有它,然后停止使用这些依赖项之一。我相当肯定com.android.support库都没有定义org.apache.commons.io.IOCase,所以我建议您从检查其他依赖项开始。 -
依赖项看起来像这样 gist.github.com/anonymous/78aef3725caad6cab6bd8bb7abdbf558 但我不知道如何找到?
-
嗯,班级是
org.apache.commons.io.IOCase。您在该列表中同时拥有org.apache.commons:commons-io:1.3.2@jar和commons-io:commons-io:1.3.2@jar。我的猜测是你的问题就在那里。使用exclude删除其中一个,看看你的问题是否解决了。
标签: android apache gradle android-studio-3.0 android-multidex