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

Android同类型多资源文件夹的sourceSets配置方式是否正确?

问题1解答

这种通过sourceSets指定多资源目录的方式本身是Android Gradle插件官方支持的合法操作,但有两个注意点:

  • 只要你没有把资源类型的父目录(比如直接把src/main/res/mipmap作为srcDir同时下面还放了带限定符的子目录)加入配置,就不会违反官方的规范
  • Gradle同步不报错不代表配置生效:Gradle默认会自动忽略不存在的srcDir路径,不会触发同步失败。你可以在你配置的路径下放入测试资源,尝试在代码或者XML中引用对应R类的资源ID,能正常引用就说明配置生效。

问题2解答

不需要给所有资源类型都加配置,仅需要对你想要拆分多文件夹存放的资源类型做额外配置即可:

  • 不需要拆分的资源类型,沿用系统默认的目录结构就可以,不用在srcDirs里额外声明
  • 如果要拆分比如layout为多个子文件夹,你需要把拆分后的每一个子文件夹的完整路径都加入srcDirs列表,系统才会识别这些路径下的布局资源。

问题3解答

当前你对带限定符的mipmap的配置方式是错误的:
Android资源系统的命名规则要求,资源的限定符必须直接作为目录名的后缀,不能嵌套在资源类型目录下。比如你要拆分mipmap按业务分类,正确的目录结构应该是:

src/main/res/
  mipmap-mdpi_home/
  mipmap-mdpi_mine/
  mipmap-hdpi_home/
  mipmap-hdpi_mine/

之后把上述所有拆分后的目录都加入srcDirs列表即可,不能在默认的mipmap-mdpi等目录下嵌套子文件夹,资源系统无法识别这类嵌套路径下的资源。

补充报错解决

你遇到的drawable报错就是因为资源存放在了未被加入srcDirs的嵌套子目录中,或者子目录命名不符合资源命名规则导致系统无法识别。你可以按照上述的目录拆分规则调整drawable的目录结构,再把对应的路径加入srcDirs即可解决报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:45:03