首页 > 解决方案 > NotSerializableException: kotlin.UNINITIALIZED_VALUE 设置 minifyEnabled 后为 true

问题描述

minifyEnabled true在应用程序脚本中设置后,build.gradle我开始收到此异常:

Caused by: java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = some.package.SomeClass)
    at android.os.Parcel.writeSerializable(Parcel.java:1767)
    …
Caused by: java.io.NotSerializableException: kotlin.UNINITIALIZED_VALUE

当我尝试传递class SomeClass : Parcelable给另一个活动时发生崩溃。

我试图将所有应用程序类列入白名单,-keep class some.package.**.* { *; }但没有成功。

标签: androidkotlingradledelegatesserializable

解决方案


我偶然发现了同样的问题,目前的答案是错误@delegate:Transient的:添加惰性将使反序列化的支持字段无效。

由于该问题仅在 时发生minifyEnabled = true,因此这是 Proguard/R8 问题。我通过将以下几行添加到我的解决方案proguard-rules.pro

-keep class * implements kotlin.Lazy {
    *;
}

推荐阅读