我正在开发一个具有多种口味的
Android应用程序,如下所示:
sourceSets {
main {
res.srcDirs += ["headend/ott/res"]
}
flavor1 {
res.srcDirs += ["src/module1/res-splash"]
}
flavor2 {
java.srcDirs += ["src/module1/java"]
res.srcDirs += ["src/module1/res"]
res.srcDirs += ["src/module2/res"]
assets.srcDirs += ["src/module1/assets"]
}
test {
res.srcDirs += ["src/test/resources"]
}
...
我的问题是,在flavor2中,一些module2资源应该是module1中已经存在的资源的替换,但是使用我当前的方法,它会导致构建因重复资源而失败.
所以我需要的是一种向flavor2添加“src / module1 / res”但不包含一个特定文件的方法.
我试过了
res{
srcDirs += ["src/module1/res"]
res.srcDirs += ["src/module1/res"]
exclude 'src/module1/res/drawable/specific_file.xml'
}
但无济于事.
这有可能吗?
最佳答案 看了多个答案
like this后,你看到的代码对我来说是正确的.但是,
this bug声明排除路径未实现仍然是开放的.
参考these docs的alternate approach可能适合您.我建议在flavour2目录/模块中添加一个资源目录,并使用它来包含一个discard文件.
sourceSets {
flavor2 {
res {
srcDirs += ["src/module1/res"]
srcDirs += ["src/module2/res"]
}
}
}
然后使用以下内容将resources_discard.xml添加到module2 / res / raw:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:discard="@drawable/specific_file.xml" />