學(xué)習(xí)筆記,還有很多地方都不明白,歡迎指正。
一、本文旨在解決Cause: com.android.dex.DexException: Multiple dex files define xxx類問題解決
問題場景:Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;

以上就是我遇到的項(xiàng)目中引用了多個(gè)不同版本的v4包導(dǎo)致的報(bào)錯(cuò),解決步驟如下:
1、找出是什么原因?qū)е铝瞬煌姹镜膙4包引入。
原因有很多,有可能是依賴的項(xiàng)目下面有和你當(dāng)前項(xiàng)目不同版本的v4包,這個(gè)解決方法就是統(tǒng)一v4,或者刪除多余的v4包,這類可以參見這兒
我所遇到的v4沖突是由于build.gradle中引入的依賴包中的v4版本不同!
在你的項(xiàng)目所在的module文件下運(yùn)行gradle -q dependencies,執(zhí)行該命令后有以下三種結(jié)果:
(1)提示gradle不是可執(zhí)行命令,請先配置gradle環(huán)境變量;
(2)報(bào)下圖所示錯(cuò)誤

解決辦法是將project下面的gradle.properties文件中的org.gradle.jvmargs=-Xmx1536m改為
org.gradle.jvmargs=-Xmx1024m,保存,再次運(yùn)行gradle -q dependencies
(3)這是我們想要的結(jié)果如下所示

從上圖中我們可以看出我們項(xiàng)目中有1與2兩次引入了v4包,我們兩個(gè)不同版本的v4包分別來自
com.android.support:appcompat-v7:23.4.0和'com.jakewharton:butterknife:8.5.1'這兩個(gè)依賴(com.android.support:support-compat:25.1.0中有v4包)
2、解決方法
從'com.jakewharton:butterknife:8.5.1'中移除support-compat,通過如下方法:
將app里面build.gradle 中的compile'com.jakewharton:butterknife:8.5.1'改為
compile('com.jakewharton:butterknife:8.5.1'){
exclude module: 'support-v4'
}
再次gradle -q dependencies,你會(huì)發(fā)現(xiàn)

圖中1處已com.jakewharton:butterknife:8.5.1下面已經(jīng)沒有com.android.support:support-compat:25.1.0這個(gè)包
再次運(yùn)行,項(xiàng)目完美編譯!