Databinding 編譯抓瞎(org.gradle.api.GradleException: Compilation error. See log for more details)

一、概述背景

databinding 出來好久好久了, 一直是拒絕使用的, 最早的原因就是 出錯了抓瞎找不到錯誤,報一個統一的錯誤,一臉懵逼。
新項目使用mvvm,databinding 是基礎組件。 代碼寫啊寫,接着編譯 運行,找出錯誤修復,喝口水,檢查功能,如此流程,一去不復返。 步履維艱,寫代碼不敢寫多,差不多就得編譯下,因爲啥,因爲拋出錯誤是統一錯誤,找不到出錯在哪裏,得看git history 或者local hisory 自己改了啥,去註釋分析瞅瞅。

週六原來是想把一個功能寫完善下,結果又抓瞎報錯了,特點花時間記錄下,下回做明瞎。

下文舉例一個faq:org.gradle.api.GradleException: Compilation error. See log for more details

二、faq:org.gradle.api.GradleException: Compilation error. See log for more details

對的, 出錯了就是報這個。
在這裏插入圖片描述

點開左邊的task 樹
在這裏插入圖片描述
報的是kotin,kapt 編譯的錯誤。

三、懵逼的分析誤區

報錯裏有報kotlin 字眼, 由於主項目是 java 寫的,我的模塊有局部文件是kotlin,很容易造成是kotlin混編導致的錯誤不明確,或者kotlin 混編沒搭建好的既視感。然java kotlin混編,純kotlin開發,是已經有1-2年的項目經驗的。雖然有這種自信但是還是會懷疑是不是混編導致的。通過瞎搜,有說混編用databinding 要加:
kapt "com.android.databinding:compiler:3.1.4"

感覺蠻有道理的,然而無用。

四、正確的分析

經驗分析:按經驗這種錯誤,就是databinding 導致的統一報錯,databinding 出錯就是xml 裏寫錯了,或者對應的vm 沒寫對,有時候是會報出明細錯誤的,有時候就報這種籠統錯誤,抓瞎,然後一個個去看改動後和歷史正確的有啥區別。

正確分析:以前但凡報錯找不到錯的,會報

	Run with --stacktrace option to get the stack trace. Run with --info pr --debug ...
    Run with --debug option to get more log output. Run with --scan to get full insights.

雖然databinding 的這種不報這個錯誤,不凡試試,經典的

	--stacktrace --debug
	--stacktrace --debug --scan

操作步驟:
之前有寫一篇FAQ(Run with --stacktrace option to get the stack trace. Run with --info pr --debug …)

**注意:**這裏有細節,新版本的android studio 報錯的時候 經常出現的是目錄樹這邊的結構,而不是傳統的直接都是log的形式,這裏有個切換按鈕

五、出結果

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章