Utilice una biblioteca aar para causar dependencias faltantes usando api en Gradle 4.x

Cuando construyo una aplicación con un archivo * .aar en lugar del módulo con Gradle 4.x y sigo el documento relativo a los implements y api , espero usar el archivo .ar incluido que tenga todas las dependencias incluidas, pero no es así.

Cuando tu lo hagas

git clone https://github.com/hannesa2/aar_dependency ./gradlew clean assembleDebug 

medio

 dependencies { api project(':mylibrary') 

funciona correctamente

Pero cuando utilizo ins-lib-module el archivo * .aar generado anteriormente como dependencia

  dependencies { api 'com.example.my.mylibrary:mylibrary-debug@aar' 

(en la aplicación de demostración simplemente hazlo)

 git checkout with_aar ./gradlew clean assembleDebug 

Me encuentro con esto

Tarea: aplicación: transformClassesWithDesugarForDebug Excepción en el hilo “main” java.lang.TypeNotPresentException: Type io.reactivex.ObservableTransformer no presente en sun.invoke.util.BytecodeDescriptor.parseSig (BytecodeDescriptor.java:85) en sun.invoke.util.BytecodeDescriptor .parseMethod (BytecodeDescriptor.java:63) en sun.invoke.util.BytecodeDescriptor.parseMethod (BytecodeDescriptor.java:41) en java.lang.invoke.MethodType.fromMethodDescriptorString (MethodType.java:1067) en com.google.devtools. build.android.desugar.LambdaDesugaring $ InvokedynamicRewriter.visitInvokeDynamicInsn (LambdaDesugaring.java:399) en org.objectweb.asm.MethodVisitor.visitInvokeDynamicInsn (Fuente desconocida) en org.objectweb.asm.MethodVisitor.visitInvokeDynamicInsn (Fuente desconocida)

Debido a que normalmente encuentro esto con la carga de los artefactos aar en nuestra empresa Maven Nexus, creé este demo-repo para mostrar exactamente lo que está mal. En la aplicación de demostración o usando Maven, veo el mismo problema.

¿Alguien sabe lo que hice mal?

Pude resolverlo. El problema principal era Android O con Gradle 4.x usando api

 dependencies { api 'com.squareup.okhttp3:logging-interceptor:3.4.1' api "io.reactivex.rxjava2:rxandroid:$versions.libs.rxAndroid" 

La mayoría de las respuestas se refieren a algo como esto

 publishing { publications { mipartner(MavenPublication) { groupId '...' artifactId '..' version 1.0 artifact "$buildDir/outputs/aar/myLib-release.aar" //generate pom nodes for dependencies pom.withXml { def dependenciesNode = asNode().appendNode('dependencies') configurations.compile.allDependencies.each { dependency -> def dependencyNode = dependenciesNode.appendNode('dependency') dependencyNode.appendNode('groupId', dependency.group) dependencyNode.appendNode('artifactId', dependency.name) dependencyNode.appendNode('version', dependency.version) } } } } repositories{ maven { url "https://some.url.com" } } } 

pero aquí en el * .pom resultante no hay dependencias incluidas, después de cambiar esta línea a api ¡ las dependencias se incluyen en pom desplegado!

 configurations.api.allDependencies.each { dependency -> 

después de esto, puedes consumir fácilmente el archivo aar

 dependencies { api "com.mylib.net:mylib:1.0"