Class 在 Android 上对同一个 class 抛出异常

Class cast exception to same class on Android

我在 Android 上遇到了 ClassCastException 的奇怪问题。一个 class 不能转换为相同的 class:

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 (samsung SM-G900F) 的 Samsung Galaxy S5 上。我在我的其他设备上从未遇到过这个问题:

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

好的我是哪里出了问题。看起来 Android 5.0 上的三星可能仍在使用 multidex 的旧实现(在 Android L 预览版中使用),因此如果您的应用超过 64k 限制,它会在您使用的应用的随机位置崩溃(ExampleClass) object投。

可以找到有关此问题的更多信息 here and here

We're also seeing this crash happen thousands of times per day. Crashlytics reports the crash as 100% Samsung devices (99% "SM G900F[Q]" device), and 100% Android 5.x. Seems to be another multidex issue on Samsung + Lollipop devices, as a.jaskev reports in #3.

看来要等三星解决这个问题了。现在我们所能做的就是在邮箱中查看我们的垃圾邮件和错误报告:)