A condición de que la dependencia de grado sea AAR no JAR

Tengo un problema donde estoy tratando de incluir una biblioteca en mi proyecto llamado ParseLoginUI .

El problema es que utiliza la etiqueta proporcionada en lugar de compilar. Creo que la etiqueta proporcionada significa que el proyecto necesita proporcionar esta dependencia para que la biblioteca funcione en lugar de que esta biblioteca compile las propias bibliotecas.

Así que en mi biblioteca de Android hace referencia al SDK de Facebook así.

  provided 'com.facebook.android:facebook-android-sdk:4.0.1' 

Entonces en mi móvil / build.gradle que es mi módulo principal compile el Facebook sdks así.

 compile 'com.facebook.android:facebook-android-sdk:4.0.1' 

He estado siguiendo la guía para instalar esta biblioteca y así es como usted está destinado a hacerlo. Aquí está la advertencia que consigo que me para de compilar lanzado por el archivo de ParseLoginUI/build.gradle (el que lo proporciona).

 Warning:Project ParseLoginUI: provided dependencies can only be jars. com.facebook.android:facebook-android-sdk:aar:4.0.1 is an Android Library. 

La documentación de esta biblioteca tiene una corrección que es:

Si está utilizando gradle 1.1.0 o superior, puede encontrarse con "Advertencia: Project ParseLoginUI: las dependencias proporcionadas sólo pueden ser frascos". Es un problema abierto de la herramienta de compilación androide gradle. Actualmente, el workround utiliza gradle 1.0.0.

Lo justo, pero no quiero bajar mi gradle (actualmente en ejecución v1.2.3) sólo para resolver este problema. Debe haber una manera alrededor de esto o una mejor manera de hacerlo.

Mi pregunta

¿Cómo puedo incluir el SDK de Facebook tanto en el módulo de biblioteca como en mi módulo principal?

Usted ya ha mencionado que es un problema abierto en Gradle. Si está utilizando ParseLoginUI como módulo de biblioteca. Simplemente cambie el archivo build.gradle en ParseLoginUI.

  provided 'com.facebook.android:facebook-android-sdk:4.0.1' to compile 'com.facebook.android:facebook-android-sdk:4.0.1' 

Intente esto: http://www.labouisse.com/how-to/2014/07/28/gradle-provided-scope-and-intellij/

Básicamente imita la implementación proporcionada.

De acuerdo con este tema , debería ser posible hacer con Gradle plugin 1.3.0-beta3 . Puede que tenga que actualizar las herramientas de construcción a la versión 23.0.0 rc1 o superior.

Después de intentar y error, encontré la solución …

En primer lugar, AAR significa la biblioteca de archivos de android, que no es un JAR. Busqué algo llamado facebook-android-sdk-4.0.1.jar , pero no facebook-android-sdk-4.0.1.jar suerte.

El truco es descargar el código de facebook y agregarlo como un módulo. Haciendo eso, funciona perfectamente y puedes usar gradle 1.2.3 con ParseLoginUI.

Vaya aquí: https://developers.facebook.com/docs/android/downloads

Descargar: https://developers.facebook.com/resources/facebook-android-sdk-4.0.1.zip Descomprimirlo.

Vaya a su propio proyecto. -Remove en su ParseLoginUI gradle la referencia a Parse

Presione FILE, NEW, IMPORT MODULE.

Seleccione una carpeta llamada facebook que está dentro de la cremallera que no comprimió.

Llame a ese módulo facebook-android-sdk-4.0.1.

Ahora añada en su parseloginui una dependencia a ese módulo, usando:

 compile project(':facebook-android-sdk-4.0.1') 

También tienes que copiar un archivo desde el zip que descargaste a la nueva carpeta del módulo, el archivo es gradle.properties. El que tiene:

 ANDROID_BUILD_MIN_SDK_VERSION=9 ANDROID_BUILD_TARGET_SDK_VERSION=21 ANDROID_BUILD_TOOLS_VERSION=21.1.2 ANDROID_BUILD_SDK_VERSION=21 

Eso es todo.

Presione SYNCHRONIZE y cruce los dedos.

Trabajé en mi caso después de varias horas jugando con gradle and android studio. Avísame si lo consigues. Si tiene problemas de referencia (tuve), utilice FILE, PROJECT STRUCTURE para agregar las referencias de jar a sus módulos correctamente. (Yo los escribí manualmente y parece que fue un error en mis referencias de análisis, probablemente un camino o símbolo, no lo sé. Hacerlo usando la interfaz de usuario de android studio solucionará el problema). BTW, puede utilizar una versión de analizar en ParseLoginUI y otra más reciente en su proyecto (no probé que para la versión de facebook).

Esto es lo que tengo en mi archivo ParseLoginUI gradle:

 compile 'com.parse.bolts:bolts-android:1.2.0' compile 'com.android.support:support-v4:22.0.0' compile project(':facebook-android-sdk-4.0.1') compile files('libs/Parse-1.9.1.jar') compile files('libs/ParseFacebookUtilsV4-1.9.1.jar') 

Y esto es lo que tengo en mi aplicación gradle:

 compile 'com.google.android.gms:play-services:7.5.0' compile project(':facebook-android-sdk-4.0.1') compile 'com.parse.bolts:bolts-android:1.2.0' compile files('libs/Parse-1.9.2/Parse-1.9.2.jar') compile files('libs/Parse-1.9.2/ParseFacebookUtilsV4-1.9.2.jar') compile project(':ParseLoginUI') 

Nota: Uso Gradle versión 2.4 y plugin de Android versión 1.2.3. Selc que en FILE, ESTRUCTURA DE PROYECTO, PROYECTO.

Buena suerte.

Puede probar esta sintaxis:

Proporcionado (nombre: "", ext: 'aar')

Asegúrese de que su build.gradle principal tenga la ruta de acceso o el reporte de maven en el paquete aar que desea proporcionar.

en lugar de eso,

  1. Clone ParseLoginUI desde aquí

  2. Importe ParseLoginUI como un módulo e incluya estos en gradle

     compile project(':ParseLoginUI') compile 'com.facebook.android:facebook-android-sdk:4.0.1' 

Espero que esto ayude

  • Parse.com Parámetros de inicio de sesión no válidos
  • ParseObject pinInBackground devolver null objectId
  • Cómo combinar varias consultas de análisis a la vez
  • Cómo recibir notificaciones de push parse en un dispositivo android usando parse.com
  • Xamarin falla aplicación Android en el modo de liberación (Parse.Android SDK)
  • Parse.com - Enviar duplicado después de reinstalar la aplicación
  • Android: la adición de vistas a las imágenes no se actualiza - onClick
  • Las operaciones de la matriz a veces lanzan 'La operación no es válida después de la operación anterior'
  • ¿Cómo cambiar el icono de notificación de Parse push en android?
  • "Se debe especificar al menos un campo de ID (installationId, deviceToken) en esta operación" parse
  • En Parse, ¿puedo obligar a ParseObjects relacionado a obtenerlo?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.