前言
记录下在工作中常见异常的出现和排查手段。
异常
数据库篇
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 ,然后会自动清理和重启,这样就不会报错了。