2

我試圖運行我的應用程序時遇到此問題。 我沒有在我的代碼中使用任何註釋,但仍然有。意外的頂級例外:com.android.dex.DexException:多個dex文件定義Landroid/support/annotation/AnimRes

my app build.gradle 

    apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 19 
    buildToolsVersion "21.1.2" 
    defaultConfig { 
     applicationId "mobi.greenon.greenon" 
     minSdkVersion 10 
     targetSdkVersion 21 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    productFlavors { 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile project(':facebook') 
    compile files('libs/android-async-http-1.4.6.jar') 
    compile 'com.google.android.gms:play-services:6.5.87' 
} 

我的facebook的build.gradle

apply plugin: 'com.android.library' 

repositories { 
    mavenCentral() 
} 

project.group = 'com.facebook.android' 

dependencies { 
    compile 'com.parse.bolts:bolts-android:1.1.4' 
    compile files('libs/android-support-v4.jar') 
} 

android { 
    compileSdkVersion 19 
    buildToolsVersion "21.1.2" 

    defaultConfig { 
     minSdkVersion 8 
     targetSdkVersion 8 
    } 

    lintOptions { 
     abortOnError false 
    } 

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

apply plugin: 'maven' 
apply plugin: 'signing' 

def isSnapshot = version.endsWith('-SNAPSHOT') 
def ossrhUsername = hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : "" 
def ossrhPassword = hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : "" 

task setVersion { 
    // The version will be derived from source 
    project.version = null 
    def sdkVersionFile = file('src/com/facebook/FacebookSdkVersion.java') 
    sdkVersionFile.eachLine{ 
     def matcher = (it =~ /(?:.*BUILD = \")(.*)(?:\".*)/) 
     if (matcher.matches()) { 
      project.version = matcher[0][1] 
      return 
     } 
    } 
    if (project.version.is('unspecified')) { 
     throw new GradleScriptException('Version could not be found.', null) 
    } 
} 

uploadArchives { 
    repositories.mavenDeployer { 
     beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } 

     repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") { 
      authentication(userName: ossrhUsername, password: ossrhPassword) 
     } 

     snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") { 
      authentication(userName: ossrhUsername, password: ossrhPassword) 
     } 

     pom.project { 
      name 'Facebook-Android-SDK' 
      artifactId = 'facebook-android-sdk' 
      packaging 'aar' 
      description 'Facebook Android SDK' 
      url 'https://github.com/facebook/facebook-android-sdk' 

      scm { 
       connection 'scm:[email protected]:facebook/facebook-android-sdk.git' 
       developerConnection 'scm:[email protected]:facebook/facebook-android-sdk.git' 
       url 'https://github.com/facebook/facebook-android-sdk' 
      } 

      licenses { 
       license { 
        name 'The Apache Software License, Version 2.0' 
        url 'https://github.com/facebook/facebook-android-sdk/blob/master/LICENSE.txt' 
        distribution 'repo' 
       } 
      } 

      developers { 
       developer { 
        id 'facebook' 
        name 'Facebook' 
       } 
      } 
     } 
    } 
} 

uploadArchives.dependsOn(setVersion) 

signing { 
    required { !isSnapshot && gradle.taskGraph.hasTask("uploadArchives") } 
    sign configurations.archives 
} 

task androidJavadocs(type: Javadoc) { 
    source = android.sourceSets.main.java.srcDirs 
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) 
} 

task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) { 
    classifier = 'javadoc' 
    from androidJavadocs.destinationDir 
} 

task androidSourcesJar(type: Jar) { 
    classifier = 'sources' 
    from android.sourceSets.main.java.sourceFiles 
} 

artifacts { 
    archives androidSourcesJar 
    archives androidJavadocsJar 
} 

afterEvaluate { 
    androidJavadocs.classpath += project.android.libraryVariants.toList().first().javaCompile.classpath 
} 

我的項目的build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules. 

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:1.0.0' 

     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
    } 
} 

我setting.gradle

include ':app', ':facebook' 

是 -

錯誤
Error:Execution failed for task ':app:dexDebug'. 
> com.android.ide.common.internal.LoggedErrorException: Failed to run command: 
    /home/eyal/android-sdk-linux/build-tools/21.1.2/dx --dex --no-optimize --output /home/eyal/Projects/GreenOn/Software/GreenOn/app/build/intermediates/dex/debug --input-list=/home/eyal/Projects/GreenOn/Software/GreenOn/app/build/intermediates/tmp/dex/debug/inputList.txt 
    Error Code: 
    2 
    Output: 
    UNEXPECTED TOP-LEVEL EXCEPTION: 
    com.android.dex.DexException: Multiple dex files define Landroid/support/annotation/AnimRes; 
     at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596) 
     at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554) 
     at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535) 
     at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171) 
     at com.android.dx.merge.DexMerger.merge(DexMerger.java:189) 
     at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454) 
     at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303) 
     at com.android.dx.command.dexer.Main.run(Main.java:246) 
     at com.android.dx.command.dexer.Main.main(Main.java:215) 
     at com.android.dx.command.Main.main(Main.java:106) 

如何解決? 謝謝,Eyal。

+0

看來你有多個實例s同一個圖書館。檢查您的項目並查找相同的lib依賴項 – Klawikowski

+0

刪除annotation.jar解決問題。 – eyal

回答

2

嘗試在編譯之前清理您的項目。這對我有效。

+0

這對我有用。 –

-1

添加到您的build.gradle

android{ 
.... 
packagingOptions { 
     exclude 'META-INF/DEPENDENCIES' 
     exclude 'META-INF/NOTICE' 
     exclude 'META-INF/LICENSE' 
     exclude 'META-INF/LICENSE.txt' 
     exclude 'META-INF/NOTICE.txt' 
    } 
} 
2

從libs文件夾中刪除Android的支持,v4.jar,我這樣做,它的作品

0

嘗試這個

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

}

dexOptions { 
    javaMaxHeapSize "4g" 
} 

defaultConfig { 
     multiDexEnabled true 
    } 

compile 'com.android.support:multidex:1.0.1' 

    MultiDex.install(getBaseContext());//Application class 
相關問題