将文件夹添加到srcDir,但gradle中的一个文件除外
我正在开发一款android应用程序,具有多种风格,如:将文件夹添加到srcDir,但gradle中的一个文件除外,gradle,android-gradle-plugin,Gradle,Android Gradle Plugin,我正在开发一款android应用程序,具有多种风格,如: sourceSets { main { res.srcDirs += ["headend/ott/res"] } flavor1 { res.srcDirs += ["src/module1/res-splash"] } flavor2 { java.srcDirs += ["src/module1/java"] res.srcDi
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'
}
但是没有用
这可能吗?在查看了多个答案后,我认为您的代码是正确的。但是,声明未实现排除路径仍然是开放的 这可能对你有用。我建议在flavour2目录/模块中添加一个资源目录,并使用它包含一个丢弃文件
sourceSets {
flavor2 {
res {
srcDirs += ["src/module1/res"]
srcDirs += ["src/module2/res"]
}
}
}
然后将resources\u 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" />
尝试这样做。在我的一个项目中,我能够通过不使用
exclude
路径中的srcDir
路径从编译中排除java文件exclude
通常在不附加srcDir
路径的情况下工作
res{
srcDirs += ["src/module1/res"]
res.srcDirs += ["src/module1/res"]
exclude 'drawable/specific_file.xml'
}
这不是丢弃了
模块2/specific_文件吗?因为我需要的是在添加新的module2/specific_文件时丢弃module1/specific_文件
,所以您还包括module2中的一些文件,这些文件是覆盖的?你能更新你的问题代码来显示你的答案吗?这样我就可以看到pathsI已经有了这些信息:“在flavor2中,我需要替换res文件夹中的一些文件,这会导致生成失败,并产生重复的资源。”你认为可以更清楚吗?你上面的所有代码都只包括module1中的res。。。没有第二个来源正如我在问题中所解释的,我已经尝试过了,但是它不适用于exclude
路径。您有此排除'src/module1/res/drawable/specific_file.xml'
,您可以尝试此排除'drawable/specific_file.xml'