2016-05-01 1 views
1

У меня есть класс, реализующий Android Parcelable, и у него есть поле с именем CREATOR, которое реализует Parcelable.Creator. Я мог позволить ProGuard держать CREATOR поле на следующей конфигурации:Как может ProGuard сохранить предложение класса (подпись класса)

-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, он не работает.

ответ

1

Спасибо за https://github.com/zhenghuiy, эта проблема решена после полугода.

Это не получается, что после обновления моих Android инструментов для сборки, эта проблема исчезает, нет необходимости в конфигурацию ниже тоже:

-keepclassmembers class * implements android.os.Parcelable { 
    static ** CREATOR; 
} 
Смежные вопросы