我有一个实现Android Parcelable的类,它有一个名为CREATOR的字段,该字段实现了Parcelable.Creator。我可以通过以下配置让ProGuard保留CREATOR字段:

-keepclassmembers class * implements android.os.Parcelable {
    static ** CREATOR;
}


但是我不知道如何让ProGuard保留CREATOR匿名类签名,因此,CREATOR匿名实现的混淆类如下所示:

final class i extends Object


我们可以看到它丢失了implements Parcelable.Creator签名,因此当我启动我的应用程序时,它崩溃了,但出现以下异常:

java.lang.ClassCastException: com.github.piasy.model.b.b.i cannot be
cast to android.os.Parcelable$Creator


我知道我可以让ProGuard保留所有内部类(这样就不会混淆Parcelable.Creator实现),但是我想知道我是否可以保留类签名(implements Parcelable.Creator部分)。

我试过-keepattributes Signature,它不起作用。

最佳答案

感谢https://github.com/zhenghuiy,半年后此问题得以解决。

事实证明,更新我的Android构建工具后,此问题消失了,也不需要以下配置:

-keepclassmembers class * implements android.os.Parcelable {
    static ** CREATOR;
}

07-28 03:17
查看更多