带注释的SerializedName成员在发行版Android中变得模糊不清

问题描述

在最近的发行版本创建中,我的一个具有@Serializedname成员的类正变得模糊不清,而在先前的发行版中没有发生。

我的课:

data class Segments(
        @Serializedname("list")
        val list: List<Segment>
)

也在proguard中使用-keepattributes *Annotation*

请有人帮我,这是怎么了?

解决方法

我花了很多时间弄清楚为什么我的其他类成员没有被混淆并且没有出现空指针崩溃。

首先使缓存无效并重新启动,主要是缓存问题。如果不起作用,请尝试以下解决方案。

(我的假设是 Proguard / R8搞砸了)。我知道我可以使用@Keep,但我不想这样做,因为它是 @SerializedName 注释。后来找到了解决方法,

  1. 初始化的数据成员

  2. 使用@Parcelize注释并实现了Parcelable,

     @Parcelize
     data class Segments(
         @SerializedName("list")
         val segments: List<HomeFSegmentsSegment> = ArrayList()
     ) : Parcelable
    

这可能/可能不是解决问题的确切方法,但确实解决了问题。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...