將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:\Users\Administrator\Desktop\Qhfpsj\FirstSecretaryShowInfo\LandPatrolSys\app\libs\jackson-core-1.9.5.jar
File2: C:\Users\Administrator\Desktop\Qhfpsj\FirstSecretaryShowInfo\LandPatrolSys\app\libs\jackson-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:\Users\Administrator\Desktop\Qhfpsj\FirstSecretaryShowInfo\LandPatrolSys\app\libs\jackson-core-1.9.5.jar
File2: C:\Users\Administrator\Desktop\Qhfpsj\FirstSecretaryShowInfo\LandPatrolSys\app\libs\jackson-mapper-1.9.5.jar
那就再加一句:exclude 'META-INF/LGPL2.1'
然后再編譯,項目就可以跑起來了。