android module android-gradle aar

android - Usar una biblioteca aar causa dependencias faltantes usando api en Gradle 4.x



module android-gradle (1)

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 son sobre 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 la API, ¡ las dependencias se incluyen en pom desplegado!

configurations.api.allDependencies.each { dependency ->

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

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

Cuando construyo una aplicación con un archivo * .aar en lugar del módulo con Gradle 4.xy siguiendo el docu sobre implementos y api , espero usar api, el archivo aar incluido tiene todas las dependencias incluidas, pero no lo ha hecho.

Cuando tu lo hagas

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

medio

dependencies { api project('':mylibrary'')

Funciona correctamente.

Pero cuando uso insted of 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 solo hazlo)

git checkout with_aar ./gradlew clean assembleDebug

Me encuentro con esto

Tarea: aplicación: transformClassesWithDesugarForDebug Exception en el subproceso "main" java.lang.TypeNotPresentException: escriba io.reactivex.ObservableTransformer no presente en sun.invoke.util.BytecodeDescriptor.parseSig (BytecodeDescriptor.java:85) en sun.invokeDestor.Byte .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.visitInvisitInvisit Source.visit

Debido a que normalmente me encuentro con esto al cargar los artefactos aar en nuestra compañía 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?