我尝试指定gradle库的两个不同的源集,并在项目中添加特定于源集的依赖项。
这个想法是做这样的事情:
库build.gradle文件:
apply plugin: 'com.android.library'
android {
...
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java {
srcDir 'src'
}
res {
srcDir 'res'
}
}
exclude_fr_it{
manifest.srcFile 'AndroidManifest.xml'
java {
srcDir 'src'
}
res {
srcDir 'res'
exclude 'res/values/values-fr'
exclude 'res/values/values-it'
}
}
}
...
}
...
在项目A中,我想包含主要的源集:
dependencies {
compile project(':explore_layout')
}
在项目B中,我想包括使用sourceset exclude_fr_it的版本。
dependencies {
compile project(':explore_layout') library 'exclude_fr_it'
}
我试图了解文档。但我不知道该怎么办...
Question 1
Doc
Question 2
最佳答案
这不是sourceSets问题的直接答案。但是您可能根本不需要使用sourceSets功能。
如果您只是想让您的应用程序在自定义android库中包含一部分资源,则可以在应用程序的build.gradle中使用配置块来实现。 (实际上,该库完全不需要“main”和“exclude_fr_it” sourceSet的那些特殊配置块。)
由于'resConfigs'属性,这是可能的。
特别是,假设您的库具有三种语言的资源配置:“en”,“fr”和“it”。
然后,在项目A(包括库中的所有语言)中,只需在build.gradle中使用它:
dependencies {
compile project(':explore_layout')
}
但是,在项目B中,您要排除自定义库的'fr'和'it'资源,您可以在配置闭包中使用'resConfigs'属性,以仅包括以下资源的子集:
dependencies {
compile project(':explore_layout') {
android {
defaultConfig {
resConfigs 'en'
}
}
}
}