【发布时间】:2018-03-19 01:31:58
【问题描述】:
当我使用 *.aar 文件而不是使用 Gradle 4.x 的模块并遵循关于 implements 和 api 的 docu 构建应用程序时,我希望使用 api 包含的 aar 文件包含所有依赖项,但它没有。
当你这样做时
git clone https://github.com/hannesa2/aar_dependency
./gradlew clean assembleDebug
表示
dependencies {
api project(':mylibrary')
它工作正常。
但是当我使用 lib-module 的 insted 之前生成的 *.aar 文件作为依赖项时
dependencies {
api 'com.example.my.mylibrary:mylibrary-debug@aar'
(在demo app 中)
git checkout with_aar
./gradlew clean assembleDebug
我遇到了这个
任务 :app:transformClassesWithDesugarForDebug 线程“main”中的异常 java.lang.TypeNotPresentException:类型 io.reactivex.ObservableTransformer 不存在 在 sun.invoke.util.BytecodeDescriptor.parseSig(BytecodeDescriptor.java:85) 在 sun.invoke.util.BytecodeDescriptor.parseMethod(BytecodeDescriptor.java:63) 在 sun.invoke.util.BytecodeDescriptor.parseMethod(BytecodeDescriptor.java:41) 在 java.lang.invoke.MethodType.fromMethodDescriptorString(MethodType.java:1067) 在 com.google.devtools.build.android.desugar.LambdaDesugaring$InvokedynamicRewriter.visitInvokeDynamicInsn(LambdaDesugaring.java:399) 在 org.objectweb.asm.MethodVisitor.visitInvokeDynamicInsn(未知来源) 在 org.objectweb.asm.MethodVisitor.visitInvokeDynamicInsn(未知来源)
因为我通常在将 aar 工件上传到我们公司的 Maven Nexus 时遇到这种情况,所以我创建了这个 demo-repo 来准确显示问题所在。在演示应用程序或使用 Maven 中,我看到了同样的问题。
有人知道我做错了吗?
【问题讨论】:
-
aar 文件不包含传递依赖。将其发布到 maven 存储库中
-
我的 aar 使用例如。 RxJava,这个 RxJava 已经在另一个 maven 中了。所以我猜你的建议“在 maven repo 中发布”已经实现,还是我错了? aar 消费者有没有办法在不处理 RxJava 依赖项的情况下使用它?
标签: android module android-gradle-plugin aar