Agregar archivos locales .aar a la creación de Gradle con “flatDirs” no funciona

Soy consciente de esta pregunta: Agregar archivos .aar locales a mi comstackción de gradle, pero la solución no me funciona.

Traté de agregar esta statement al nivel superior de mi archivo build.gradle :

 repositories { mavenCentral() flatDir { dirs 'libs' } } 

También puse el archivo slidingmenu.aar en /libs y lo slidingmenu.aar referencia en la sección de dependencies : compile 'com.slidingmenu.lib:slidingmenu:1.0.0@aar' pero no funcionó en absoluto.

Intenté compile files('libs/slidingmenu.aar') también pero sin suerte.

¿Qué me estoy perdiendo? ¿Algunas ideas?

PS Android Studio 0.8.2

Sobre la base de la respuesta de Josiah, aquí es cómo lo hice funcionar.

Siga sus instrucciones (en edición) ( Archivo -> Nuevo-> Nuevo módulo -> Importar .JAR / .AR ) e importe su .AR.

Luego, en su proyecto build.gradle (no en el nivel superior uno, el que está bajo ‘app’) agregue lo siguiente (en la sección de dependencias):

 dependencies { compile project(':Name-Of-Your-Project') } 

Nota: Name-Of-Your-Project debe coincidir con el nombre de la carpeta que se agregó después de importar el archivo AAR (en el mismo nivel que la app/.idea en la carpeta de nivel más alto). O para decirlo de otra manera …

 Mi aplicación
   .idea
   aplicación
   build.gradle (aquí es donde agregar el proyecto de comstackción (': ProjectName') a la sección de dependencia)
   ProjectName (agregado automáticamente después de la importación, haciendo coincidir el nombre de su archivo aar)
   construir
   gradle
   etc

Esto funcionó para mí con Android Studio 0.8.0. No olvide sincronizar gradle (utilizando el botón de la barra de herramientas o en Archivo-> Sincronizar ) después de hacer esto.

(Gracias a Josiah por ponerme en la dirección correcta)

(Nota: antes de esto traté de agregarlo a la carpeta libs, tratando de manipular el build.gradle nivel build.gradle y el build.gradle nivel de aplicación, pero nada de eso funcionó para mis archivos aars – jar’s funcionará bien, pero no los archivos aar)

Actualización : As @ amram99 mencionado, el problema se ha solucionado a partir del lanzamiento de Android Studio v1.3.

Probado y verificado con las especificaciones a continuación

  • Android Studio v1.3
  • Gradle plugin v1.2.3
  • Gradle v2.4

Lo que funciona ahora

  • Ahora puede importar un archivo aar local a través de la opción Archivo> Nuevo> Nuevo módulo> Importar .JAR / .AAR en Android Studio v1.3

  • Sin embargo, la respuesta a continuación es válida y efectiva, independientemente de los cambios de Android Studio, ya que está basada en scripting gradle.


Respuesta anterior: en una actualización reciente, las personas de Android rompieron la inclusión de archivos aar locales a través de la opción del menú agregar módulo nuevo de Android Studio. Verifique el problema que se encuentra aquí. Independientemente de cualquier cosa que entre y salga de la lista de características de IDE, el siguiente método funciona cuando se trata de trabajar con archivos aar locales. (Probado hoy):

Coloque el archivo aar en el directorio libs (créelo si es necesario) y luego agregue el siguiente código en su build.gradle:

 dependencies { compile(name:'nameOfYourAARFileWithoutExtension', ext:'aar') } repositories{ flatDir{ dirs 'libs' } } 

Editar: La forma correcta (actualmente) de usar un archivo AAR local como dependencia de comstackción es usar el asistente de importación de módulos (Archivo | Nuevo Módulo | Importar .JAR o .AAR) que automáticamente agregará .aar como un módulo de biblioteca en tu proyecto

Vieja respuesta

Prueba esto:

 allprojects { repositories { jcenter() flatDir { dirs 'libs' } } } ... compile(name:'slidingmenu', ext:'aar') 

Lo tengo trabajando en Android Studio 2.1. Tengo un módulo llamado “Native_Ads” que se comparte en varios proyectos.

Primero, creé un directorio en mi módulo Native_ads con el nombre ‘aars’ y luego coloqué el archivo aar ahí.

Estructura de directorios:

 libs/ aars/ <-- newly created src/ build.gradle etc 

Entonces, el otro cambia:

Archivo Gradle de nivel superior:

 allprojects { repositories { jcenter() // For module with aar file in it flatDir { dirs project(':Native_Ads').file('aars') } } } 

Archivo build.gradle del módulo de aplicación: - sin cambios

Archivo Settings.gradle (para incluir el módulo):

 include ':app' include 'Native_Ads' project(':Native_Ads').projectDir = new File(rootProject.projectDir, '../path/to/Native_Ads') 

Archivo Gradle para el módulo Native_Ads:

 repositories { jcenter() flatDir { dirs 'aars' } } dependencies { compile(name:'aar_file_name_without_aar_extension', ext:'aar') } 

Eso es. Limpiar y construir

La forma más fácil ahora es agregarlo como un módulo

enter image description here

Esto creará un nuevo módulo que contiene el archivo aar, por lo que solo tiene que incluir ese módulo como una dependencia después

Puedes hacerlo de esta manera. Necesita ir en el formato maven:

 repositories { maven { url uri('folderName')} } 

Y luego su AAR necesita ir en una estructura de carpetas para una identificación de grupo “com.example”:

 folderName/ com/ example/ verion/ myaar-version.aar 

Luego referencia como una dependencia:

compile 'com.example:myaar:version@aar'

Donde la version es la versión de su archivo aar (es decir, 3.0, etc.)

Para cualquiera que tenga este problema desde Android Studio 1.4, lo tengo que trabajar creando un módulo dentro del proyecto que contenga 2 cosas.

  1. build.gradle con los siguientes contenidos:

    configurations.create("default")

    artifacts.add("default", file('facebook-android-sdk-4.7.0.aar'))

  2. el archivo aar (en este ejemplo ‘facebook-android-sdk-4.7.0.aar’)

Luego incluya la nueva biblioteca como una dependencia del módulo. Ahora puede usar un aar construido sin incluir las fonts dentro del proyecto.

Crédito a Facebook por este truco. Encontré la solución al integrar el Android SDK en un proyecto.

¡En mi caso, ninguna de las respuestas anteriores funcionó! ya que tenía diferentes productFlavors solo añadiendo repositories{ flatDir{ dirs 'libs' } }

¡no funcionó! Terminé especificando la ubicación exacta del directorio libs :

 repositories{ flatDir{ dirs 'src/main/libs' } 

}

Supongo que uno debería introducir flatDirs así cuando hay diferentes productosFlavors en build.gradle

Esta es mi estructura, y cómo resuelvo esto:

MyProject / app / libs / mylib-1.0.0.aar

MyProject / app / myModulesFolder / myLibXYZ

En build.gradle

de Project / app / myModulesFolder / myLibXYZ

He puesto esto:

 repositories { flatDir { dirs 'libs', '../../libs' } } compile (name: 'mylib-1.0.0', ext: 'aar') 

Hecho y funcionando bien, mi submódulo XYZ depende de somelibrary del módulo principal.