Proguard y XStream con omitField () en Android

Estaba usando XStream para la deserialización de xml en mi aplicación de Android, y ahora estoy luchando por agregar Proguard (ofuscador) a la mezcla.

Aquí está la excepción de tiempo de ejecución con la que me encuentro (completo: pastebin):

WARN/System.err(6209): net.lp.collectionista.util.a.g: XStream could not parse the response
WARN/System.err(6209):     at net.lp.collectionista.a.s.a(Collectionista:215)
    ...
WARN/System.err(6209): Caused by: com.thoughtworks.xstream.converters.ConversionException: id : id in loader dalvik.system.PathClassLoader[/data/app/net.lp.collectionista-2.apk] : id : id in loader dalvik.system.PathClassLoader[/data/app/net.lp.collectionista-2.apk]
WARN/System.err(6209): ---- Debugging information ----
WARN/System.err(6209): message             : id : id in loader dalvik.system.PathClassLoader[/data/app/net.lp.collectionista-2.apk]
WARN/System.err(6209): cause-exception     : com.thoughtworks.xstream.mapper.CannotResolveClassException
WARN/System.err(6209): cause-message       : id : id in loader dalvik.system.PathClassLoader[/data/app/net.lp.collectionista-2.apk]
WARN/System.err(6209): class               : net.lp.collectionista.jaxb.googlebooks.search.Feed
WARN/System.err(6209): required-type       : java.lang.Object
WARN/System.err(6209): path                : /feed/entry/id
WARN/System.err(6209): line number         : 1
WARN/System.err(6209): -------------------------------
WARN/System.err(6209):     at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(Collectionista:89)
    ...
WARN/System.err(6209):     at com.thoughtworks.xstream.XStream.fromXML(Collectionista:861)
    ...
WARN/System.err(6209): Caused by: com.thoughtworks.xstream.mapper.CannotResolveClassException: id : id in loader dalvik.system.PathClassLoader[/data/app/net.lp.collectionista-2.apk]
WARN/System.err(6209):     at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(Collectionista:68)
    ...

No hace falta decir que esto funciona bien sin Proguard. Estoy usando reducir, optimizar y ofuscar aquí, aunque lo desactivé todo en cualquier clase XStream, así como en cualquier clase que represente el modelo para los campos xml:

-keep class net.lp.collectionista.jaxb.** { *; }
-keep class com.thoughtworks.xstream.** { *; }

Puedo confirmar, desde el jar ofuscado, así como desde el mapping.txt (para métodos), que cualquier clase mencionada existe y no está ofuscada, por lo que AFAICT no ha sido tocada. También estoy reteniendo anotaciones.

La excepción es bastante clara para mí. Yo tengo

        xstream.omitField(Feed.class, "id");

entre otros. Parece que la llamada omitField () ya no funciona y comienza a buscar una clase de modelo "id", debido a Proguard. Aquí es donde estoy atascado, incluso después de sumergirme en el código XStream. Toda la llamada omitField en el resultado final ofuscado parece estar intacta, entonces, ¿qué podría romperse adicionalmente aquí? Tampoco debería ser "Feed.class", ya que ese todavía está allí. ¿Qué me estoy perdiendo? ¿Cuál es un buen próximo paso para la depuración?

EDITAR Me di cuenta de que los archivos de clase de las clases xstream en mi jar ofuscado son ligeramente más pequeños que los originales, incluso con -dontoptimizar. ¿Qué se está dejando caer?

EDIT2: Estoy empezando a pensar que tiene que ver con la ausencia de advertencias dex similares a las siguientes:

[apply] warning: Ignoring InnerClasses attribute for an anonymous inner class
[apply] (com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$1) that doesn't come with an
[apply] associated EnclosingMethod attribute. This class was probably produced by a
[apply] compiler that did not target the modern .class file format. The recommended
[apply] solution is to recompile the class from source, using an up-to-date compiler
[apply] and without specifying any "-target" type options. The consequence of ignoring
[apply] this warning is that reflective operations on this class will incorrectly
[apply] indicate that it is *not* an inner class.

... o tal vez no ..

EDIT3: Finalmente, a pesar de tratar con muchos otros errores y problemas comoel error de SimException, He podido hacerlo funcionar en algunos casos limitados. De esa manera podría señalarlo al paso de ofuscación. Es decir, al menos, si agrego "-dontobfuscate", el problema desaparece. no es la primera vez que juego con eso, por lo que deben ser las soluciones para los otros problemas, o la configuración más estrecha, lo que también alivia este problema. Así que aquí estoy preguntando de nuevo: cuando ya he protegido las partes principales de xstream y mis clases de modelos de ofuscación usando "-keep", ¿qué más podría estar creando este desastre?

Si necesita más información, avíseme.

Respuestas a la pregunta(3)

Su respuesta a la pregunta