from: http://blog.csdn.net/yy1300326388/article/details/43759267
通過Maven中央庫添加第三方jar包的時候,出現了重複加載jar包的問題,解決辦法很簡單去掉一個不讓它去加載就OK了
一、錯誤
[html] view plain copy print ?
- Error:Execution failed for task ':app:dexDebug'.
- > com.android.ide.common.internal.LoggedErrorException: Failed to run command:
- F:\zsl\sdk\build-tools\21.1.2\dx.bat --dex --output F:\zsl\Android\pro\RecipesDaquan\app\build\intermediates\dex\debug --input-list=F:\zsl\Android\pro\RecipesDaquan\app\build\intermediates\tmp\dex\debug\inputList.txt
- Error Code:
- 2
- Output:
- UNEXPECTED TOP-LEVEL EXCEPTION:
- com.android.dex.DexException:<strong> <span style="color:#3333ff;">Multiple dex files define Landroid/</span><span style="color:#ff0000;">support/v4</span><span style="color:#3333ff;">/accessibilityservice/AccessibilityServiceInfoCompatIcs;</span></strong>
- at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
- at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
- at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
- at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
- at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
- at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
- at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
- at com.android.dx.command.dexer.Main.run(Main.java:246)
- at com.android.dx.command.dexer.Main.main(Main.java:215)
- at com.android.dx.command.Main.main(Main.java:106)
從上述錯誤中我們可以看到support_v4的包重複加載編譯了,我們看一下gradle-app檔案
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiclRnblN0LclHdpZXYyd2LcBzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX0cmeNJTS610dBpXT4tGWlZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DM0UTM1QDNwEjMxIDM1EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
[html] view plain copy print ?
- dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar'])
- compile 'com.android.support:appcompat-v7:21.0.0'
- <span style="color:#ff0000;">compile 'in.srain.cube:cube-sdk:1.0.42.1'</span>
- compile files('libs/android-async-http-1.4.6.jar')
- }
其中引入了v7的包後會自動去加載編譯一個v4:21.0.0包,而在in.srain.cube:cube-sdk:1.0.42.1庫中也有一個v4的包,是以我們需要去掉一個
看一下,libraries是否是我們所講的那樣,重複加載v4包
二、解決辦法
[java] view plain copy print ?
- dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar'])
- compile 'com.android.support:appcompat-v7:21.0.0'
- <span style="color:#ff0000;">compile ('in.srain.cube:cube-sdk:1.0.42.1'){
- exclude module: 'support-v4'
- }</span>
- compile files('libs/android-async-http-1.4.6.jar')
- }
去掉in.srain.cube:cube-sdk:1.0.42.1中的包不加載即可。