RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex解決方法
阿新 • • 發佈:2018-12-20
在Android開發過程中都避免不了要整合第三方的專案、整合完之後今天碰到這個令人我非常不開心的transformClassesWithDexForDebug Exception、詳細的Log如下:
Error:java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException:
com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
或者會出現如下的異常:
Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
查閱了好多資料和別人的一些解決方法,如:
1、第一種:
defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...
//Enabling multidex support.
multiDexEnabled true
}
dependencies {
compile ´com.android.support:multidex:1.0 .1´
(1) 在defaultConfig 中進行配置為 multiDexEnabled true
(2) 在dependencies 中加入如下依賴 compile´com.android.support:multidex:1.0.1´
(3) 在清單檔案中進行配置Application
<application
...
android:name="android.support.multidex.MultiDexApplication">
...
但是在我的專案中還是沒有解決
第二種方法:
如果出現上面的異常會在Gradle Console中顯示如上的資訊,點選Run with-stacktrace則會在message中出現一些jar包衝突活著版本不一致的一些詳細資訊,這樣在Android Studio切換到Project檢視,從.idea中找到衝突的jar進行刪除就OK ,重新進行rebuild Project就OK,但是我遇到的問題是,在裡面根本找不到衝突的jar,所以第二種解決方法也行不通。
=================================================
重點來了:
第三種方法:
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion 'xx.x.x'
}
}
}
}
在App目錄下的build.gradle中進行配置如上資訊,簡單解釋一下,這裡的xx.x.x則代表假如gradle的時候,出現了multidex,則使用我們指定的版本,這裡我使用的是26.1.0,重新gradle則解決問題。