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

升级Build Tools 27.0.3后项目编译失败,报DuplicateRelativeFileException错误

排查与解决思路

嘿,这个问题我之前碰到过类似的,升级Build Tools到27.x版本后,Android的文件合并规则确实变严格了——之前能容忍的重复文件现在会直接抛出异常。你找不到project.clj很正常,因为它不是你自己编写的文件,而是第三方依赖库带进来的:多个依赖包里都包含了这个Clojure项目的配置文件,现在合并时触发了冲突。给你几个实用的排查和解决步骤:

  • 第一步:定位哪个依赖包含了project.clj
    你可以通过Gradle命令扫描所有依赖,找到冲突源头:

    • Mac/Linux环境在项目根目录执行:
      ./gradlew app:dependencies --configuration compileClasspath
      
    • Windows环境则执行:
      gradlew.bat app:dependencies --configuration compileClasspath
      

    或者用更精准的搜索命令,直接找出包含该文件的依赖:

    ./gradlew app:find -Ppattern=project.clj
    

    执行后会列出所有包含project.clj的依赖模块。

  • 第二步:解决重复文件冲突
    找到源头后,有两种常见的解决方式:

    1. 全局排除重复文件:在app模块的build.gradle中添加打包规则,直接排除所有project.clj文件(这个文件对Android项目没有实际作用):
      android {
          packagingOptions {
              exclude 'project.clj'
          }
      }
      
    2. 精准排除特定依赖中的文件:如果某个依赖是不必要的,直接移除它;如果必须保留该依赖,可以针对性排除其中的project.clj:
      implementation('com.example:some-library:1.0.0') {
          exclude fileTree(dir: 'META-INF', includes: ['project.clj'])
      }
      
  • 第三步:彻底清理缓存(进阶验证)
    如果之前的清理操作没用,可以试试更彻底的方式:

    • 手动删除项目根目录下的build文件夹,以及用户目录下的.gradle/caches文件夹
    • 然后执行./gradlew clean build --info,查看编译日志中关于project.clj的输出,进一步确认冲突来源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:46:14