类将异常投射到Android上的同一类



我在Android上使用ClassCastException时遇到了一个奇怪的问题。一个类不能强制转换为同一类:

java.lang.RuntimeException: Unable to start activity ComponentInfo: java.lang.ClassCastException: com.example.model.BadeWrapper cannot be cast to com.example.model.BadgeWrapper
java.lang.ClassCastException: com.example.events.widgets.TouchyWebView cannot be cast to com.example.events.widgets.TouchyWebView
java.lang.ClassCastException: com.example.friends.widgets.FriendsTabView cannot be cast to com.example.friends.widgets.FriendsTabView

当我找到有错误的行时,它所做的只是按 id 查找视图或使用参数创建片段,例如:

FriendsTabView friendsTabView;
friendsTabView = (FriendsTabView) view.findViewById(R.id.friends_bottom_tab_panel);

正如我的BugSense所说,此问题仅在带有android 5.0.0(三星SM-G900F)的三星Galaxy S5上发生。我从未在其他设备上遇到过此问题:

  • 摩托罗拉Moto G 1st代(安卓5.0.1)
  • 三星银河S3迷你(安卓4.1.2)
  • LG G2 迷你 (安卓 4.4.2)
  • 索尼Xperia L (安卓 4.1.2)

以前有人遇到过这个问题吗?有什么办法可以解决它吗?

好的,

我的问题在哪里。看起来Android 5.0上的三星可能仍然使用multidex的旧实现(在Android L Preview中使用),因此如果您的应用程序超过64k限制,它将在您使用(ExampleClass) object投射的应用程序上的随机位置崩溃。

有关此问题的更多信息,请参阅此处和此处。

我们也看到这种崩溃每天发生数千次。 Crashlytics将崩溃报告为100%三星设备(99%"SM G900F[Q]"设备)和100%Android 5.x。似乎是三星+棒棒糖设备上的另一个多dex问题,正如a.jaskev在#3中报道的那样。

看起来我们必须等到三星解决这个问题。现在我们所能做的就是在邮箱上查看带有错误报告的垃圾邮件:)

最新更新