2016-05-01 7 views
1

私は、Parcelableを実装するクラスを持っていて、Parcelable.Creatorを実装するCREATORというフィールドを持っています。私は、ProGuardのは、以下の設定によってCREATORフィールドを維持させることができます:ProGuardはどのようにクラスの実装句(クラス署名)を保持できるのですか

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

しかし、私はそのことを、CREATOR匿名の実装の難読化されたクラスがどのように見えるので、ProGuardのは、CREATOR匿名クラスの署名を保つようにする方法がわかりません以下:

final class i extends Object 

我々はそれがimplements Parcelable.Creator署名をlostsていることがわかりますので、私は私のアプリを起動したとき、それは以下の例外を除いて墜落:

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を試しましたが、動作しません。

答えて

1

ありがとうございますhttps://github.com/zhenghuiyのおかげで、この問題は半年後に解決されます。

それはあまりにも、この問題が消え、後の私のAndroidのビルドツールを更新することを、以下の設定を行う必要が判明しない:

-keepclassmembers class * implements android.os.Parcelable { 
    static ** CREATOR; 
} 
関連する問題