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 ,然后会自动清理和重启,这样就不会报错了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章