将Eclipse项目转换成AndroidStudio项目也不是第一次了,昨天转的时候遇到几个问题:
首先将项目导入androidstudio,导完后报错:
问题一:
Error:java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException:
Error:Execution failed for task ':app:mergeDebugResources'.
> Error: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException:
问题原因:咋一看是concurrent并发包报的异常,肯定会有很多种情况可以导致这个异常。我遇到的是.9图导致的这个问题。androidstudio会对.9图作严格的检查,不满足格式的.9图不会通过编译;
很明显这幅图不是.9,名字却为:unread_dot.9.png,于是编译不通过;
解决办法:网上有通过改配置比如:http://www.jianshu.com/p/f046b3f49e49;http://www.cnblogs.com/wangfeng520/p/6119531.html
改配置我没试过,我直接使用androidstudio自带的draw9patch来把问题图片修改成了.9.png图片;
问题二:
Error:(1, 1) 错误: 非法字符: 'ufeff'
Error:(1, 10) 错误: 需要class, interface或enum
问题原因:Eclipse可以智能的把UTF-8+BOM文件转为普通的UTF-8文件,Android Studio不行,所以编译时出现错误
解决方法: 用其他文档编辑工具将UTF-8+BOM编码的文件转为普通的UTF-8文件。比如我用EdItPlus打开文件:file-->save as-->选择UTF-8编码,覆盖保存
问题三:
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: C:UsersAdministratorDesktopQhfpsjFirstSecretaryShowInfoLandPatrolSysapplibsjackson-core-1.9.5.jar
File2: C:UsersAdministratorDesktopQhfpsjFirstSecretaryShowInfoLandPatrolSysapplibsjackson-mapper-1.9.5.jar
问题原因:看起来是因为多个 jar 包里包含了同样的文件(LICENSE.txt),导致打包时因为担心相互覆盖问题而提示出错。
解决方法: 尝试下在 app 下的 build.gradle 中的 android 部分增加一段配置,如下面这段代码所示:
packagingOptions { exclude 'META-INF/LICENSE' }
继续报错:
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/LGPL2.1
File1: C:UsersAdministratorDesktopQhfpsjFirstSecretaryShowInfoLandPatrolSysapplibsjackson-core-1.9.5.jar
File2: C:UsersAdministratorDesktopQhfpsjFirstSecretaryShowInfoLandPatrolSysapplibsjackson-mapper-1.9.5.jar
那就再加一句:exclude 'META-INF/LGPL2.1'
然后再编译,项目就可以跑起来了。