3個錯誤non-zero exit value 1; non-zero exit value 2; non-zero exit value 3
被編譯的代碼或資源有問題:(non-zero exit value 1)
出現(xiàn)這種編譯異常表現(xiàn)是 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
上面這種錯誤沒有給出很顯示的提示,但是可以知道是在執(zhí)行Error:Execution failed for task ':app:transformClassesWithDexForDebug'這一步出錯了,至少縮小了錯誤的排查范圍,這個時候就需要經(jīng)驗來判斷了,自己之前改過什么,自己回想一下。有時候往上面看錯誤日志,也會發(fā)現(xiàn)有很明顯的錯誤提示。
jar包沖突:(non-zero exit value 2 )
主要表現(xiàn)為編譯后出現(xiàn)finished with non-zero exit value 2錯誤,原因是jar包沖突,導(dǎo)致的原因可能是在dependencies中使用compile files()導(dǎo)入一次jar包,然后有其它jar的引入方式使用compile’com.xxx’方式,正好又引用了這個jar包,所以導(dǎo)致了重復(fù)引用jar包的沖突。最常見的是support-v4包的重復(fù)引用。具體報錯如下所示:

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
}
}
編譯的代碼過多導(dǎo)致內(nèi)存不足:( 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 ,之后再運(yùn)行就行了。4g可以看電腦配置修改(2g,3g,6g,8g)。
dexOptions {
javaMaxHeapSize "4g"
}
如圖:
似乎看到了問題的所在,我的是說的第一個錯誤,看起來是依賴包重復(fù)了 ,好吧,那就找重復(fù)的包吧,重新修改了之后,再次運(yùn)行,還是出現(xiàn)了這個錯誤,我確定已經(jīng)沒有重復(fù)的包了,啊啊,這個似乎不能解決我的問題啊,然后我又去百度了,也有好多說的的,也有的說因為jdk為1.8造成的,可我的不是1.8,是1.7的,也有人說造成這個問題出現(xiàn)的原因有很多種,看到這里有木有一種想哭的沖動,我是有了,然后問了一個大神,大神告訴我可以在android studio新建一個module,然后替換對應(yīng)目錄,然后我能怎么辦?只能先按照這樣的方法試試了,也是一種解決方案啊。來開始動手。
我在自己的studio隨便創(chuàng)建了一個項目,先運(yùn)行試試,完蛋了,還是出現(xiàn)這個問題啊,這回就真的不理解了,我什么都沒做也出現(xiàn)這個問題?后來我以為是我的電腦安裝了2個studio,會不會沖突了,然后就把這個問題放在群里去問了,以下是我提問的
請問電腦如果安裝了兩個studio會導(dǎo)致沖突嗎隨便創(chuàng)建一個demo,提示這個錯誤 :
然后有人開始回答了:
兩個不同版本才行
這個錯是內(nèi)存太小了
也可能是buildTools版本的問題
內(nèi)存加大就行了
jar包沖突,或方法數(shù)超了
你的buildTools版本是多少的,前些的我用的24的就報的這個錯誤,調(diào)成23的就好了
看到最后這個回答,我的眼睛亮了,會不會是這個問題呢,我去查看了我studio當(dāng)前的buildTools版本
果然是24,于是我改成了23,重新運(yùn)行,哇哇哇,真的可以啦,感動的都要哭了啊,然后我問為什么這樣就可以解決呢?
有人回答:
其實我也不清楚為啥
我把buildTools更新到最新版就出現(xiàn)這個問題了,應(yīng)該是某些兼容性的問題吧
compileSdkVersion用24,buildtools用24
我原來compileSdkVersion用23,buildtools用24,運(yùn)行出了這個問題,現(xiàn)在改成23的就沒事了,
果然還得一致,看別人的博客說這樣是沒事的。。。
然后有人說:
builtools24和以前版本不同了,有appt和appt2,以前是只有appt的
盡量保證版本一致
SdkVersion 是24 buildToolsVersion 可以用24.0.1
學(xué)到了有木有,果然造成問題的原因有很多種的,并不是每一種都適合自己啊,還得自己去找原因啊!!!
轉(zhuǎn)載文章地址:https://blog.csdn.net/lxk_1993/article/details/50511172