【问题标题】:Multiple dex files define Landroid/support/v4/ in android studio多个dex文件在android studio中定义了Landroid/support/v4/
【发布时间】:2014-06-09 11:05:45
【问题描述】:

我可以integrate (add & work) with many libraries

但是对于ActionBarSherlock库,我有很多问题。

First Issue是热门问题Multiple dex files define

我知道是 duplicated android-support-v4.jar 引起的,但我现在无法解决这个问题:

Error:Execution failed for task ':fitness:dexDebug'.

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)

我关注了same error 中的答案。它使用了:

dependencies {
    compile('...') {
      exclude module: 'support-v4'
    }

    compile 'com.android.support:support-v4:18.0.+'
}

但我收到了第二期unsupported Gradle DSL method found: 'exclude()'! 错误。 因此我将build.gradlemain module 更改为这样:

//configurations {
//    all*.exclude group: 'com.android.support', module: 'support-v4'
//}

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':google-play-services')
    compile files('/google-play-services/libs/google-play-services.jar')
    compile (project(':actionbarsherlock')) {
        exclude(module: 'support-v4')
    }
    compile 'com.android.support:support-v4:18.0.+'
}

Solved Second Issue,但仍然得到First Issue Multiple dex files define 错误。

我阅读了很多主题,但现在无法解决First Issue

请帮帮我,

谢谢,

p/s : 我可以与 Gradle 成功同步,但运行时出现上述错误。

我使用的是 Android Studio 0.5.5

编辑

build.gradle of ActionBarSherlock,只有一个android-support-v4.jar

dependencies {
        compile fileTree(dir: 'libs', include: '*.jar')
}

setting.gradle 像这样:

include ':fitness', ':google-play-services',':actionbarsherlock'

@Garbriele:我更新了新问题,显示build.gradle of projectbuild.gradle of main module build.gradleproject

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.9.+'
    }
}

main modulebuild.gradle 编辑后:

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar' // Get following error in this line
} 

我在下面收到此错误:

好的,感谢@Garbriele 的评论,我已经用这个解决了这个问题:

repositories {
            mavenCentral()
        }
dependencies {
        compile fileTree(dir: 'libs', include: '*.jar')
        compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar' // Get following error in this line
    } 

EDIT 2当我这样说时:

repositories {
            mavenCentral()
        }
dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile 'com.google.android.gms:play-services:+'
}

仍然得到 First Issue Multiple dex files define 错误。

我现在想要的是如何通过Maven成功添加com.google.android.gms:play-services库,

请帮帮我,

谢谢,

更新

按照以下步骤操作后:

  • 通过 Maven 将库放在主模块的build.gradle 中:compile 'com.google.android.gms:play-services:+'

  • Restart Android Studio

  • Sync project with gradle

不再出现此错误。

【问题讨论】:

  • 您可以使用 compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar' 和 compile 'com.google.android.gms:play-services:4.3.23' 来删除本地库。
  • 当我输入compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'时(这意味着通过maven下载这个库)。我的 gradle 无法再同步 Gradle project sync failed ...。你能帮我解决这个问题吗?
  • 您是否将“repositories { mavenCentral() }”添加到您的 build.gradle 中?
  • 我很难理解你的问题。您能否对其进行编辑并突出显示您当前遇到的问题?我对您遇到问题但后来解决的部分感到困惑。
  • @ScottBarta :更新了新问题,让您了解更多细节。仍然得到主要错误作为问题的标题。请告诉我解决方案?

标签: android android-studio android-support-library android-gradle-plugin build.gradle


【解决方案1】:

我的 libs 目录中有重复的库:

$ ls -la libs/
total 80
drwxr-xr-x   5  wheel    170 25 Sep 22:09 .
drwxr-xr-x  10  wheel    340 25 Sep 22:07 ..
-rw-r--r--   1  wheel   3736 25 Sep 21:36 ApiComponent.jar
-rw-r--r--   1  wheel  28741 25 Sep 21:36 DependencyService.jar
-rw-r--r--   1  wheel   3736 25 Sep 22:09 classes.jar

删除 classes.jar 对我有用。我修改了我的 DependencyService 项目以生成 DependencyService.jar 而不是 classes.jar 导致重复。

【讨论】:

    【解决方案2】:

    好奇怪,

    当我像这样设置我的依赖项时:

    repositories {
                mavenCentral()
            }
    dependencies {
        compile fileTree(dir: 'libs', include: '*.jar')
        compile 'com.google.android.gms:play-services:+'
    }
    

    我仍然收到 First Issue Multiple dex files define 错误。

    但是在执行了这些步骤之后:

    • 通过 Gradle 将库放在主模块的build.gradle 中:compile 'com.google.android.gms:play-services:+'

    • Restart Android Studio

    • Sync project with gradle

    我不再收到此错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-26
      • 2018-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多