Agregar archivos .aar locales a mi compilación gradle

Así que he creado una Android-Library y compilado con éxito en un archivo. Aar que llamé aar este archivo: "projectx-sdk-1.0.0.aar" ahora quiero que mi nuevo proyecto a depender de este aar lo que he hecho Es seguir este post: http://life.nimbco.us/referencing-local-aar-files-with-android-studios-new-gradle-based-build-system/

Pero el post me confunde ya que no obtengo el resultado deseado:

El nombre del paquete del aar es: com.projectx.photosdk y el interior del módulo se llama sdk

Aquí está mi estructura de proyecto actual:

 |-SuperAwesomeApp |--.idea |--gradle |--App |---aars |----projectx-sdk-1.0.0.aar |---build |---jars |---src |---build.gradle 

Y él es mi archivo de compilación gradle:

 apply plugin: 'android' buildscript { repositories { mavenCentral() flatDir { dirs 'aars' } } } android { compileSdkVersion 19 buildToolsVersion "19.0.1" defaultConfig { minSdkVersion 11 targetSdkVersion 19 versionCode 1 versionName "1.0" } buildTypes { release { runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } } dependencies { compile 'com.android.support:gridlayout-v7:19.0.1' compile 'com.android.support:support-v4:19.0.1' compile 'com.android.support:appcompat-v7:19.0.1' compile 'com.projectx.photosdk:sdk:1.0.0@aar' // compile files( 'aars/sdk-1.0.0.aar' ) // Does not work either } 

// EDIT

Los errores que estoy recibiendo:

 Failed to refresh Gradle project 'SuperAwesomeApp' Could not find com.projectx.photosdk:sdk:1.0.0. Required by: SuperAwesomeApp:App:unspecified 

flatDir bloque de bloques flatDir en el bloque de repostories incorrecto. El bloque de repositories dentro de buildscript le dice a Gradle dónde encontrar el complemento Android-Gradle, pero no el resto de las dependencias. Debe tener otro bloque de repositories nivel superior como este:

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

He probado esto y funciona bien en mi configuración.

Con las versiones recientes de Android Studio, probado con 1.3, para usar el archivo .AAR local y no una extraída del repositorio maven / jcenter, solo vaya a Archivo> Nuevo> Nuevo módulo y elija Importar .JAR / .AAR Package .

Lo que acabará con un nuevo módulo en su proyecto que contiene muy simple archivo build.gradle que se ve más o menos así:

 configurations.create("default") artifacts.add("default", file('this-is-yours-package-in-aar-format.aar')) 

Por supuesto, otros proyectos tienen que hacer referencia a este nuevo módulo con la directiva de proyecto regular de compilación . Así que en un proyecto que utiliza este nuevo módulo que es simple un archivo .aar local tiene esto en su build.gradle

 [...] dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' ompile 'com.android.support:appcompat-v7:23.1.0' compile 'com.android.support:design:23.1.0' [...] compile project(':name-of-module-created-via-new-module-option-described-above') } [...] 

En estos días (más de un año después de esta pregunta) con Android Studio> 1.0, la dependencia local funciona correctamente:

  • El android sdk busca dependencias en un repo local predeterminado de: $ANDROID_HOME/extras/android/m2repository/
  • En un proyecto de biblioteca local puede publicar el aar en este directorio. Aquí hay un fragmento que se puede agregar al archivo build.gradle tu módulo (por ejemplo: sdk / build.gradle)

     apply plugin: 'maven' uploadArchives { repositories { mavenDeployer { repository(url: "file://localhost" + System.getenv("ANDROID_HOME") + "/extras/android/m2repository/") pom.version = '1.0-SNAPSHOT' pom.groupId = 'your.package' pom.artifactId = 'sdk-name' } } } 
  • En su proyecto de biblioteca, ejecute ./gradlew uploadArchives para publicar el aar en ese directorio
  • En el proyecto de aplicación en el que desea utilizar la biblioteca, agregue la dependencia a su proyecto / app / build.gradle. compile 'your.package:sdk-name:1.0-SNAPSHOT'

Para la dependencia local, la siguiente compilación de gradles debe encontrar el archivo previamente desplegado y eso es todo!


En mi caso, utilizo lo anterior para dev local, pero también tengo un servidor de integración continua de Bamboo para la biblioteca que publica cada compilación en un repositorio compartido de artefactos Nexus. El código de biblioteca completo para desplegar el artefacto se convierte en:

 uploadArchives { repositories { mavenDeployer { if (System.getenv("BAMBOO_BUILDNUMBER") != null) { // Deploy to shared repository repository(url: "http://internal-nexus.url/path/") { authentication(userName: "user", password: "****") } pom.version = System.getenv("BAMBOO_BUILDNUMBER") } else { // Deploy to local Android sdk m2repository repository(url: "file://localhost" + System.getenv("ANDROID_HOME") + "/extras/android/m2repository/") pom.version = '1.0-SNAPSHOT' } pom.groupId = 'your.package' pom.artifactId = 'sdk-name' } } } 

Con el fin de decirle a las aplicaciones que descarguen desde mi repositorio interno de Nexus, he añadido el repositorio interno de Nexus maven justo encima de jcenter () en ambos bloques de "repositorios" en el proyecto / build.gradle

 repositories { maven { url "http://internal-nexus.url/path/" } jcenter() } 

Y la dependencia de la aplicación entonces se parece a compile 'your.package:sdk-name:45' Cuando actualizo la versión 45 a 46 es cuando mi proyecto tomará el nuevo artefacto del servidor Nexus.

Parece agregar archivos .aar como la dependencia local aún no es compatible (Planificado para ser compatible en 0.5.0 Beta)

https://code.google.com/p/android/issues/detail?id=55863

Pero la forma en que está utilizando su biblioteca en dependencia sólo funcionará si su biblioteca está en el repositorio central de maven o en el repositorio local de maven.

Refiérase a la sección Cómo usar el repositorio local de maven para utilizar .aar en las dependencias del módulo.

http://www.flexlabs.org/2013/06/using-local-aar-android-library-packages-in-gradle-builds

  • ¿Qué debo hacer con el archivo pom.xml?
  • Maven archétype para un proyecto android
  • Posibilidad de reubicar el soporte de AndroidManifest.xml para el complemento ADT en Eclipse
  • Error de Gradle después de la actualización del estudio
  • Intellij 12 maven library Android Problema de RestTemplate que procesa javax / xml / parser / DocumentBuilder.class
  • Maven + RoboGuice + ActionBarSherlock + RoboGuice-Sherlock
  • ActionBarSherlock + maven + eclipse: dependencia no encontrada en el espacio de trabajo
  • ¿Cómo automatizar las creaciones de android para la versión lite y de la prima?
  • Error con Maven Android: El POM para com.google.android.gms: google-play-services: jar: 13.0.0 falta, no hay información de dependencia disponible
  • Android-maven-plugin, pruebas de instrumentación y testSize
  • La conversión a Maven Project en Eclipse resulta en ClassNotFoundException
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.