ProGuard如何保持类实现子句(类签名)

时间:2016-05-01 02:39:26

标签: android proguard parcelable

我有一个实现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实现根本不会被混淆),但我想知道我可以保留类签名({{ 1}}部分)。

我已尝试implements Parcelable.Creator,但它无法正常工作。

1 个答案:

答案 0 :(得分:1)

感谢https://github.com/zhenghuiy,这个问题在半年后就解决了。

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

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