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

Android Studio中不同产品风味出现重复资源问题求助

问题原因

你当前的sourceSets配置逻辑有误:在flavor1和flavor2的sourceSet块中设置debug.assets.srcDirs,实际上是将对应assets目录添加到所有Debug变体的资源搜索路径中,而非仅当前风味的Debug变体;同理,release.assets.srcDirs会被添加到所有Release变体中。

这就导致构建某个风味的变体时,会同时加载其他风味同类型(Debug/Release)的assets目录,当目录中存在同名文件时,就会触发Duplicate resources错误。

解决方法

方法1:使用变体专属sourceSet配置

直接针对具体变体(如flavor1Debug、flavor1Release)单独设置assets目录,确保每个变体只加载自身对应的资源路径:

productFlavors {
    flavor1 { ... }
    flavor2 { ... }
}
sourceSets {
    main {
        java.srcDirs = [ ... ]
        jniLibs.srcDirs = [ ... ]
    }
    // 配置风味通用资源
    flavor1 {
        res.srcDirs 'path to flavor1 res'
    }
    flavor2 {
        res.srcDirs 'path to flavor2 res'
    }
    // 配置变体专属assets
    flavor1Debug {
        assets.srcDirs 'path to flavor1 debug assets'
    }
    flavor1Release {
        assets.srcDirs 'path to flavor1 release assets'
    }
    flavor2Debug {
        assets.srcDirs 'path to flavor2 debug assets'
    }
    flavor2Release {
        assets.srcDirs 'path to flavor2 release assets'
    }
}

方法2:遵循Android标准目录结构(推荐)

无需手动配置sourceSets,直接将assets按变体目录放置,Android Gradle插件会自动识别对应变体的资源:

  • flavor1 Debug assets:src/flavor1Debug/assets/
  • flavor1 Release assets:src/flavor1Release/assets/
  • flavor2 Debug assets:src/flavor2Debug/assets/
  • flavor2 Release assets:src/flavor2Release/assets/

这种方式符合插件的默认逻辑,无需额外配置,能彻底避免跨风味的资源冲突。

方法3:使用setSrcDirs替换路径(不推荐)

如果坚持手动配置,可通过setSrcDirs明确替换资源路径(而非默认的追加逻辑),避免同时包含其他风味的目录:

sourceSets {
    main {
        java.srcDirs = [ ... ]
        jniLibs.srcDirs = [ ... ]
    }
    flavor1 {
        res.srcDirs 'path to flavor1 res'
        debug.assets.setSrcDirs(['path to flavor1 debug assets'])
        release.assets.setSrcDirs(['path to flavor1 release assets'])
    }
    flavor2 {
        res.srcDirs 'path to flavor2 res'
        debug.assets.setSrcDirs(['path to flavor2 debug assets'])
        release.assets.setSrcDirs(['path to flavor2 release assets'])
    }
}

注意:这种方式可能覆盖main sourceSet中的assets路径,需谨慎使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 17:01:24