使用与Android库提供的/ compileOnly依赖项
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用与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
两次才能使它工作。
我想问题是,与常规依赖项(即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')
以上是关于使用与Android库提供的/ compileOnly依赖项的主要内容,如果未能解决你的问题,请参考以下文章
Android Gradle 插件Android 依赖管理 ④ ( 常用依赖配置分析 | implementation 依赖作用 | api 依赖作用 | compileOnly 依赖作用 )
Android Gradle 插件Gradle 依赖管理 ④ ( Android Gradle 插件中注册的依赖分组 | implementation | api | compileOnly )
android.support.v4与Android.support.v7