错误信息:
Execution failed for task":ModuleName:mergeDebugResources"
xxxx.9.png:Error:com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:Process 'command .......aapt.exe' finished with non-zero exit value 42.
non-zero exit value 42,我在Stack Overflow上只找到2~3篇相关的帖子,对这个是解释是“使用aapt.exe校验时,文件名显示的格式与文件本身的格式不对应”。
我在项目迁移的时候有两个地方遇到了这个问题,第一是项目中存在直接把.jpg格式的图片强制改成.png的,这个容易理解;
另一种情况是.9.png图片报错。先来看看这张报错的图片:.
细心的朋友应该能发现,这张.9.png四周并没有“黑线”,但它在Eclipse里确实表现良好,拉伸之后没有失真,所以应该是一张确确实实的.9.png。
这有两种可能:一是这张图是从apk解压出来的文件中拿来的,而android在进行APK编译的时候会去掉.9.png中的黑线;二是通过其他第三方软件,比如xUtilmate等工具抹除了黑线。
这就导致Android Studio通过aapt.exe对png图片校验不通过。
你需要将图片的扩展名改回.png,并且重新绘制和生成.9.png才能在Android Studio当中使用。
这种方法在出问题的.9.png图较少的时候适用,但是如果你的项目里有几百张这样的.9.png,你是不是想砸电脑?
当我试图寻找一种简便的方式来批量解决这个问题的时候,我发现国内有位愤青同学也遇到了类似的问题,并且从国外某个论坛上找到了一种疑似可行的方法,并且一路从CSDN骂到百度贴吧;又从百度贴吧骂到ThinkSAAS,基本上把国内的论坛骂了个遍。。他的方法是
在build.gradle,android{}域中加上
aaptOptions.cruncherEnabled = false
aaptOptions.useNewCruncher = false
我发现我在android studio1.51中,这两句应该这么写:
可是非常遗憾,我加了之后并没有效果,可能跟gradle版本有关系。
如果大家找到可以批量解决这个问题的方法,希望能与我分享。