項目編譯報錯具體錯誤如下:
然後突然發現好多類都在報錯
以我多年(只有兩年^ - ^)的開發經驗來看肯定是哪個資源文件導致的。點擊build
左側有ab字母的按鈕
拖到最底下,上面的錯其實不是真正問題原因,如下:
這裏我們可以看到錯誤: 程序包xxx.xxx.databinding不存在
可是在我的項目目錄裏並沒有databinding
這個包,而是在generatedjava
下有一個,這裏的代碼都是編譯時期自動生成的,比如DataBinding;butterknife;dagger
。我的問題就出在butterknife上。
錯誤: 程序包xxx.xxx.databinding這個報錯原因其實是butterknife問題導致編譯沒過,所以DataBinding自動生成的代碼也有問題
錯誤: @OnClick annotation for method contains duplicate ID 2131298051. (com.popupwindow.MainRemoteWindow.onViewClicked)
public void onViewClicked(View view) {
定位到MainRemoteWindow類看下源碼
@OnClick({R.id.title, R.id.right_top_btn, R.id.keyboard_clean, R.id.remote_close, R.id.remote_exit
, R.id.remote_change, R.id.remote_voice_down, R.id.remote_voice_up, R.id.remote_center_control_ok,
R.id.remote_center_control_up, R.id.remote_center_control_down, R.id.remote_center_control_left, R.id.remote_center_control_right,
//多餘了一行
R.id.remote_center_control_up, R.id.remote_center_control_down, R.id.remote_center_control_left, R.id.remote_center_control_right})
public void onViewClicked(View view) {
}
這下看到問題了,在R文件中第一個多餘的R.id.remote_center_control_up
的id值的16進制是0x7f090703
,換算成10進制剛好就是2131298051
,可能是手快了多複製了一行,一個很小的失誤浪費的大半天才解決。
這個問題好難發現啊,沒有具體的錯誤日誌,還誤導我去找是不是少了databinding
的包,是不是databinding
跟其他包衝突等等;butterknife
也沒有提示,部門三個人找了半天,最終還是讓我拿下了。
總結:遇到類似問題可以參考我的解決辦法,看到錯的時候不要慌,仔細通過現有的日誌去分析產生的原因。
幾十幾百的錯,一般都是佈局、資源文件、.9圖、包衝突、Studio出BUG等等導致編譯沒過。