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

弓背霞明剑照霜,秋风走马出咸阳。这篇文章主要讲述使用与Android库提供的/ compileOnly依赖项相关的知识,希望能为你提供帮助。
对于一个项目,我有这种类型的结构:
--- 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两次才能使它工作。
【使用与Android库提供的/ compileOnly依赖项】我想问题是,与常规依赖项(即compileOnly project(':lib'))不同,在不请求构建子项目的情况下评估fileTree依赖项,并且在第一次构建时,没有jar文件添加到类路径中。
我尝试了像preBuild.dependsOn(':lib:makeJar')这样的东西,但没有成功,因为它是在评估后执行的。
我无法将lib切换到java插件,因为它是Android特定的代码,我需要为其他项目构建aar,那么有没有更好的方法将compileOnly指令用于此模块?或者也许是一种在评估app build.gradle之前强制构建lib的方法?
答案在build.gradle(app)上添加这个

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

或直接编译您的jar文件如下
compile files('libs/your_filename_in_libs_folder.jar')


    推荐阅读