studio - integrar sdk facebook en android
Error de compilación de Gradle al intentar usar Facebook SDK (3)
Estoy tratando de usar el SDK de Facebook en un proyecto en Android Studio. Estoy siguiendo el paso 3 de este tutorial. Cuando trato de ejecutar la aplicación, obtengo un "Gradle: ejecución fallida para la tarea": FacebookApp: dexDebug ''. " error. A continuación se muestra el resultado si el error
Gradle: Execution failed for task '':FacebookApp:dexDebug''.
Error al ejecutar el comando: 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 / explosion-bundles / FacebookAppProjectLibrariesFacebookUnspecified.aar / classes.jar C: / Users / Brandon / AndroidStudioProjects / FacebookAppProject / FacebookApp / build / explosion-bundles / FacebookAppProjectLibrariesFacebookUnspecified.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 Código de error: 1 Salida: EXCEPCIÓN DE NIVEL SUPERIOR INESPERADA: java.lang.IllegalArgumentException : ya agregado: Landroid / support / v4 / accessibilityservice / AccessibilityServiceInfoCompat $ AccessibilityServiceI nfoIcsImpl; en com.android.dx.dex.file.ClassDefsSection.add (ClassDefsSection.java:123) en com.android.dx.dex.file.DexFile.add (DexFile.java:163) en com.android.dx.command .dexer.Main.processClass (Main.java:490) en com.android.dx.command.dexer.Main.processFileBytes (Main.java:459) en com.android.dx.command.dexer.Main.access $ 400 ( Main.java:67) en com.android.dx.command.dexer.Main $ 1.processFileBytes (Main.java:398) en com.android.dx.cf.direct.ClassPathOpener.processArchive (ClassPathOpener.java:245) en com.android.dx.cf.direct.ClassPathOpener.processOne (ClassPathOpener.java:131) en com.android.dx.cf.direct.ClassPathOpener.process (ClassPathOpener.java:109) en com.android.dx.command. dexer.Main.processOne (Main.java:422) en com.android.dx.command.dexer.Main.processAllFiles (Main.java:333) en com.android.dx.command.dexer.Main.run (Main. java: 209) en com.android.dx.command.dexer.Main.main (Main.java:174) en com.android.dx.command.Main.main (Main.java:91) 1 error; abortar
Aquí está el build.gradle para el módulo de 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'']
}
}
}
Y el build.gradle para el proyecto:
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
}
}
¿Estoy haciendo algo mal?
Está agregando la biblioteca de soporte de Android dos veces, lo que resulta en un conflicto de fusión dex. Su proyecto principal se refiere a la biblioteca maven con ''com.android.support:support-v4:13.0.+''
y su proyecto de Facebook se refiere a ella con files(''libs/android-support-v4.jar'')
. Gradle no puede resolver conflictos entre archivos jar locales, por lo que debe consultarlos a través de maven.
Modifique la sección de dependencies
de su build.gradle de Facebook a:
dependencies {
compile ''com.android.support:support-v4:13.0.+''
}
y todo debería funcionar
En android studio, así es como incluyo una biblioteca de soporte y Facebook SDK. Apoyo la API 15+.
dependencies {
compile fileTree(dir: ''libs'', include: [''*.jar''])
compile ''fr.avianey:facebook-android-api:+@aar''
compile ''com.android.support:support-v13:20.0.0''
...
}
Tuve un problema similar y fue simplemente un descuido de mi parte. Tenía versiones conflictivas de com.android.tools.build:gradle:1.1.2 y 1.1.1 dentro de dos archivos gradle.build diferentes.
app / gradle.build
dependencies {
...
compile ''com.android.tools.build:gradle:1.1.2''
...
}
gradle.build de nivel superior
dependencies {
classpath ''com.android.tools.build:gradle:1.1.0''
}
gradle.build
la línea en el archivo gradle.build
mi proyecto, ejecuté gradlew clean
desde la línea de comandos, reinicié Android Studio y luego el orden se restauró en el universo.