android 混淆后空指针,Proguard混淆后,data class 空指针

开启混淆并使用shrinkResources为true后,一个data class在访问其textColor字段时出现空指针异常。异常发生在解析配置类的过程中。问题根源在于R8与Gson的不兼容,导致字段值为空。解决方案包括禁用R8或添加混淆规则,保护Gson数据类成员不被混淆。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现象

开启混淆后shrinkResources true后,访问如下代码的textColor触发了空指针异常。

data class LyricStyleConfig(

/** 通用配置 */

@SerializedName("font") val font: String?,

@SerializedName("fontID") val fontId: Int?,

@SerializedName("textSize") val textSize: Int,

@SerializedName("textSpacing") val textSpacing: Int,

/** 第一行字相关配置 */

@SerializedName("textColor") val textColor: String?,

@SerializedName("shadowOffset") val shadowOffset: Float,

@SerializedName("shadowColor") val shadowColor: String?,

@SerializedName("shadowBlurRadius") val shadowBlurRadius: Float,

@SerializedName("strokeWidth") val strokeWidth: Float,

@SerializedName("strokeColor") val strokeColor: String?

)

异常信息

E/AndroidRuntime: FATAL EXCEPTION: GLThread 1777

Process: com.tencent.karaoke, PID: 13043

java.lang.NullPointerException: throw with null exception

at com.t

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值