You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

声明res.srcDirs导致Android Studio资源文件变更检测失效问题

问题根因

你的配置存在错误,核心是直接对res.srcDirs执行赋值操作,覆盖了AGP(Android Gradle插件)内置的默认资源路径配置。
AGP默认会自动将src/main/res、当前构建变体专属的res目录(如src/internalDevelopment/res)纳入资源集合,同时会对这些默认路径做专属的增量构建标记。你使用res.srcDirs = [xxx]的写法直接替换了默认的路径集合,会丢失AGP用于增量资源检测的专属标记,哪怕你手动把src/main/res写到配置列表里,也无法触发正常的变更监听逻辑,最终导致主资源目录的修改被构建流程跳过。而你自定义的src/nonproduction/res等目录是手动新增的,没有默认标记的冲突问题,所以变更可以正常识别。

修复方案

删除所有sourceSet中对res.srcDirs的赋值操作,改用追加的方式添加自定义资源目录即可,不需要手动声明src/main/res,AGP会自动引入该目录。
修正后的配置示例如下:

sourceSets {
    internalDevelopment {
        java.srcDir('src/internal/java')
        java.srcDir('src/nonproduction/java')
        // 追加自定义资源目录,不覆盖默认配置
        res.srcDir 'src/nonproduction/res'
    }
    internalStaging {
        java.srcDir('src/internal/java')
        java.srcDir('src/nonproduction/java')
        res.srcDir 'src/nonproduction/res'
    }
    internalProduction {
        java.srcDir('src/internal/java')
        java.srcDir('src/production/java')
        res.srcDir 'src/production/res'
    }
    externalProduction {
        java.srcDir('src/external/java')
        java.srcDir('src/production/java')
        res.srcDir 'src/production/res'
    }
}

如果需要明确指定多个自定义资源目录,也可以用+=写法:

res.srcDirs += ['src/xxx/res', 'src/yyy/res']

修改配置后重新同步Gradle即可恢复正常的资源变更检测逻辑,无需额外清理缓存或重建项目。

内容的提问来源于stack exchange,提问作者Steve

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 10:54:01