Las dependencias transitivas no se resuelven para la biblioteca aar usando gradle

Investigué hace tiempo y probablemente vi las respuestas más populares aquí relacionadas con las dependencias aar y transitivas, pero de alguna manera todavía no está claro cómo hacer que esto funcione.

Asi que:

Tengo una biblioteca de Android con una configuración de gradle determinada:

apply plugin: 'android-library' apply plugin: 'android-maven' version = "1.0.0" group = "com.somepackage" buildscript { repositories { mavenCentral() mavenLocal() } dependencies { classpath 'com.github.dcendents:android-maven-plugin:1.0' } } android { compileSdkVersion 19 buildToolsVersion '19.0.3' defaultConfig { minSdkVersion 10 } } repositories { maven { url 'http://www.bugsense.com/gradle/' } } dependencies { provided 'com.google.android.gms:play-services:+' provided 'com.android.support:appcompat-v7:+' compile 'com.google.code.gson:gson:2.2.4' compile 'com.bugsense.trace:bugsense:3.6' compile 'commons-net:commons-net:3.3' } 

Luego lo estoy implementando en un repository maven local con la gradle install . El archivo POM de la biblioteca implementada se ve así:

   4.0.0 com.sprezzat app 1.0.0 aar   com.bugsense.trace bugsense 3.6 compile   commons-net commons-net 3.3 compile   com.google.code.gson gson 2.2.4 compile    

Y, finalmente, la configuración de gradle de mi aplicación de Android utilizando la biblioteca anterior como una dependencia:

 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.9.+' } } apply plugin: 'android' repositories { mavenCentral() mavenLocal() } android { compileSdkVersion 15 buildToolsVersion "19.0.2" defaultConfig { minSdkVersion 10 targetSdkVersion 18 } } dependencies { compile 'com.google.android.gms:play-services:+' compile 'com.android.support:appcompat-v7:+' compile 'com.somepackage:LIBRARY_NAME:1.0.0@aar' } 

Y después de implementar la aplicación en el teléfono NoClassDefFoundError para las clases que pertenecen a las dependencias de comstackción de mi biblioteca de Android.

Inspeccionando mis dependencias de aplicaciones de Android usando gradle dependencies :

 apk - Classpath packaged with the compiled main classes. +--- com.google.android.gms:play-services:+ -> 4.3.23 | \--- com.android.support:support-v4:19.0.1 -> 19.1.0 +--- com.android.support:appcompat-v7:+ -> 19.1.0 | \--- com.android.support:support-v4:19.1.0 \--- com.somepackage:LIBRARY_NAME:1.0.0 

Según el árbol anterior, no se detectan todas las dependencias transitivas. ¿Dónde está el problema y cómo se debe hacer correctamente?

He resuelto mi problema estableciendo el atributo transitive para mi dependencia aar:

 compile ('com.somepackage:LIBRARY_NAME:1.0.0@aar'){ transitive=true } 

no debe usar “@aar”, si el uso “@” se convierte en ” notación solo de artefacto “, si desea usar “@” y desea que la dependencia sea transitiva, debe agregar “transitive = true”

Pruebe esto si está usando aar localmente:

 compile(project(:your-library-name)) { transitive=true }