Android构建报错:执行MergeJavaResWorkAction失败,存在重复kotlin_builtins文件
问题原因
构建任务mergeDebugJavaResource执行失败的核心原因是依赖冲突:kotlin-stdlib(Kotlin标准库)和kotlin-compiler-embeddable(Kotlin编译器嵌入包)两个Jar包中存在完全相同路径的资源文件kotlin/internal/internal.kotlin_builtins,Gradle合并Java资源时无法判定优先使用版本,触发构建错误。
解决方案
方法一:添加打包规则(快速修复)
在app模块的build.gradle文件中,找到android下的packagingOptions配置块,新增一行资源处理规则即可:
android { // 其余原有配置保持不变 packagingOptions { // 原有已有的exclude规则保持不变,新增以下任意一行即可,推荐使用pickFirst pickFirst 'kotlin/internal/internal.kotlin_builtins' // 也可以使用exclude规则,效果一致 // exclude 'kotlin/internal/internal.kotlin_builtins' } }
修改后同步Gradle项目,重新构建即可正常通过。
方法二:修正依赖配置(根源解决)
该冲突的本质原因是你将代码检查工具ktlint用implementation方式引入,导致ktlint依赖的kotlin-compiler-embeddable被错误打包到生产APK中,和项目本身依赖的Kotlin标准库产生文件冲突。
找到app模块build.gradle的依赖块,修改ktlint的引入方式:
dependencies { // 注释或删除原有错误写法 // implementation "com.pinterest:ktlint:$ktlint_version" // 替换为正确的lint检查依赖配置 lintChecks "com.pinterest:ktlint:$ktlint_version" }
修改后同步Gradle,既可以保留ktlint的代码检查能力,也不会引入多余的依赖,从根源避免同类冲突。
内容的提问来源于stack exchange,提问作者Umut Soysal
相关产品推荐
相关产品推荐

