update tools studio configurar actualizar android android-gradle

tools - install gradle android studio



Gradle para Android AAR dependiendo de AAR, ¿ambos en el mismo repositorio remoto? (3)

Comenzar desde Android Studio 0.4.4 utilizando las dependencias .AAR es tan sencillo como usar las dependencias .JAR. Simplemente build.gradle en el directorio /libs y haga referencia a él en build.gradle :

compile files(''libs/YOUR_LIBRARY_NAME.aar'')

Existen algunas preguntas sobre las dependencias transitivas con los archivos AAR en Gradle:

También me he encontrado con problemas similares al intentar configurar dependencias transitivas sobre archivos AAR en un repositorio remoto. Tengo la aplicación A, dependiendo de la biblioteca B, que a su vez depende de la biblioteca C. La biblioteca C está en un repositorio de Maven. La Biblioteca B está en el mismo repositorio, con un POM que contiene la dependencia de la Biblioteca C. La aplicación A tiene la Biblioteca B en sus dependencias. Sin embargo, ejecutar gradle clean assembleDebug da como resultado: "La versión del módulo [Biblioteca B] depende de las bibliotecas, pero no es una biblioteca en sí misma".

Intenté dar una recompensa a una de esas preguntas, esperando claridad, sin suerte.

Mi conjetura es que hay dos fuentes posibles de la dificultad que yo y aquellos con la pregunta SO mencionada anteriormente están viendo:

  1. Las dependencias AAR transitivas de un repositorio remoto simplemente se rompen

  2. Las dependencias AAR transitivas de un repositorio remoto funcionan, pero hay algo fuera de nuestros archivos POM, archivos build.gradle o algo que está rompiendo las dependencias

La pregunta : ¿Alguien sabe de un artefacto AAR en algún repositorio público (por ejemplo, Maven Central), que dependa de otro artefacto AAR, también en el mismo repositorio público?

No me interesa un AAR que dependa de algo en un repositorio local, como un AAR en Maven Central que dependa de com.android.support:support-v4 . En mi caso, si la Biblioteca B y la Biblioteca C están ambas en mi repositorio local de Maven ( ~/.m2 ), todo funciona bien.

Según Xav, lo que estoy haciendo debería funcionar . Por lo tanto, espero que alguien pueda señalarme un ejemplo práctico, de modo que pueda usarlo para determinar dónde podemos estar equivocados el resto de nosotros.

NOTA : Sé que pedir recursos externos es verboten. En este caso, no estoy buscando el recurso por derecho propio, sino como un ejemplo de una configuración de trabajo, para ayudar a depurar una configuración que no funciona. Si tiene otra forma de escribir una respuesta que muestre una configuración de trabajo, ¡sería increíble!

¡Gracias!


No tengo un ejemplo público, pero tengo este escenario configurado con éxito en un repositorio Nexus alojado internamente. Aquí está la configuración:

Aplicación - Proyecto de aplicación para Android LibraryB - Proyecto de biblioteca para Android picasso - Biblioteca de código abierto de Square (disponible en Maven Central) LibraryA - Proyecto de biblioteca para Android

La aplicación depende de LibraryB y picasso LibraryB depende de LibraryA

Aquí está el POM para LibraryB (descargado de Nexus)

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>LibraryB</artifactId> <version>0.1</version> <packaging>aar</packaging> <dependencies> <dependency> <groupId>com.example</groupId> <artifactId>LibraryA</artifactId> <version>3.0.1</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.squareup.picasso</groupId> <artifactId>picasso</artifactId> <version>2.1.1</version> <scope>compile</scope> </dependency> </dependencies> </project>

Aquí está el build.gradle para LibraryB

buildscript { repositories { mavenCentral() } dependencies { classpath ''com.android.tools.build:gradle:0.6.+'' } } apply plugin: ''android-library'' apply plugin: ''maven'' version versionProp group ''com.example'' repositories { mavenCentral() maven { url(exampleReleaseRepoUrl) } } android { compileSdkVersion 19 buildToolsVersion "19.0.0" defaultConfig { minSdkVersion 8 targetSdkVersion 19 } release { runProguard false proguardFile ''proguard-rules.txt'' proguardFile getDefaultProguardFile(''proguard-android.txt'') } } dependencies { compile ''com.example:LibraryA:3.0.1'' compile ''com.squareup.picasso:picasso:2.1.1'' } uploadArchives { repositories { mavenDeployer { repository(url: uri(exampleReleaseRepoUrl)) { authentication(userName: nexusUsername, password: nexusPassword) } snapshotRepository(url: uri(exampleSnapshotRepoUrl)) { authentication(userName: nexusUsername, password: nexusPassword) } } } }

Aquí está el POM para LibraryA (descargado de Nexus)

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>LibraryA</artifactId> <version>3.0.1</version> <packaging>aar</packaging> <dependencies> <dependency> <groupId>com.android.support</groupId> <artifactId>support-v4</artifactId> <version>19.0.0</version> <scope>compile</scope> </dependency> </dependencies> </project>

El build.gradle para LibraryA es muy similar al de LibraryB anterior.

Los artefactos y POM para LibraryA y LibraryB se cargaron a través del siguiente comando de Gradle

gradle uploadArchives

El build.gradle para la aplicación se ve así

buildscript { repositories { mavenCentral() } dependencies { classpath ''com.android.tools.build:gradle:0.6.+'' } } apply plugin: ''android'' repositories { mavenCentral() maven { url(exampleReleaseRepoUrl) } } android { compileSdkVersion 19 buildToolsVersion "19.0.0" defaultConfig { minSdkVersion 8 targetSdkVersion 19 } buildTypes { release { runProguard false proguardFile getDefaultProguardFile(''proguard-android.txt'') } } productFlavors { defaultFlavor { proguardFile ''proguard-rules.txt'' } } } dependencies { compile ''com.android.support:support-v4:19.0.0'' compile ''com.android.support:appcompat-v7:19.0.0'' compile ''com.example:LibraryB:0.1'' }

Si necesitas más información, avísame.


Parece que mi problema se ha solucionado con Gradle 1.9 y com.android.tools.build:gradle:0.7.+ . Por lo menos, ya no puedo reproducir el problema.