記一次解決 Android 編譯報錯:Error:Execution failed for task ':app:transformClassesWithDexForDebug' 的過程

最近在研究 TDD 開發模式,當把架子搭好后,發現執行編譯報錯。折騰一番后解決了該問題。遂記錄下來,希望對同樣遇到問題的同學會有幫助。
PS: 有很多因素都會導致與此類似的問題,如果文中的方法不能解決你的問題,可以到評論區查看樂于分享的簡友們的解決方案,祝各位好運。

錯誤內容如下:

Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1

莫名其妙的錯誤,沒有解決思路。于是上網搜索,參考了多個方案也沒有解決問題。

但搜索過程還是有收獲的:

  • 為了測試方便,我新建了一個 Java Library 工程用來存放不依賴 Android 系統的類。然后將其添加到 app/build.gradle 作為依賴。
dependencies {
    ...
    compile project(':core')
}

當我把這行代碼去掉后,發現是可以編譯通過的,這就說明問題出在對庫的依賴上。

  • 在搜索解決方案的過程中,發現大部分遇到此類問題的人都是使用的 JDK 1.8 版本(相信你也應該注意到我使用的是哪個版本了,如果沒有的話請翻上去看一下_)。這并不像是偶然現象,于是懷疑 Gradle 與 JDK 1.8 存在兼容性問題。嘗試將工程依賴的 JDK 版本降到 1.7,再次嘗試編譯,成功!

小總結:

Gradle 目前還處在積極開發時期,有很多新版本功能都不太穩定,建議謹慎更新項目使用的 Gradle 版本。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容