【问题标题】:Multiple dex files define Landroid/support/v13/app多个dex文件定义Landroid/support/v13/app
【发布时间】:2014-06-10 07:02:54
【问题描述】:

我正在尝试在 Android Studio 中编译我的项目,但出现以下错误

UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dex.DexException: Multiple dex files define Landroid/support/v13/app/FragmentCompat$FragmentCompatImpl;
      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)

跑步

$ gradle -q dependencies

产生以下结果

compile - Classpath for compiling the main sources.
+--- project :facebookSDK
+--- project :stripe
+--- project :paymentKitLibrary
+--- com.google.code.gson:gson:2.2.4
+--- com.google.android.gms:play-services:4.3.23
+--- com.android.support:appcompat-v7:+ -> 19.1.0
+--- com.squareup.picasso:picasso:2.2.0
+--- com.loopj.android:android-async-http:1.4.4
\--- com.android.support:support-v13:+ -> 19.1.0
     \--- com.android.support:support-v4:19.1.0

这是我的 gradle 依赖项

dependencies {
    compile project(':facebookSDK')
    compile project(':stripe')
    compile project(':paymentKitLibrary')
    compile 'com.google.code.gson:gson:2.2.4'
    compile ('com.google.android.gms:play-services:4.3.23'){
        exclude module: 'support-v4'
    }
    compile ('com.android.support:appcompat-v7:+'){
        exclude module: 'support-v4'
    }
    compile 'com.squareup.picasso:picasso:2.2.0'
    compile 'com.loopj.android:android-async-http:1.4.4'
    compile "com.android.support:support-v13:+"
    compile files('libs/crashlytics.jar')
    compile files('libs/libGoogleAnalyticsV2.jar')
    compile files('libs/MobileAppTracker.jar')
    compile files('libs/twitter4j-core-3.0.5.jar')
}

我不明白冲突来自哪里。它是否可能来自其中一个 jar 文件?到底有什么问题?

谢谢

【问题讨论】:

    标签: android gradle dependencies dependency-management android-gradle-plugin


    【解决方案1】:

    我认为问题在于“android.support.v13.app.FragmentCompat$FragmentCompatImpl”类在依赖项中声明了两次。此类包含在以下两个依赖项中:

    compile ('com.android.support:appcompat-v7:+'){
        exclude module: 'support-v4'
    }
    
    compile "com.android.support:support-v13:+"
    

    “support-v13”库已经包含“appcompat-v7”库。

    尝试从“build.gradle”文件中删除“appcompat-v7”库,它应该可以编译。

    // *** remove this ****
    compile ('com.android.support:appcompat-v7:+'){
        exclude module: 'support-v4'
    }
    

    希望这会有所帮助。

    【讨论】:

    • 谢谢,我试过了,但如果我删除它会在themes.xml 中引发各种编译错误,例如<style name="myApp.ActionBar" parent="@style/Widget.AppCompat.ActionBar"> 给出cannot resolve symbol
    • ““support-v13”库已经包含“appcompat-v7”库。” - 不,不是的。 support-v13 包含 support-v4 的内容,而不是 appcompat-v7。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多