前言
記錄下在工作中常見異常的出現和排查手段。
異常
數據庫篇
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 ,然後會自動清理和重啓,這樣就不會報錯了。