对于一个项目,我有这种结构:
--- 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的方法吗?
答案 0 :(得分:0)
在build.gradle(app)上添加它
compile fileTree(include: ['*.jar'], dir: 'libs')
或直接编译您的jar文件,如下所示
compile files('libs/your_filename_in_libs_folder.jar')