在Android開發過程當中都避免不了要集成第三方的項目、集成完以後今天碰到這個使人我很是不開心的transformClassesWithDexForDebug Exception、詳細的Log以下:java
Error:java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException:
com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
1
2
或者會出現以下的異常:android
Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
1
2
###查閱了好多資料和別人的一些解決方法,如:
##一、第一種:app
defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...
//Enabling multidex support.
multiDexEnabled true
}
dependencies {
compile ´com.android.support:multidex:1.0.1´ide
1
2
3
4
5
6
7
8
9
10
11
12
13
(1) 在defaultConfig 中進行配置爲 multiDexEnabled true
(2) 在dependencies 中加入以下依賴 compile´com.android.support:multidex:1.0.1´
(3) 在清單文件中進行配置Applicationgradle
<application
...
android:name="android.support.multidex.MultiDexApplication">
...ui
1
2
3
4
5
可是在個人項目中仍是沒有解決
##第二種方法:idea
若是出現上面的異常會在Gradle Console中顯示如上的信息,點擊Run with-stacktrace則會在message中出現一些jar包衝突活着版本不一致的一些詳細信息,這樣在Android Studio切換到Project視圖,從.idea中找到衝突的jar進行刪除就OK ,從新進行rebuild Project就OK,可是我遇到的問題是,在裏面根本找不到衝突的jar,因此第二種解決方法也行不通。
=================================================
重點來了:
##第三種方法:.net
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'
}
}
}
}
1
2
3
4
5
6
7
8
9
10
在App目錄下的build.gradle中進行配置如上信息,簡單解釋一下,這裏的xx.x.x則表明假如gradle的時候,出現了multidex,則使用咱們指定的版本,這裏我使用的是26.1.0,從新gradle則解決問題。
————————————————
版權聲明:本文爲CSDN博主「OneXzgj」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。
原文連接:https://blog.csdn.net/qq_15988951/article/details/82461172orm