Dex错误在Android Studio 3.0 Beta4上
Error:java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex Error:java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex Error:com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex Error:com.android.dex.DexException: Multiple dex files define Lcom/google/zxing/integration/android/IntentResult;
我有与Android Studio 3.0 beta 4相同的问题。我find了一个解决scheme。
1.从Build
菜单中,按Clean Project
button。
2.任务完成后,从Build
菜单中按Rebuild Project
button。
所以我通过下面的方法解决了这个问题:
- 删除项目中的
./gradle
文件夹 - 删除所有的构build文件夹和gradlecaching 。 我运行了以下命令:
怎么样 ?
cd ~/[your project root folder] && find . -name build -exec rm -rf {} \; && rm -rf $HOME/.gradle/caches/
假设您的gradleconfiguration文件位于$HOME/.gradle
文件夹中。
- 在Android Studio中,进入
File > Invalidate caches / Restart...
并使caching失效并重新启动。
对于Android Studio 3.0,我所做的是将其添加到我的gradle中:
multiDexEnabled true
它的工作!
例
android { compileSdkVersion 25 buildToolsVersion '26.0.2' defaultConfig { applicationId "com.xx.xxx" minSdkVersion 15 targetSdkVersion 24 versionCode 9 versionName "1.0" multiDexEnabled true //Add this testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { shrinkResources true minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } }
您应该能够通过使用gradle检查您的依赖关系来查找此错误的原因,然后查找如下所示的重复项: ./gradlew -q app:dependencies
在我的情况下,在构build时发生以下错误:
Duplicate zip entry [httpcore-4.4.1.jar
这是在我的build.gradle
做到这一点解决:
implementation ('me.dlkanth:stetho-volley:1.0') { exclude group: 'org.apache.httpcomponents' }
检查你的依赖关系是否为最新版本通常与你的任何依赖版本的版本不一致。
1.Build> Clean Project 2.重build您的项目
检查导致合并问题的依赖关系的详细日志并更新相同。 对每个依赖项重复相同的操作。
在Gradle里面试试这个代码,它为我工作。
android { defaultConfig { multiDexEnabled true } }
改变“编译”为“compileOnly”这是为我工作。
我在Android Studio 3.0.1中面临同样的问题,我尝试了所有可能的情况下没有为我如上所述工作,最后我解决了它
解决方法1:
- closuresAndroid Studio
- 删除位于
C:\Users\YourComputerName\.gradle
.gradle
文件夹不是从应用程序的.gradle
- 重新启动android studio
它将下载所有必需的jar并添加到您的构buildpath
溶液2:
- 从app / libs的libs文件夹中删除jar
- 再次运行应用程序
因为build.gradle
文件中已经定义了重复的jar文件
这解决了这个问题。 愿它帮助别人
这个错误可能有多种原因。 没有干净,重build或任何这样的工作对我来说。
对我来说问题是依赖:
compile 'org.jetbrains:annotations-java5:15.0'
我删除它,一切工作正常。
在我的情况下,罪魁祸首是SendGrid库,添加这个,它得到了修复:
compile 'com.github.danysantiago:sendgrid-android:1',{ exclude group: 'org.apache.httpcomponents', module: 'httpclient' }
我正在使用Studio 3.0.0版本。 在我的情况下是唯一的解决scheme:我已经从我的项目中的“libs”文件夹中删除旧的JAR:它是依赖关系的“ksoap2”包。 使用Gradle获得的包通常不会相互冲突,至less如果您使用的是最stream行的包。 但是如果libs文件夹中包含所有自己的依赖项,则可能会破坏您的构build。
通过删除Android数据绑定库来解决这个问题:
dataBinding { enabled = true }
我已经尝试了删除gradle和bla bla bla的其他意见,但添加multiDexEnabled true
解决我的问题,我调查我的apk已达到超过64K方法。
参考: https : //developer.android.com/studio/build/multidex.html )