相关疑难解决方法(0)

如何将JAR依赖项包含到AAR库中

摘要:

我有一个依赖于JAR文件的AAR文件,当我构建AAR项目时,它不包含JAR代码.

细节:

我有一个Java SDK库项目,其中包含我们用于Java Web项目的代码,这样,该库是使用Gradle并驻留在内部nexus服务器(作为JAR)中创建的.

目标是通过多个Android应用程序可以使用的AAR库提供此JAR库的"Android配置"版本,并最大限度地减少实现它的工作量(和样板代码).此AAR文件也会上载到nexus服务器以供Android应用程序项目使用.

我的AAR项目包括我的Java SDK库(JAR)的gradle依赖项,但是在构建时,AAR不包含任何类.

码:

这是Java SDK项目的gradle文件:

apply plugin: 'java'

//noinspection GroovyUnusedAssignment
sourceCompatibility = 1.7
version = '1.1.1'

repositories {
    mavenCentral()
}

jar {
    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
    testCompile 'org.apache.directory.studio:org.apache.commons.io:2.4'
    compile 'org.springframework:spring-web:3.1.1.RELEASE'
    compile 'com.google.code.gson:gson:2.3'
}
Run Code Online (Sandbox Code Playgroud)

这是我的AAR项目的gradle文件,请注意我从中删除了Maven存储库声明到我的nexus服务器.我想这个问题应该没关系.

apply plugin: 'com.android.library'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "2.2.2"
    } …
Run Code Online (Sandbox Code Playgroud)

java android jar gradle aar

28
推荐指数
3
解决办法
2万
查看次数

在Gradle 4.x中使用api使用aar库导致缺少依赖项

当我使用*.aar文件而不是使用Gradle 4.x的模块构建应用程序并遵循有关implementsapi文档时,我希望使用api包含的aar文件包含所有依赖项,但它没有.

当你这样做

git clone https://github.com/hannesa2/aar_dependency
./gradlew clean assembleDebug
Run Code Online (Sandbox Code Playgroud)

手段

dependencies {
    api project(':mylibrary')
Run Code Online (Sandbox Code Playgroud)

它工作正常.

但是当我使用lib-module的insted时,先前生成的*.aar文件作为依赖

 dependencies {
    api 'com.example.my.mylibrary:mylibrary-debug@aar'
Run Code Online (Sandbox Code Playgroud)

(在演示应用程序中)

git checkout with_aar
./gradlew clean assembleDebug
Run Code Online (Sandbox Code Playgroud)

我碰到了这个

任务:app:transformClassesWithDesugarForDebug线程"main"中的异常java.lang.TypeNotPresentException:在sun.invoke.util.BytecodeDescriptor的sun.invoke.util.BytecodeDescriptor.parseSig(BytecodeDescriptor.java:85)中输入不存在的io.reactivex.ObservableTransformer .parseMethod(BytecodeDescriptor.java:63)位于com.google.devtools的java.lang.invoke.MethodType.fromMethodDescriptorString(MethodType.java:1067)的sun.invoke.util.BytecodeDescriptor.parseMethod(BytecodeDescriptor.java:41).在org.objectweb.asm.MethodVisitor.visitInvokeDynamicInsn(未知来源)的org.objectweb.asm.MethodVisitor.visitInvokeDynamicInsn(未知来源)的build.android.desugar.LambdaDesugaring $ InvokedynamicRewriter.visitInvokeDynamicInsn(LambdaDesugaring.java:399)

因为我将这些aar工件上传到我们的Maven Nexus公司时遇到了这个问题,所以我创建了这个demo-repo以准确显示出错了什么.在演示应用程序或使用Maven我看到同样的问题.

有人知道我做错了吗?

android module android-gradle-plugin aar

4
推荐指数
1
解决办法
1754
查看次数

标签 统计

aar ×2

android ×2

android-gradle-plugin ×1

gradle ×1

jar ×1

java ×1

module ×1