2013-07-31 31 views
6

Próbuję użyć zestawu SDK Facebooka w projekcie w Android Studio. Postępuję zgodnie z krokiem 3 poradnika this. Kiedy próbuję uruchomić aplikację, otrzymuję komunikat "Gradle: wykonanie nie powiodło się dla zadania": FacebookApp: dexDebug "." błąd. Poniżej jest wyjście jeśli błądBłąd kompilacji Gradle podczas próby użycia Facebook SDK

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

Failed polecenie Run: C: \ android-sdk \ build-tools \ 18.0.0 \ dx.bat --dex --output C: \ Users \ Brandon \ AndroidStudioProjects \ FacebookAppProject \ FacebookApp \ build \ libs \ FacebookApp-debug.dex C: \ Users \ Brandon \ AndroidStudioProjects \ FacebookAppProject \ FacebookApp \ build \ classes \ debug C: \ Users \ Brandon \ AndroidStudioProjects \ FacebookAppProject \ FacebookApp \ build \ dependency-cache \ debug C: \ Users \ Brandon \ AndroidStudioProjects \ FacebookAppProject \ FacebookApp \ build \ exploded-bundles \ FacebookAppProjectLibliotekiFacebookUnspecified.aar \ classes.jar C: \ Users \ Brandon \ AndroidStudioProjects \ FacebookAppProject \ FacebookApp \ build \ exploded-bundles \ FacebookAppProjectLibrariesFacebookUnspeci fied.aar \ libs \ android-support-v4.jar C: \ android-sdk \ dodatki \ android \ m2repository \ com \ android \ support \ support-v4 \ 13.0.0 \ support-v4-13.0.0.jar Kod błędu: Wyjście: WYJĄTKOWY WYJĄTKOWY POZIOM WYJĄTKOWY: java.lang.IllegalArgumentException: already added: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat $ AccessibilityServiceInfoIcsImpl; na com.android.dx.dex.file.ClassDefsSection.add (ClassDefsSection.java:123) na com.android.dx.dex.file.DexFile.add (DexFile.java:163) na com.android. dx.command.dexer.Main.processClass (Main.java: 490) na com.android.dx.command.dexer.Main.processFileBytes (Main.java:459) na com.android.dx.command.dexer. Main.access 400 USD (Main.java:67) na com.android.dx.command.dexer.Main $ 1.processFileBytes (Main.java:398) na com.android.dx.cf.direct.ClassPathOpener.processArchive (ClassPathOpener.java:245) na com.android.dx.cf.direct.ClassPathOpener.processOne (ClassPathOpener.java:131) na com.android.dx.cf.direct.ClassPathOpener.process (ClassPathOpener.java:109) na com.android.dx .command.dexer.Main.processOne (Main.java:422) na com.android.dx.command.dexer.Main.processAllFiles (Main.java:333) na com.android.dx.command.dexer.Main .run (Main.java:209) na com.android.dx.command.dexer.Main.main (Main.java:174) na com.android.dx.command.Main.main (Main.java:91) 1 błąd; przerywanie

Oto build.gradle dla modułu facebook:

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'] 
     } 
    } 
} 

A build.gradle dla projektu:

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 
    } 
} 

Czy robię coś źle?

Odpowiedz

16

Dodajesz 2 razy bibliotekę wsparcia dla Androida, powodując konflikt korespondencji seryjnej. Twój główny projekt odnosi się do biblioteki maven z 'com.android.support:support-v4:13.0.+', a twój projekt na Facebooku odnosi się do niej z files('libs/android-support-v4.jar'). Gradle nie może rozwiązywać konfliktów między lokalnymi plikami jar, więc musisz odwoływać się do nich za pośrednictwem programu maven.

zmodyfikować sekcję dependencies swojego build.gradle Facebooku do:

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

i wszystko powinno działać.

+1

Jeśli na początku to nie działa, (tylko w Androidzie) Przejdź do Plik> Unieważnij pamięć podręczną/Uruchom ponownie> następnie "Unieważnij i uruchom ponownie" –

+0

@Greg: Moja biblioteka ma plik 'android-support-v4.jar' . Tak więc w 'build.gradle' tej biblioteki powinna pozostać ta linia' compile fileTree (dir: 'libs', include: '* .jar') 'lub nie, jeśli dodasz' Library Depency' przez maven, wybierz 'Android-support -v4'? –

1

W Androidzie, w ten sposób dołączam bibliotekę pomocy i pakiet SDK do Facebooka. Obsługuję 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

Miałem podobny problem i było to zwykłe niedopatrzenie z mojej strony. Miałem sprzeczne wersje com.android.tools.build:gradle:1.1.2 i 1.1.1 w dwóch różnych plikach gradle.build.

app/gradle.build

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

najwyższego poziomu gradle.build

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

I wykomentowane linii w moim projekcie w gradle.build pliku, prowadził gradlew clean z linii poleceń, wznowiona Android Studio a następnie porządek został przywrócony we wszechświecie.

Powiązane problemy