Android集成谷歌翻译API编译报错:存在重复META-INF/LICENSE文件
解决Android集成谷歌翻译API时的META-INF/LICENSE冲突报错
嘿,这个问题我之前帮不少开发者踩过坑!当你集成谷歌翻译API后出现 Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'. More than one file was found with OS independent path 'META-INF/LICENSE' 这个报错,本质是多个依赖库(包括谷歌翻译的SDK)都打包了同名的META-INF/LICENSE文件,Gradle在合并资源的时候不知道该保留哪一个,直接抛出冲突了。
下面给你两种实用的解决办法:
方法一:直接排除重复的LICENSE文件(最常用)
在你的app模块下的build.gradle文件中,添加packagingOptions配置,告诉Gradle打包时忽略所有重复的LICENSE文件:
android { // 其他配置... packagingOptions { exclude 'META-INF/LICENSE' // 如果后续还遇到类似的LICENSE.txt、NOTICE等重复文件,也可以一并排除 // exclude 'META-INF/LICENSE.txt' // exclude 'META-INF/NOTICE' } }
配置完成后,点击Android Studio右上角的「Sync Now」同步Gradle,然后重新构建项目即可。
方法二:保留第一个找到的LICENSE文件(适用于在意许可证保留的场景)
如果你不想完全排除,希望保留某一个库的LICENSE文件,可以用pickFirst让Gradle优先保留第一个找到的文件:
android { // 其他配置... packagingOptions { pickFirst 'META-INF/LICENSE' } }
不过要注意:这种方式会忽略其他依赖库的LICENSE文件,如果你需要严格遵守各个库的许可证条款,建议先确认这么做是否合规。
内容的提问来源于stack exchange,提问作者hr intern
相关产品推荐
相关产品推荐

