Agregar archivos .aar locales a la generación de Gradle utilizando "flatDirs" no funciona

Soy consciente de esta pregunta: Agregar archivos .aar locales a mi compilación gradle pero la solución no funciona para mí.

He intentado agregar esta declaración al nivel superior de mi archivo build.gradle :

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

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

Traté de compile files('libs/slidingmenu.aar') , pero sin suerte.

¿Qué me estoy perdiendo? ¿Algunas ideas?

PS Android Studio 0.8.2

Sobre la base de la respuesta de Josías, he aquí cómo lo hice funcionar.

Siguiendo sus instrucciones (bajo editar) ( Archivo -> Nuevo-> Nuevo Módulo -> Importar .JAR / .AAR ) e importar su .AAR.

A continuación, en su proyecto build.gradle (no el de nivel superior, el de debajo de '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 (al mismo nivel que app/.idea en la carpeta superior). O para decirlo de otra manera …

 Mi aplicación
   .idea
   App
   Build.gradle (aquí es donde agregar el proyecto de compilación (': ProjectName') a la sección de dependencias)
   ProjectName (se agrega automáticamente después de importar, coincidiendo con el nombre de su archivo aar)
   construir
   Gradle
   Etc

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

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

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

Actualización : Como @ amram99 mencionado, el problema se ha fijado a partir de la publicación de Android Studio v1.3.

Probado y verificado con especificaciones abajo

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

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 Package en Android Studio v1.3

  • Sin embargo, la siguiente respuesta es válida y efectiva, independientemente de los cambios en Android Studio, ya que se basa en scripts gradle.


Respuesta Antigua: En una actualización reciente, la gente de android rompió la inclusión de archivos aar locales a través de la opción del menú del nuevo módulo del Android Studio. Revise el problema que aparece 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):

Ponga el archivo aar en el directorio libs (crear si es necesario), a continuación, agregue el código siguiente en su build.gradle:

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

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

Respuesta Antigua

Prueba esto:

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

Tengo este trabajo 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 puse el archivo aar allí.

Estructura del directorio:

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

Luego, los otros cambios:

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.

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

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

Y entonces tu AAR necesita ir en una estructura de carpetas para un identificador de grupo "com.example":

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

Luego haga referencia como una dependencia:

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

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

Para cualquier persona que tenga este problema como de Android Studio 1.4, lo conseguí para trabajar creando un módulo dentro del proyecto que contiene 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')

A continuación, incluya la nueva biblioteca como una dependencia de módulo. Ahora puede utilizar un aar construido sin incluir las fuentes dentro del proyecto.

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

La forma más fácil ahora es añadirlo como un módulo

Introduzca aquí la descripción de la imagen

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

En mi caso, ninguna de las respuestas anteriores funcionó! Ya que tuve diferentes productFlavors simplemente 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 debe introducir FlatDirs como este cuando hay diferentes productFlavors 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 la construcción

Desde Project / app / myModulesFolder / myLibXYZ

He puesto esto:

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

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

  • ScriptC_ "nombre" no se genera después de crear un archivo .rs (en Android Studio con Gradle)
  • Gradle: Excluir archivo de la carpeta de activos de Android
  • Android: Cómo usar menor minSdkVersion que declarado en la biblioteca (uiautomator-v18)
  • Gradle no puede agregar a la compilación 'com.google.android.gms: play-services: 7.0.0'
  • Uso de Proguard para eliminar clases no utilizadas en la biblioteca de Servicios de Google Play
  • Error: Error de ejecución de la tarea ': app: processDebugGoogleServices'. > Solucione el conflicto de versiones
  • No hay versión en caché de com.android.tools.build:gradle:1.2.3 disponible para el modo sin conexión
  • Android: Error al convertir byte a dex
  • Gradle compile filetree sintaxis
  • Cómo utilizar múltiples res.srcDirs y anular algunos recursos con gradle
  • ¿Cómo puedo mostrar los archivos de registro, System.out.println (), en la prueba de Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.