android.app.RemoteServiceException 分析与解决

android.app.RemoteServiceException这个异常在线上bug反馈平台频繁上报,但是测试和开发从未复现,放着好久都未解决.细看bug反馈平台的上报趋势和日志后终于找到了解决方案.

bug反馈平台截图如下:

上报数量:
bug平台截图1
特征:版本分布广,数量大.

android版本分布:
bug平台截图2
特征:低版本为主,尤其4.4.2

最近发布几个版本的上报趋势:
版本1
bug平台截图3
版本2
bug平台截图4
版本3
bug平台截图5

特征:

  • 用户刚升级版本的时候异常上报特别多.
  • 停止发布的版本,几乎没有异常上报(该版本必然会有留存在用户上)

结论:该异常极有可能发生在用户更新应用的时候.

其中一个crash日志:
bug平台截图7

Bad notification posted from package com.tcl.live: Couldn't create icon: StatusBarIcon(pkg=com.tcl.liveuser=0 id=0x7f0200d5 level=0 visible=true num=0 )

id为资源id,可以在apk中找到(使用android studio即可).在项目中找到该图片后,是用于设置notification smallIcon的,发现只在xxhdpi中配置了,其他目录都没有.尝试性的在各个目录都配置了相应分辨率的图片后,bug反馈平台这个异常几乎根治了!!!

其中另一个crash日志:
bug平台截图6

图中id即为notification id,是代码里面设置的.通过这个可以找到出问题的notification.在该项目中对应常驻通知栏,所以更新应用的时候这个通知还展示在statusbar.尝试性的在主动更新应用的时候取消相应的通知栏.

总结:

  • notification的图标需要在各个分辨率目录下配置.
  • 在更新应用的时候可以根据api版本主动取消notification.

参考: