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?