【问题标题】:Exception: Unmarshalling unknown type code occurred at run time异常:在运行时发生解组未知类型代码
【发布时间】:2020-06-01 00:52:57
【问题描述】:

我正在开发 Android 应用程序,我们正在作为一个团队工作。我正面临一个严重的问题。那就是当我尝试从意图中获取数据时,它给了我以下异常

Parcel android.os.Parcel@355932a:解组未知类型代码 偏移量 712 处的 4784211

我知道在 SO 上有很多与此问题相关的帮助材料,但我的情况不同,而且安静令人难以置信.....

这是一个快速代码,可以查看我是如何获取我的对象的

       try {
                if (data.hasExtra("KEY_MY_MODEL")) { 

                    MyCustomModel newSelectedModel = data.getParcelableExtra("KEY_MY_MODEL");


                    //DO SOME THING WITH OBJECT
                }
            } catch (Exception e) {
                e.printStackTrace();
            }

案例1: 我在第一行遇到异常 if (data.hasExtra("KEY_MY_MODEL")) {

这很有趣,因为当我在调试时检查意图对象(数据)时,如果我使用调试查看意图对象,我可以看到我所有的自定义对象。

获取对象的键是相同的,如果任何情况下键是错误的,我认为if条件内的代码一定不能运行。因为它会返回假。

但不是返回 false,而是给出上述异常。

案例 2: 正如我告诉你的那样,我们在团队中工作,同一组代码在其他系统上运行完美,但是当我从我的系统运行应用程序并在设备上安装应用程序时,它是给出我上面提到的例外。

这非常令人沮丧。我认为 proguard 有问题,正如我在 S.O 上阅读的那样,但它仍然没有帮助。知道为什么会这样吗?这看起来像一个大错误。

注意:我使用的是 A.S 3.5,而在其他系统上使用的是 A.S 3.5,即使我们有相同的 sdk,配置和其他事情也很安静 两边一样……

【问题讨论】:

    标签: java android android-studio android-intent parcelable


    【解决方案1】:

    这似乎是一个 ProGuard 问题

    只需在proguard.rules.pro/txt中添加这一行

    -keepclassmembers class * implements android.os.Parcelable {
        static ** CREATOR;
    }
    

    【讨论】:

    • 与队友交叉检查你的 proguard 文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多