No se puede utilizar el archivo .aar local dentro del módulo de biblioteca
Tengo un aar
de la biblioteca socialauth-android agregado a mi proyecto. Lo he puesto dentro del directorio flatDir
como se describe aquí y funciona muy bien.
Ahora, estoy moviendo parte de mi código en el módulo de biblioteca denominado commons
, para reutilizarlo en el otro proyecto. socialauth-android
será utilizado enteramente por el módulo de biblioteca, así que lo he movido dentro del project/commons/libs/
an reescrito mis archivos de build.gradle
. De ahora en adelante no puedo construir mi proyecto, porque surge el siguiente error:
Error:A problem occurred configuring project ':ScrollApplication'. > Could not resolve all dependencies for configuration ':ScrollApplication:_developmentDebugCompile'. > Could not find :socialauth-android:. Searched in the following locations: http://dl.bintray.com/populov/maven//socialauth-android//socialauth-android-.pom http://dl.bintray.com/populov/maven//socialauth-android//socialauth-android-.aar https://oss.sonatype.org/content/repositories/snapshots//socialauth-android//socialauth-android-.pom https://oss.sonatype.org/content/repositories/snapshots//socialauth-android//socialauth-android-.aar https://repo1.maven.org/maven2//socialauth-android//socialauth-android-3.2.pom https://repo1.maven.org/maven2//socialauth-android//socialauth-android-3.2.aar file:/home/artem/Workspace/scrollandroid/libraries/socialauth-android-3.2.aar file:/home/artem/Workspace/scrollandroid/libraries/socialauth-android.aar Required by: scrollandroid:ScrollApplication:unspecified > scrollandroid:commons:unspecified
El error dice que el resolvedor de dependencia intenta encontrar socialauth-android.aar
dentro de la carpeta del project/libraries
que es la carpeta para todas las bibliotecas comunes compartidas entre los módulos de mi proyecto. Pero he escrito en mi archivo de project/commons/build.gradle
que el flatDir
para el módulo commons
es project/commons/libs
! Además, todas las bibliotecas contenidas en el project/commons/libs/
se encuentran durante la compilación sin ningún problema.
- Android - Errores de entrada de zip de Proguard duplicados - Biblioteca de soporte de Android
- Construir y reutilizar código fuente abierto de código abierto de android en mi proyecto
- Android: marcadores de posición manifiestos para diferentes tipos de compilación
- Android Studio INSTALL_FAILED_DEXOPT e INSTALL_FAILED_UID_CHANGED en la ejecución del proyecto
- Reduzca el tiempo de sincronización de Gradle en el estudio de Android
¿Cuál puede ser la fuente de este problema?
A continuación se muestran mis archivos build.gradle (algunos de sus códigos, como las declaraciones de dependencias, se descartan por brevedad):
proyecto / settings.gradle :
include ':ScrollApplication', ':commons'
proyecto / build.gradle :
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.0.0-rc1' } }
proyecto / commons / build.gradle :
apply plugin: 'com.android.library' repositories { maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' } mavenCentral() flatDir { dirs "libs" } } android { compileSdkVersion 21 buildToolsVersion "21.1.1" defaultConfig { minSdkVersion 14 targetSdkVersion 21 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile(name:'socialauth-android', ext:'aar') }
proyecto / app / build.gradle :
apply plugin: 'com.android.application' repositories { maven { url "http://dl.bintray.com/populov/maven" } maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' } mavenCentral() flatDir { dirs "../libraries" } } configurations { apt } android { compileSdkVersion 21 buildToolsVersion "21.1.1" defaultConfig { minSdkVersion 14 targetSdkVersion 21 } lintOptions { abortOnError false } } dependencies { compile project(':commons') compile fileTree(dir: '../libraries', include: ['*.jar']) }
Actualización : estructura del proyecto agregada
├── build.gradle ├── commons │ ├── build.gradle │ ├── libs │ ├── proguard-rules.pro │ └── src │ ├── androidTest │ │ └── java │ └── main │ ├── AndroidManifest.xml │ ├── assets │ ├── java │ └── res ├── gradle │ └── wrapper ├── libraries │ ├── aws-android-sdk-1.7.1.1-core.jar │ ├── aws-android-sdk-1.7.1.1-s3.jar │ ├── libGoogleAnalyticsServices.jar │ └── supertooltips-3.0.1.aar ├── scrollandroid-hg.iml ├── ScrollApplication │ ├── build.gradle │ ├── proguard.cfg │ ├── ScrollApplication.iml │ └── src │ └── main │ ├── AndroidManifest.xml │ ├── assets │ ├── java │ └── res ├── settings.gradle └── stacktrace.txt
- La tienda de reproducción muestra 0 dispositivos compatibles con el mismo código
- ¿Puedo establecer un indicador BuildConfig que devuelve si un apk se ha construido o no con la tarea gradled `connectedAndroidTest`?
- Error de generación de Gradle en Android Studio
- Importación de la biblioteca de Facebook en Android Studio: No se pudo encontrar la propiedad 'ANDROID_BUILD_SDK_VERSION'
- Error de sincronización de Gradle: 'com.android.build.gradle.BasePlugin' no implementa la interfaz de Plugin
- Gradle crea y despliega tipo de compilación específico
- Forzar a usar el mismo certificado para firmar diferentes "buildTypes" que están configurados para un particular "productFlavor"?
- Diferencia entre "default gradle wrapper" y "local gradle distribution" en el proyecto de estudio android
Parece que la biblioteca "commons" se está construyendo correctamente (¿se puede compilar por separado para verificar?), Pero la aplicación no lo es. Gradle tiene algunas reglas especiales para manejar dependencias transitivas (dependencias anidadas en otras dependencias) que existen ya que "commons" depende de "socialauth-android".
Intenta agregar un directorio extra al atributo "flatDir" en "project / app / build.gradle"
flatDir { dirs "../libraries", "../commons/libs" }
Parece ser un problema conocido que ha estado allí por mucho tiempo. La forma de incluir la dependencia .aar ahora días es como se hace referencia en esta pregunta:
Agregar archivos .aar locales a la generación de Gradle utilizando "flatDirs" no funciona
De forma predeterminada, el artefacto resultante no incluirá los archivos en el archivo .aar, a menos que cree una tarea de gradle que copie el contenido .aar en el artefacto deseado.
Si planea publicar su biblioteca .aar en un reporte de Maven, el archivo POM resultante tendrá su versión de dependencia definida como indefinida. Para cambiarlo, tendrá que trabajar con los métodos de sustitución de dependencia de gradle en su proyecto.
- Android – Canvas.clipRect () – Eliminar el clip existente
- Error de autenticación de la cuenta de Google al instalar mi aplicación