gradle - 将文件夹添加到 srcDir 除了 gradle 中的一个文件

标签 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.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.xmlmodule2/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/

相关文章:

Gradle 彩色输出(不再有 project.serviceOf() 或 services() api 方法)

java - 具有多个 Controller 的 Spring Boot API?

android - 如何知道第 3 方 aar 的依赖关系

java - Sdk 版本 28 未找到 AppCompatActivity 库

android - 升级到 Android Gradle 插件 3.2 后,Gradle 构建中的 Findbugs 失败

android-studio - Android 设备监视器未出现

java - 如何使用 Android Studio 在 Android 中创建独立库?

java - 使用 gradle 编译 zip,包括由同级子项目实现的库

android - Gradle 错误 : Minimum supported Gradle version is 3. 3. 当前版本为 3.2

java - 我在安装库时遇到问题