weixin_39589923
weixin_39589923
2021-01-10 01:18

app版本升级崩溃问题

异常类型:类型转换出错,classcastException

手机型号:小米、华为、三星等测试机均崩溃

手机系统版本:Android4.2 - Android7.0

Robust版本:0.3.3

Gradle版本:2.14

系统:windows

异常现象: 老版本app中没有加入robust,即将上线的新版加入了robust,但是在老版本不卸载的前提下直接使用升级安装新版本就会报出类型转换出错,但是如果将老版本卸载,独立安装新版本就不会有任何问题。另外如果将新版本的robust全部注释,在老版本基础上升级安装新版本也不会有异常崩溃。 崩溃日志: App has crashed, executing CustomActivityOnCrash's UncaughtExceptionHandler java.lang.ClassCastException: com.sigbit.tjmobile.channel.bean.i cannot be cast to com.sigbit.tjmobile.channel.bean.h

该提问来源于开源项目:Meituan-Dianping/Robust

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

7条回答

  • weixin_39906245 weixin_39906245 4月前

    新版本上你是在哪里执行robust补丁代码的呢?

    点赞 评论 复制链接分享
  • weixin_39589923 weixin_39589923 4月前

    我是在启动页里执行的补丁代码。先去服务器下载补丁文件,下载完成之后执行补丁代码。如果没有文件,就不执行。

    点赞 评论 复制链接分享
  • weixin_39906245 weixin_39906245 4月前

    com.sigbit.tjmobile.channel.bean.i cannot be cast to com.sigbit.tjmobile.channel.bean.h 这两个混淆之后的class对应的是同一个原class? 感觉像是补丁使用了错误的mapping文件

    点赞 评论 复制链接分享
  • weixin_39589923 weixin_39589923 4月前

    在混淆的时候,我仅仅做了以下几点: -keep class com.sigbit.tjmobile.channel.robust.{*;} -keep class com.sigbit.tjmobile.channel.patch.{;} -keep class meituan.robust.patch.{;} -keep class com.meituan.robust.*{;}

    不知道是不是还有要补充的

    点赞 评论 复制链接分享
  • weixin_39906245 weixin_39906245 4月前

    你制作自动化补丁的时候使用的mapping文件是正确的吗?

    点赞 评论 复制链接分享
  • weixin_39589923 weixin_39589923 4月前

    现在问题是还没执行补丁文件。因为老版本没有robust,这次的新版本添加了robust,准备发布上线。结果在原先的升级方法升级之后,运行就报错了。因为是新版本的第一次安装,没有热补丁文件,所以,并没有执行robust语句。

    点赞 评论 复制链接分享
  • weixin_39906245 weixin_39906245 4月前

    那如果robust还没有执行的话,这个exception理论上与robust关系不大吧 能看看你这个exception对应的代码吗

    点赞 评论 复制链接分享

相关推荐