NotSerializedException:设置 minifyEnabled true 后的 kotlin.UNINITIALIZED_VALUE

sos*_*ite 3 android delegates serializable gradle kotlin

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

\n
Caused by: java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = some.package.SomeClass)\n    at android.os.Parcel.writeSerializable(Parcel.java:1767)\n    \xe2\x80\xa6\nCaused by: java.io.NotSerializableException: kotlin.UNINITIALIZED_VALUE\n
Run Code Online (Sandbox Code Playgroud)\n

当我尝试转到class SomeClass : Parcelable另一个活动时发生崩溃。

\n

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

\n

Ren*_*ato 5

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

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

-keep class * implements kotlin.Lazy {
    *;
}
Run Code Online (Sandbox Code Playgroud)