編譯報錯app:compile_releaseDebugJavaWithJavac

項目編譯報錯具體錯誤如下:

在這裏插入圖片描述
然後突然發現好多類都在報錯
在這裏插入圖片描述

以我多年(只有兩年^ - ^)的開發經驗來看肯定是哪個資源文件導致的。點擊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等等導致編譯沒過。

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