Android, ProGuard y keepclasseswithmembernames

Un patrón común en las configuraciones de ProGuard para aplicaciones de Android es preservar las @ personalizadView clases, ya que probablemente solo se hace referencia a ellas desde el diseño XML en lugar del código de la aplicación.

Al crear el proyecto, el ADT agrega estas reglas al proguard.cfg de un proyecto:

-keepclasseswithmembernames class * {
   public <init>(android.content.Context, android.util.AttributeSet);
}

-keepclasseswithmembernames class * {
   public <init>(android.content.Context, android.util.AttributeSet, int);
}

Supongo que la idea aquí es decir que siempre que una clase defina un constructor que pueda ser llamado por un inflador de diseño, luego consérvelo. Sin embargo, según los documentos de ProGuard, lakeepclasseswithmembernames calificador es la abreviatura dekeepclasseswithmembers yallowshrinking, lo que si entiendo correctamente significa: está permitido eliminar estas clases, pero si se mantienen, no ofusque sus nombres de miembros (probablemente para no romper enlaces entre nombres de atributos XML y creadores de clases).

¿Pero eso no significa que esas clases se eliminarán durante la fase de reducción (allowshrinking = true), a menos que se haga referencia directamente en el código? De hecho, eso es lo que sucedió con un widget personalizado que estamos usando en nuestra aplicación, y podría solucionar el problema configurando la regla en solokeepclasseswithmembers ya que eso simplemente preservará las clases coincidentes por completo (vale la pena señalar que esto es lo que el @ oficiProGuard Ejemplo de Android también).

¿Estoy leyendo mal los documentos de ProGuard o es un error en el asistente de proyectos ADT?

Respuestas a la pregunta(2)

Su respuesta a la pregunta