gradle编译异常记录:finished with non-zero exit value 1-3

3个错误non-zero exit value 1; non-zero exit value 2; non-zero exit value 3

被编译的代码或资源有问题:(non-zero exit value 1)

出现这种编译异常表现是 exit value 1,一般会给出错误提示,所以很容易排查。这种错误很常见,错误提示有时候是在日志中明显的给出来了,如下示例所示

    :app:processDebugManifest
    :app:processDebugResources
    \app\src\main\res\layout\activity_welcome.xml
    Error:(42, 26) No resource found that matches the given name (at 'src' with value '@drawable/welcome_03').
    Error:Execution failed for task ':app:processDebugResources'.
    com.android.ide
    .common.process.ProcessException: org.gradle.process.internal.ExecException: 
    Process 'command 'D:\android-sdk-windows\build-tools\22.0.1\aapt.exe'' finished with non-zero exit value 1

上面错误提示找不到welcome_03这个drawable资源。有时候没有明显的提示,如下面这种错误:

    :app:transformClassesWithMultidexlistForDebug UP-TO-DATE
    :app:transformClassesWithDexForDebug FAILED
    Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
    > com.android.build.api.transform.TransformException: 
    com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: 
    com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: 
    Process 'command 'C:\Program Files\Java\jdk1.7.0_79\bin\java.exe'' finished with non-zero exit value 1

上面这种错误没有给出很显示的提示,但是可以知道是在执行Error:Execution failed for task ':app:transformClassesWithDexForDebug'这一步出错了,至少缩小了错误的排查范围,这个时候就需要经验来判断了,自己之前改过什么,自己回想一下。有时候往上面看错误日志,也会发现有很明显的错误提示。

jar包冲突:(non-zero exit value 2 )

主要表现为编译后出现finished with non-zero exit value 2错误,原因是jar包冲突,导致的原因可能是在dependencies中使用compile files()导入一次jar包,然后有其它jar的引入方式使用compile’com.xxx’方式,正好又引用了这个jar包,所以导致了重复引用jar包的冲突。最常见的是support-v4包的重复引用。具体报错如下所示:


image.png
 com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: 
org.gradle.process.internal.ExecException: Process 'command ''D:\Develop\Java\jdk1.8.0_172\bin\java.exe''
 finished with non-zero exit value 2 

这个错误在app的build.gradle里面添加下面这句就好了。

android {
    defaultConfig {
        ...
        multiDexEnabled  true 
    }
}
编译的代码过多导致内存不足:( non-zero exit value 3 )
com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException:
 org.gradle.process.internal.ExecException: Process 'command 'D:\Develop\Java\jdk1.8.0_172\bin\java.exe'' 
finished with non-zero exit value 3 

这个错误就在app.bulid里面加上这句,再rebuild ,之后再运行就行了。4g可以看电脑配置修改(2g,3g,6g,8g)。

dexOptions {
    javaMaxHeapSize  "4g" 
}

如图:

gradle编译异常记录:finished with non-zero exit value 1-3_第1张图片
image

似乎看到了问题的所在,我的是说的第一个错误,看起来是依赖包重复了 ,好吧,那就找重复的包吧,重新修改了之后,再次运行,还是出现了这个错误,我确定已经没有重复的包了,啊啊,这个似乎不能解决我的问题啊,然后我又去百度了,也有好多说的的,也有的说因为jdk为1.8造成的,可我的不是1.8,是1.7的,也有人说造成这个问题出现的原因有很多种,看到这里有木有一种想哭的冲动,我是有了,然后问了一个大神,大神告诉我可以在android studio新建一个module,然后替换对应目录,然后我能怎么办?只能先按照这样的方法试试了,也是一种解决方案啊。来开始动手。

我在自己的studio随便创建了一个项目,先运行试试,完蛋了,还是出现这个问题啊,这回就真的不理解了,我什么都没做也出现这个问题?后来我以为是我的电脑安装了2个studio,会不会冲突了,然后就把这个问题放在群里去问了,以下是我提问的

请问电脑如果安装了两个studio会导致冲突吗随便创建一个demo,提示这个错误 :

image

然后有人开始回答了:

两个不同版本才行

这个错是内存太小了

也可能是buildTools版本的问题

内存加大就行了

jar包冲突,或方法数超了

你的buildTools版本是多少的,前些的我用的24的就报的这个错误,调成23的就好了

看到最后这个回答,我的眼睛亮了,会不会是这个问题呢,我去查看了我studio当前的buildTools版本

gradle编译异常记录:finished with non-zero exit value 1-3_第2张图片
image

果然是24,于是我改成了23,重新运行,哇哇哇,真的可以啦,感动的都要哭了啊,然后我问为什么这样就可以解决呢?

有人回答:

其实我也不清楚为啥

我把buildTools更新到最新版就出现这个问题了,应该是某些兼容性的问题吧

compileSdkVersion用24,buildtools用24

gradle编译异常记录:finished with non-zero exit value 1-3_第3张图片
image

我原来compileSdkVersion用23,buildtools用24,运行出了这个问题,现在改成23的就没事了,

果然还得一致,看别人的博客说这样是没事的。。。

然后有人说:

builtools24和以前版本不同了,有appt和appt2,以前是只有appt的

尽量保证版本一致

SdkVersion 是24 buildToolsVersion 可以用24.0.1

学到了有木有,果然造成问题的原因有很多种的,并不是每一种都适合自己啊,还得自己去找原因啊!!!

转载文章地址:https://blog.csdn.net/lxk_1993/article/details/50511172

你可能感兴趣的:(gradle编译异常记录:finished with non-zero exit value 1-3)