features dontwarn java enums proguard

java - dontwarn - Proguard no conservará las enums de un miembro de la clase



proguard jar (1)

Intente com.stuff.MyConfigObject$MyEnum en com.stuff.MyConfigObject$MyEnum lugar. La especificación de la clase Proguard espera $ como separador para las clases internas.

En realidad, para lo que quieres, quizás la mejor opción sea algo como esto:

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

Esto mantendrá solo a los miembros requeridos para todas las enum anidadas en MyConfigObject ; los miembros requeridos son la matriz $VALUES[] (consulte esta pregunta para obtener una explicación) y cualquier miembro public de la enumeración. Cualquier otro miembro (por ejemplo, métodos de campos privados) no se mantendrá.

Como lo indicaron Jesse y yo en los comentarios, ya que está procesando una biblioteca, también debe agregar la opción -keepAttributes . De la guía de referencia:

Por ejemplo, al menos debe mantener los atributos Excepciones, Clases internas y Firma al procesar una biblioteca.

Estoy trabajando en una biblioteca que se distribuye como un java java, y estoy ejecutando proguard en ella de tal manera que solo deje las interfaces necesarias expuestas. Tengo una clase de configuración con un grupo de variables miembro y algunas definiciones de enumeración. La secuencia de comandos de mi programa conserva la multa de las variables miembro, sin embargo, las definiciones de enumeración se están confundiendo. He intentado todo lo que se me ocurre para forzar a proguard a conservar estas enumeraciones definidas internamente y públicas, pero no puedo hacer que funcione.

Ahora mismo estoy usando:

-keep public class com.stuff.MyConfigObject { public *; } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); }

Si lo intento

-keep public enum com.stuff.MyConfigObject.MyEnum

Recibo un error ambiguo: "Nota: la configuración se refiere a la clase desconocida ''com.stuff.MyConfigObject.MyEnum''"

¡Gracias por la ayuda!