如何从Gradle sourceSet中彻底排除Android项目res目录下的OWNERS文件?
问题原因与解决方案
为什么你的exclude指令没生效?
你配置的sourceSets.main.resources是针对Java标准资源文件的(比如src/main/resources下的文件),但res目录下的文件是由Android Gradle插件单独处理的Android资源,二者属于完全独立的处理通道,所以给Java资源设置的排除规则,对Android资源目录里的OWNERS文件完全不起作用。
正确的排除配置
直接在Android插件的配置块里,针对res目录设置专属的排除规则:
方法一:在sourceSets的res节点下配置
android { // 保留你原有的其他Android配置(compileSdk、defaultConfig等) sourceSets { main { res { exclude '**/OWNERS' } } } }
方法二:更简洁的全局资源排除
android { resources { excludes += ['**/OWNERS'] } }
这两种配置都会让Android Gradle插件在扫描res目录时忽略所有名为OWNERS的文件,既不会编译它,也不会再报命名不合法的错误,同时文件能保留在原位置。
内容的提问来源于stack exchange,提问作者dave mankoff
相关产品推荐
相关产品推荐

