我正在开发一个具有多种风格的 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 中已经存在的资源的替代品,但是使用我目前的方法,它会导致构建失败并出现重复资源。
所以我需要一种将“src/module1/res”添加到flavor2但不包含一个特定文件的方法。
我试过了
res{
srcDirs += ["src/module1/res"]
res.srcDirs += ["src/module1/res"]
exclude 'src/module1/res/drawable/specific_file.xml'
}
但无济于事。
这可能吗?
最佳答案
看了多个答案后like this ,你的代码对我来说是正确的。但是,this bug声明未实现排除路径仍然是开放的。
这个alternate approach引用 these docs可能对你有用。我建议在你的 flavor2 目录/模块中添加一个资源目录,并使用它来包含一个丢弃文件。
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" />
关于gradle - 将文件夹添加到 srcDir 除了 gradle 中的一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49302750/