2013-07-31 8 views
6

Ich versuche, das Facebook SDK in einem Projekt in Android Studio zu verwenden. Ich folge Schritt 3 von this Tutorial. Wenn ich versuche, die App auszuführen, bekomme ich eine "Gradle: Ausführung fehlgeschlagen für Aufgabe": FacebookApp: dexDebug '. " Error. Unten ist der Ausgang, wenn der FehlerGradle Buildfehler beim Versuch, Facebook SDK zu verwenden

Gradle: Execution failed for task ':FacebookApp:dexDebug'. 

fehlgeschlagen Befehl auszuführen: C: \ android-sdk \ build-tools \ 18.0.0 \ dx.bat --dex --output C: \ Users \ Brandon \ AndroidStudioProjekte \ FacebookAppProject \ FacebookApp \ build \ libs \ FacebookApp-debug.dex C: \ Benutzer \ Brandon \ AndroidStudioProjekte \ FacebookAppProject \ FacebookApp \ build \ classes \ debug C: \ Benutzer \ Brandon \ AndroidStudioProjects \ FacebookAppProject \ FacebookApp \ build \ dependency-cache \ debug C: \ Benutzer \ Brandon \ AndroidStudioProjekte \ FacebookAppProject \ FacebookApp \ build \ exploded-bundles \ FacebookAppProjectLibrariesFacebookUnspecified.aar \ classes.jar C: \ Benutzer \ Brandon \ AndroidStudioProjects \ FacebookAppProject \ FacebookApp \ build \ exploded-bundles \ FacebookAppProjectLibrariesFacebookUnspeci fied.aar \ libs \ android-support-v4.jar C: \ android-sdk \ extras \ android \ m2repository \ com \ android \ support \ support-v4 \ 13.0.0 \ support-v4-13.0.0.jar Fehlercode: Ausgabe: UNERWARTETE AUSNAHME: java.lang.IllegalArgumentException: bereits hinzugefügt: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat $ AccessibilityServiceInfoIcsImpl; bei com.android.dx.dex.file.ClassDefsSection.add (ClassDefsSection.java:123) bei com.android.dx.dex.file.DexFile.add (DexFile.java:163) bei com.android. dx.command.dexer.Main.processClass (Main.java:490) bei com.android.dx.command.dexer.Main.processFileBytes (Main.java:459) bei com.android.dx.command.dexer. Main.access $ 400 (Main.java:67) bei com.android.dx.command.dexer.Main $ 1.processFileBytes (Main.java:398) bei com.android.dx.cf.direct.ClassPathOpener.processArchive (ClassPathOpener.java:245) bei com.android.dx.cf.direct.ClassPathOpener.processOne (ClassPathOpener.java:131) bei com.android.dx.cf.direct.ClassPathOpener.process (ClassPathOpener.java:109) bei com.android.dx .command.dexer.Main.processOne (Main.java:422) bei com.android.dx.command.dexer.Main.processAllFiles (Main.java:333) bei com.android.dx.command.dexer.Main .run (Main.java:209) bei com.android.dx.command.dexer.Main.main (Main.java:174) bei com.android.dx.command.Main.main (Main.java:91) 1 Fehler;

buildscript { 
    repositories { 
     maven { url 'http://repo1.maven.org/maven2' } 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.5.+' 
    } 
} 

apply plugin: 'android-library' 

dependencies { 
    compile files('libs/android-support-v4.jar') 
} 

android { 
    compileSdkVersion 18 
    buildToolsVersion "18.0.0" 

    defaultConfig { 
     minSdkVersion 7 
     targetSdkVersion 16 
    } 

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

Und die build.gradle für das Projekt: Hier wird die build.gradle für die Facebook-Modul

Abbruch

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

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile 'com.android.support:support-v4:13.0.+' 
    compile project(':libraries:facebook') 
} 

android { 
    compileSdkVersion 18 
    buildToolsVersion "18.0.0" 

    defaultConfig { 
     minSdkVersion 7 
     targetSdkVersion 16 
    } 
} 

Mache ich etwas falsch?

Antwort

16

Sie fügen die Android-Support-Bibliothek zweimal hinzu, was zu einem Dex-Merge-Konflikt führt. Ihr Hauptprojekt bezieht sich auf die maven-Bibliothek mit 'com.android.support:support-v4:13.0.+' und Ihr Facebook-Projekt bezieht sich darauf mit files('libs/android-support-v4.jar'). Gradle kann Konflikte zwischen lokalen JAR-Dateien nicht lösen, daher müssen Sie sich über Maven auf diese beziehen.

Ändern Sie den dependencies Abschnitt Ihrer Facebook build.gradle zu:

dependencies { 
    compile 'com.android.support:support-v4:13.0.+' 
} 

und sollte alles funktionieren.

+1

Wenn dies zunächst nicht funktioniert, (nur in Android Studio) Gehen Sie zu Datei> Caches ungültig machen/Neustart> dann "Invalidieren und neustarten" –

+0

@Greg: Meine Bibliothek haben 'android-support-v4.jar' Datei . Also sollte in 'build.gradle' dieser Bibliothek diese Zeile' compile fileTree (dir: 'libs', include: '* .jar') 'bleiben oder nicht, wenn' Library Depency' über Maven hinzugefügt wird, wählen Sie 'Android-support -v4'? –

1

In android Studio, das ist, wie ich eine Support-Bibliothek und Facebook SDK einbinden. Ich unterstütze API 15+.

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'fr.avianey:facebook-android-api:[email protected]' 
    compile 'com.android.support:support-v13:20.0.0' 
    ... 
} 
0

Ich hatte ein ähnliches Problem und es war einfach nur Aufsicht auf meiner Seite. Ich hatte in zwei verschiedenen gradle.build-Dateien widersprüchliche Versionen von com.android.tools.build:gradle:1.1.2 und 1.1.1.

app/gradle.build

dependencies { 
    ... 
    compile 'com.android.tools.build:gradle:1.1.2' 
    ... 
} 

Top-Level-gradle.build

dependencies { 
     classpath 'com.android.tools.build:gradle:1.1.0' 
    } 

ich in meinem Projekt aus der Linie kommentierte gradle.build Datei, gradlew clean von der Kommandozeile lief, neu gestartet Android Studio und dann wurde Ordnung im Universum wiederhergestellt.

Verwandte Themen