Android – как сохранить перечисление от proguard

В моей proguard у меня есть следующее, чтобы запретить публичным перепискам.

-keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } 

Мой вопрос в том, поддерживает ли это также общедоступную валюту enum в таком классе?

 public class Foo { public enum **Currency** {PENNY, NICKLE, DIME, QUARTER}; ... } 

Если нет, что мне нужно добавить отдельно?

Добавление следующего, похоже, не помогает.

 -keepattributes InnerClasses 

Любой совет? благодаря

Вы можете попробовать

 -keep public enum com.stuff.TheEnclosingClass$** { **[] $VALUES; public *; } 

Как показано в этом ответе, Proguard не будет содержать перечисления членов класса

Просто не забудьте поставить

 -keepattributes InnerClasses 

Можете ли вы попытаться сказать proguard, чтобы сохранить определенный класс:

 -keep class com.xxx.Foo { *; } 

Опция -keepclassmembers поддерживает только членов класса; В этом случае методы values() и valueOf(String) всех классов enum. Дикая карта * также соответствует внутренним классам.

Если вы по какой-то причине хотите сохранить внутренний класс с его первоначальным именем, вы можете указать:

 -keep class somepackage.Foo$Currency 

Это необходимо только в том случае, если ваше приложение обращается к классу через отражение.