2014-07-15 195 views
2

所以,我試圖將我的Eclipse ADT項目遷移到Android Studio。我在eclipse中使用appcompat_v7項目作爲庫項目。我跟着在Android開發網站上的說明,但我仍然收到此錯誤:ADT到Android Studio意外的頂級例外

Error:Execution failed for task :PaWPal:dexDebug. 
com.android.ide.common.internal.LoggedErrorException: Failed to run command: 
    /Users/godswood/Desktop/adt-bundle-mac-x86_64-20140321/sdk/build-tools/19.1.0/dx --dex --num-threads=4 --output /Users/godswood/Desktop/pawpal/PaWPal/build/intermediates/dex/debug /Users/godswood/Desktop/pawpal/PaWPal/build/intermediates/classes/debug /Users/godswood/Desktop/pawpal/PaWPal/build/intermediates/dependency-cache/debug /Users/godswood/Desktop/pawpal/PaWPal/build/intermediates/pre-dexed/debug/android-support-v13-7e8441dbe126e0c6ef27b0769fe1a7b51230f497.jar /Users/godswood/Desktop/pawpal/PaWPal/build/intermediates/pre-dexed/debug/android-support-v4-435683bcc81493f96c2a6911d0f2132f9185a3c8.jar /Users/godswood/Desktop/pawpal/PaWPal/build/intermediates/pre-dexed/debug/android-support-v7-appcompat-ce23957a305e187b582a49f3d7389771481d29a0.jar /Users/godswood/Desktop/pawpal/PaWPal/build/intermediates/pre-dexed/debug/classes-0df1e7b55f7a1cf804d7c324e4d8e5350156c424.jar /Users/godswood/Desktop/pawpal/PaWPal/build/intermediates/pre-dexed/debug/commons-lang3-3.3.2-414f8e20d93f4cd78deef61257feb20e410dc32e.jar /Users/godswood/Desktop/pawpal/PaWPal/build/intermediates/pre-dexed/debug/joda-time-2.3-e2f8ddd39c18a5b5f810a870e98c34e25539e6e9.jar /Users/godswood/Desktop/pawpal/PaWPal/build/intermediates/pre-dexed/debug/joda-time-2.3-javadoc-2b8389d156c40d0540abb1e521b4be4ba90b89b7.jar /Users/godswood/Desktop/pawpal/PaWPal/build/intermediates/pre-dexed/debug/joda-time-2.3-sources-ee3d5e4a6e2aceeeee41f9ab558b6a1430285670.jar /Users/godswood/Desktop/pawpal/PaWPal/build/intermediates/pre-dexed/debug/Parse-1.5.1-b7ce0ef98d2f79d618c5421f63a4845519bd4ced.jar 
    Error Code: 
    2 
    Output: 
    UNEXPECTED TOP-LEVEL EXCEPTION: 
    com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl; 
     at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594) 
     at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552) 
     at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533) 
     at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170) 
     at com.android.dx.merge.DexMerger.merge(DexMerger.java:188) 
     at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439) 
     at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287) 
     at com.android.dx.command.dexer.Main.run(Main.java:230) 
     at com.android.dx.command.dexer.Main.main(Main.java:199) 
     at com.android.dx.command.Main.main(Main.java:103) 

我的搖籃文件看起來像這樣:

apply plugin: 'com.android.application' 
configurations { 
    all*.exclude group: 'com.android.support', module: 'support-v4' 
} 
dependencies { 
    compile fileTree(dir: 'libs', include: '*.jar') 
    compile project(':appcompat_v7') 
} 

android { 
    compileSdkVersion 19 
    buildToolsVersion "19.1.0" 

    sourceSets { 
     main { 
      manifest.srcFile 'AndroidManifest.xml' 
      java.srcDirs = ['src'] 
      resources.srcDirs = ['src'] 
      aidl.srcDirs = ['src'] 
      renderscript.srcDirs = ['src'] 
      res.srcDirs = ['res'] 
      assets.srcDirs = ['assets'] 
     } 

     // Move the tests to tests/java, tests/res, etc... 
     instrumentTest.setRoot('tests') 

     // Move the build types to build-types/<type> 
     // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ... 
     // This moves them out of them default location under src/<type>/... which would 
     // conflict with src/ being used by the main source set. 
     // Adding new build types or product flavors should be accompanied 
     // by a similar customization. 
     debug.setRoot('build-types/debug') 
     release.setRoot('build-types/release') 
    } 
} 

如果您有任何想法,我很樂意聽到他們。我知道這裏有很多類似的問題,但沒有一個解決方案適用於我(悲傷的臉)。

+0

這個dex錯誤來自多次引用jar /庫。可能是這樣的一個場景:項目A引用項目B和支持庫,而項目B也引用支持庫。還沒有徹底檢查你的問題,但想給我2美分 – Machinarius

回答

1

在Android Studio中,您不需要像在Eclipse中那樣將appcompat庫作爲庫項目包含進來。相反,這種添加到您的模塊的dependencies的構建文件:

compile 'com.android.support:appcompat-v7:XXXX.+' 

其中XXXX是你compileSdkVersion。另外,我懷疑你在你的libs文件夾中有一個v4支持庫jar的副本(你得到它的類是多重定義的)。如果您像上面那樣包含appcompat lib,則根本不需要包含support-v4; appcompat依賴於它,構建系統將做正確的事情。所以繼續從你的libs文件夾中移除該jar。

+0

也許是因爲我不知道你的意思是我的模塊的構建文件,但這似乎不工作。刪除jar導致了很多錯誤,所以我把它放回去了。 –

相關問題