使用与Android库提供的/ compileOnly依赖项

时间:2017-12-22 16:17:30

标签: java android gradle jar

对于一个项目,我有这种结构:

--- app => my Android application | \- lib => my Android library

应用程序使用lib中的方法,但是我想要一个没有从lib中嵌入类的构建(因为它们也可以在自定义AOSP构建中使用),这可以使用提供的/ compileOnly指令来完成依赖。问题是该指令不适用于Android插件生成的aar librairies,只适用于jar。

我找到了一种使用此处的自定义makeJar任务来构建jar文件的方法: Build library jar with Gradle

然后在应用程序的build.gradle中,我可以添加这样的依赖项:

dependencies { compileOnly fileTree(dir: '../lib/build/outputs/jar', include: ['*.jar']) ... }

这很好用,但前提是jar已经由之前的版本生成了,这意味着我必须启动./gradlew build两次才能使它工作。

我认为问题在于,与常规依赖项(即compileOnly project(':lib'))不同,在不请求构建子项目的情况下评估fileTree依赖项,并且在第一次构建时,没有jar文件添加到类路径中。 / p>

我尝试了类似preBuild.dependsOn(':lib:makeJar')的内容,但没有成功,因为它是在评估后执行的。

我无法将lib切换到Java插件,因为它是特定于Android的代码,我需要为其他项目构建aar,所以有没有更好的方法将compileOnly指令用于此模块?或者也许是一种在评估app build.gradle之前强制构建lib的方法吗?

1 个答案:

答案 0 :(得分:0)

在build.gradle(app)上添加它

compile fileTree(include: ['*.jar'], dir: 'libs')

或直接编译您的jar文件,如下所示

compile files('libs/your_filename_in_libs_folder.jar')