android - 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.**.* { *; }
但没有成功。
解决方案
我偶然发现了同样的问题,目前的答案是错误@delegate:Transient
的:添加惰性将使反序列化的支持字段无效。
由于该问题仅在 时发生minifyEnabled = true
,因此这是 Proguard/R8 问题。我通过将以下几行添加到我的解决方案proguard-rules.pro
:
-keep class * implements kotlin.Lazy {
*;
}
推荐阅读
- android - Bare React Native Up and Running (Expo), Expo-web-browser:compileDebugJavaWithJavac
- javascript - 如何在 eslint/tslint 中配置忽略单行语句?
- python - Python unittest 的 setUpClass 不起作用
- nuget - “Xamarin.Mac2.0”NuGet 打包目标中的“2.0”是什么?
- postgresql - 使用引号内的引号通过 bat 内的 plink 执行 psql
- json - 在 json_table 中使用变量值
- excel-formula - 如何将 Excel 时间格式定义为 hhmm(否 :)
- python - UnboundLocalError:在赋值 fetchProcess 错误之前引用了局部变量 'ext'
- php - 列出客户的所有 Stripe 事件
- javascript - 使用 .map 为每个元素加 1