Android常見異常記錄和排查技巧手冊

前言

記錄下在工作中常見異常的出現和排查手段。

異常

數據庫篇

Room

IllegalStateException

W/System.err: java.lang.IllegalStateException: Room cannot verify the data integrity. Looks like you've changed schema but forgot to update the version number. You can simply fix this by increasing the version number.

樣式篇

Resources$NotFoundException

2019-11-18 10:49:59.069 17958-17958/com.dustess.cms E/com.dustess.cm: No package ID ff found for ID 0xfffffe6c.
2019-11-18 10:49:59.088 17958-17958/com.dustess.cms E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.dustess.cms, PID: 17958
    android.content.res.Resources$NotFoundException: Resource ID #0xfffffe6c
        at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:216)
        at android.content.res.MiuiResourcesImpl.getValue(MiuiResourcesImpl.java:94)
        at android.content.res.Resources.loadXmlResourceParser(Resources.java:2181)
        at android.content.res.Resources.getLayout(Resources.java:1169)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:425)
        at com.chad.library.adapter.base.BaseQuickAdapter.getItemView(BaseQuickAdapter.java:1487)
        at com.chad.library.adapter.base.BaseQuickAdapter.createBaseViewHolder(BaseQuickAdapter.java:1000)

今天發現了一個異常,但是異常log中沒有指向應用層代碼的錯誤,就是排查找不到資源id。下面講解下排查思路。

  • 使用build-Analyze apk工具查看編譯後的0xfffffe6c是否出現。
    在這裏插入圖片描述
    覈查後發現id中並沒有此id。從而debuggetItemView(BaseQuickAdapter.java:1487)這行代碼。發現在BaseQuickAdapter類中,使用多類型進行添加時,getItemType()中並沒有加入我們期望的類型,所以報錯。

環境篇

Gradle sync failed: Already disposed: Module

解決方案:

  • Android studio 中刪除或者移除原有的 module 後一般會跳出來這樣一個彈窗,要解決這個問題很簡單
    進入 File --Invalidate Cache/Restart ,然後會自動清理和重啓,這樣就不會報錯了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章