2016-05-01 7 views
1

Ich habe eine Klasse implementieren Android Parcelable, und es hat ein Feld mit dem Namen CREATOR, die Umsetzung Parcelable.Creator. Ich könnte lassen ProGuard das CREATOR Feld halten, indem sie folgenden config:Wie kann ProGuard class implementieren Klausel (Klassensignatur)

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

Aber ich weiß nicht, wie ProGuard lassen hält die CREATOR anonyme Klasse Unterschrift, aus diesem Grunde, die verschleierte Klasse der CREATOR anonymen Implementierung sieht aus wie unten:

final class i extends Object 

Wir können sehen, dass es die implements Parcelable.Creator Unterschrift losts, also wenn ich meine app starten, ist es mit der folgenden Ausnahme abgestürzt:

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

Ich weiß, dass ich ProGuard alle inneren Klasse behalten konnte (so wird die Parcelable.Creator Implementierung überhaupt nicht verschleiert werden), aber ich möchte wissen, könnte ich nur die Klassensignatur (implements Parcelable.Creator Teil) behalten.

Ich habe versucht -keepattributes Signature, es funktioniert nicht.

Antwort

1

Danke für https://github.com/zhenghuiy, dieses Problem ist nach einem halben Jahr gelöst.

Es stellt sich heraus, dass nach meinem Android-Build-Tools aktualisieren, wird dieses Problem verschwindet, auch keine Notwendigkeit für unter Konfiguration:

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