在將一個Eclipse的項目轉移到AndroidStudio的過程中,碰到了的問題如下:
Error:Execution failed for task ':learnChinese:mergeDebugResources'. > Error: java.util.concurrent.ExecutionException:com.android.ide.common.process.ProcessException:
從報錯來看可以定位到時資源文件出問題了,一個在Android 上運行好好的項目怎么會在AndroidStudio里面出現這種問題,頓覺頭大了,查閱各種資料后來才發現了原來是.9.png圖片造成的,真是作孽啊~
“點九”是andriod平台的應用軟件開發里的一種特殊的圖片形式,文件擴展名為:.9.png,也就是說項目資源文件夾中,只要圖片的文件后綴是.9.png的,就說明這是點9圖片,當我們用Eclipse等編譯的時候,它遇到文件后綴是.9.png的文件,首先檢查它實際上是不是點9圖片,如果是,按點9圖片處理;如果不是,按找默認圖片處理。也就是說Eclipse自動幫我們完成了轉化,容忍了我們的圖片格式錯誤。
AndroidStudio使用的是android-maven-plugin插件,在aAndroidStudio下報錯的原因,是因為聲明為點9圖片的文件,實際上不是真正的點9圖片,解析圖片出錯。android-maven-plugin插件會嚴格檢查圖片格式,如果不匹配就報錯。
解決方法:
- 要么把圖片制作成點9圖片,要么去掉圖片文件名中的.9;
- 有一個朋友他出現這個問題的原因是公司的加密系統對圖片進行了加密,導致AS解析圖片出錯,去除對這類圖形文件的加密,問題也能得到解決;
- 網上看到還有一種可能是:手動把圖片等各式改過,比如圖片原本是jpg格式然后強制改成png的也可能會出問題,改回原本的格式即可。
-
去除掉PNG合法性檢測,在build.gradle里的buildToolsVersion下面添加以下兩句:
android { ... aaptOptions.cruncherEnabled = false aaptOptions.useNewCruncher = false ... }