1. 程式人生 > >解決Android Studio載入第三方jar包,出現包重複載入的問題:

解決Android Studio載入第三方jar包,出現包重複載入的問題:

from: http://blog.csdn.net/yy1300326388/article/details/43759267

通過Maven中央庫新增第三方jar包的時候,出現了重複載入jar包的問題,解決辦法很簡單去掉一個不讓它去載入就OK了

一、錯誤

[html] view plain copy  print?
  1. Error:Execution failed for task ':app:dexDebug'.  
  2. > com.android.ide.common.internal.LoggedErrorException: Failed to run command:  
  3.     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  
  4. Error Code:  
  5.     2  
  6. Output:  
  7.     UNEXPECTED TOP-LEVEL EXCEPTION:  
  8.     com.android.dex.DexException:<strong><spanstyle="color:#3333ff;">Multiple dex files define Landroid/</span><spanstyle="color:#ff0000;"
    >support/v4</span><spanstyle="color:#3333ff;">/accessibilityservice/AccessibilityServiceInfoCompatIcs;</span></strong>
  9.         at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)  
  10.         at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)  
  11.         at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)  
  12.         at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)  
  13.         at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)  
  14.         at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)  
  15.         at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)  
  16.         at com.android.dx.command.dexer.Main.run(Main.java:246)  
  17.         at com.android.dx.command.dexer.Main.main(Main.java:215)  
  18.         at com.android.dx.command.Main.main(Main.java:106)  

從上述錯誤中我們可以看到support_v4的包重複載入編譯了,我們看一下gradle-app檔案

[html] view plain copy  print?
  1. dependencies {  
  2.     compile fileTree(dir: 'libs', include: ['*.jar'])  
  3.     compile 'com.android.support:appcompat-v7:21.0.0'  
  4.     <spanstyle="color:#ff0000;">compile 'in.srain.cube:cube-sdk:1.0.42.1'</span>
  5.     compile files('libs/android-async-http-1.4.6.jar')  
  6. }  
其中引入了v7的包後會自動去載入編譯一個v4:21.0.0包,而在in.srain.cube:cube-sdk:1.0.42.1庫中也有一個v4的包,所以我們需要去掉一個


看一下,libraries是否是我們所講的那樣,重複載入v4包


二、解決辦法

[java] view plain copy  print?
  1. dependencies {  
  2.     compile fileTree(dir: 'libs', include: ['*.jar'])  
  3.     compile 'com.android.support:appcompat-v7:21.0.0'
  4.     <span style="color:#ff0000;">compile ('in.srain.cube:cube-sdk:1.0.42.1'){  
  5.         exclude module: 'support-v4'
  6.     }</span>  
  7.     compile files('libs/android-async-http-1.4.6.jar')  
  8. }  
去掉in.srain.cube:cube-sdk:1.0.42.1中的包不載入即可。