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

Android product flavour构建未正确加载同名drawable资源怎么办

问题根源

Android资源加载时的优先级规则是 资源限定符匹配度 > 来源集(sourceset)优先级,你遇到的问题就是这个规则导致的:

  • 构建flavor版本时,虽然flavor来源集的优先级高于main来源集,但系统优先匹配和设备当前密度完全对应的限定符资源
  • main目录下的image.png带有具体密度限定符(hdpi/xhdpi等),和运行设备的密度匹配度远高于flavor目录下无任何密度限定符的drawable/image.xml,所以会优先加载main下的PNG资源

解决方案

你可以任选以下一种方案实现需求:

方案1(推荐,适配所有密度)

将flavor目录下的矢量图image.xml移动到flavor/res/drawable-anydpi/目录下。
drawable-anydpi是系统最高优先级的密度限定符,优先级高于所有具体密度的限定符,只要该目录下存在同名资源,就会优先加载,完美适配矢量图自适应密度的特性,同时不会影响main下的PNG资源给其他风味使用。

方案2(保持目录结构,修改main下资源配置)

如果不需要为PNG做分密度适配,你可以将main下的所有PNG资源统一放到main/res/drawable/无密度限定符目录下,此时flavor和main下的资源限定符匹配度相同,系统会按sourceset优先级优先加载flavor下的矢量图。

注意:请确认你的build.gradle中配置的productFlavor名称和资源目录的flavor文件夹名称完全一致,大小写敏感。

验证方式

修改后构建flavor版本,打开Android Studio的 Build -> Analyze APK 功能,选中构建出的APK查看res/drawable相关目录下的资源,确认最终打包的是你期望的矢量图资源即可,无需修改Compose侧的Image组件代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:36:08