在最近的一个项目中碰到好几次finished with non-zero exit value 1、finished with non-zero exit value 2、finished with non-zero exit value 3这种莫名其妙的bug导致程序编译不过去。现在闲下来了总结一下解决办法:
finished with non-zero exit value 2:出现这种bug一般是因为你的项目里面出现了重复的jar包导致的,这种场景一般是在你引用的第三方依赖包里面和你的项目中导入了相同的jar包,一般常见的有v4,v7包。出现这种情况仔细检查一下,解决方法就是删除掉你项目中多余的jar包,保留依赖包里面的jar包就可以了。如果实在是没有发现有重复的jar包的话建议你重新换一个v4或者v7包。比如:
compile 'com.android.support:appcompat-v7:23.0.1'换成:
compile 'com.android.support:appcompat-v7:22.2.0'
finished with non-zero exit value 1:随着我的项目越来越大,到了最后面编译的时候又出现了这么一个玩意,后来百度了一下才发现也有很多和我一样遇到这种问题的,最终解决了这个问题的方法就是在build.gradle里面加入:
dexOptions {
javaMaxHeapSize "4g"
}
除了这种情况外也有可能子工程里面有资源图片是从主工程传入的提示图片重复,这个一般会提示哪张图片重复了,按照提示删除重复图片rebuild就可以了。如果以上两种方式都无法解决你的问题,或者你是把eclipse工程转移到android studio下的话那么检查一下你的launch icon的引用方式,如果是drawable的话给成mipmap,如果tools标红,manifest标签中增加xmlns:tools=”http://schemas.android.com/tools”即可。这里又要简单说一下在studio中drawable和mipmap的区别(mipmap下面放我们应用的icon,drawable下放我们应用的图片资源),具体的不多说,想详细了解的可以专门去百度一下。如果还无法解决的话欢迎留言一起讨论。
finished with non-zero exit value 3:java堆内存不足,我在stack over上面有一种解决方法是把"compile fileTree(dir: 'libs', include: ['*.jar'])"
改成 "provided fileTree(dir: 'libs', include: ['*.jar'])",这样能解决问题,但是我修改了build里面的配置解决的,修改如下:
</pre><pre name="code" class="java" style="font-size: 14px;">dexOptions {
javaMaxHeapSize "4g"
}
,有碰到这种情况的都可以试试,bug嘛,就是多试试,哪种可以用哪种.