错误信息:
Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/LICENSE
File1: E:\Study\Android\Exam\app\libs\poi_3_1_4\poi-3.14-20160307.jar
File2: E:\Study\Android\Exam\app\libs\poi_3_1_4\poi-scratchpad-3.14-20160307.jar
之前用2.0版本是可以正常使用,但升到2.3后就报错了。重新导入后依旧出现这个问题。通过某收索引擎查到的信息都是说删掉就好,然而
既然导入外部类,就说明需要,既然需要,还让删掉,只能说方法不可取。
我猜测原因如下
编译器警告:下图红色方框,棕色背景项为警告项,虽然没有报错,但是导入外部类时会出错。因为项目是上个版本的AS创建的,软件升级后编译器也一同更新了(某些内容不向下兼容,这里的外部类导入问题可能就是其中之一)
解决方法
方法一:打开project Structure 查看 Build版本 并将其就改成创建项目时的版本(然而忘记创建时是哪个版本了)
可以看到低版本的没有被删除,所有可以尝试直接更改为低版本
方法二:将警告想改成升级后的项,将鼠标移到警告出,等弹出提示后,根据提示更改
修改完后点击顶上的按钮生效
方法三:软件版本降级-.- 这个是一个算不上方法的方法
方法二修改后再次编译结果:打脸了=。= 方法二失败
可行方案如下
让我们再看一遍信息
com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/LICENSE
恩,貌似就是这里,也就是说一开始就找错了方向,不过解决掉警告也是不错的
根据META-INF/LICENSE 去找。最后找到一个可行的参考方案
错误信息里的是META-INF/LICENSE,所有导入META-INF/LICENSE
然后原文里的是META-INF/LICENSE.txt 原文导入了META-INF/LICENSE.txt
由此推断:出现类似的直接导入相应的项即可
以下是可能出现的条目
参考文献:http://blog.csdn.net/lonewolf521125/article/details/44851697