弓背霞明剑照霜,秋风走马出咸阳。这篇文章主要讲述使用与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')
推荐阅读
- 不通过执行Java Applikation在ARM上加载JDBC库
- Android Library Gradle发布JAR
- 项目已包含具有此名称的模块 - Android Studio
- javax.faces.application.ViewExpiredException(无法恢复视图)
- 使用android AudioRecord获得32位样本吗()
- 使用从Jackson创建的对象在Android上使用OrmLite保存子集合
- Doctrine异常 - [DoctrineORMMappingMappingException]
- 如何更改UWP app文件夹名称或路径()
- 是否可以在没有管理员权限的情况下安装.appxbundle(UWP / XAML应用程序)()