多个dex文件在android studio中定义了Landroid / support / v4 /

时间:2014-04-24 08:55:03

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

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

但至于ActionBarSherlock库,我遇到了很多问题。

第一期是热门问题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.gradle main 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 第二期,但仍然出现第一期 Multiple dex files define错误。

我阅读了很多主题,但现在无法解决第一期

请帮助我,

谢谢,

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

我使用Android studio 0.5.5

修改

build.gradle的{​​p> 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.gradle的{​​{1}}:

project
编辑后的buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.9.+' } } 的{​​p> build.gradle

main module

我在下面遇到了这个错误:

enter image description here

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

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

编辑2 当我这样说时:

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

仍然出现第一期 repositories { mavenCentral() } dependencies { compile fileTree(dir: 'libs', include: '*.jar') compile 'com.google.android.gms:play-services:+' } 错误。

我现在想要的是如何通过Multiple dex files define成功添加com.google.android.gms:play-services

请帮助我,

谢谢,

更新

按照以下步骤操作:

  • 通过Maven将库放入主模块的Mavenbuild.gradle

  • compile 'com.google.android.gms:play-services:+'

  • Restart Android Studio

不再再出现此错误。

2 个答案:

答案 0 :(得分:2)

太奇怪了,

当我设置我的依赖项时:

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

我仍然遇到第一期 Multiple dex files define错误。

但是按照以下步骤操作后:

  • 通过Gradle将库放入主模块的build.gradlecompile 'com.google.android.gms:play-services:+'

  • Restart Android Studio

  • Sync project with gradle

我不再收到此错误。

答案 1 :(得分: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导致重复。