Quiero usar Proguard principalmente por motivos de ofuscación.
Mi problema es que tengo tres bibliotecas, Twitter4J y dos bibliotecas de señal. Estas bibliotecas causaron errores cuando intenté crear una APK firmada. Para superar esto pongo lo siguiente en el archivo proguard.config
…
-dontwarn org.apache.commons.codec.binary.** -dontwarn org.slf4j.** -dontwarn com.sun.syndication.io.** -dontwarn com.sun.syndication.feed.synd.*
Si bien esto eliminó los errores en la consola, cuando cargué mi APK firmado en mi teléfono móvil, se bloqueó al instante. DDMS dijo que esto se debía a una clase que no se encontraba en Twitter4J.
Deshacerse de los "dontwarns"
arriba no ayudó. Tampoco agregó dontshrink dontoptimise
.
Me gustaría que Proguard ignore completamente las bibliotecas (ya que son de código abierto de todos modos). es posible?
Prueba esto:
-keep class javax.** { *; } -keep class org.** { *; } -keep class twitter4j.** { *; }
Publicación de Cf de @CaspNZ: Android Proguard con jar externo
Debería poder agregar a proguard.cfg las siguientes líneas para excluir todas las clases dentro de un paquete (y subpaquetes)
-keep class org.apache.commons.codec.binary.** -keep interface org.apache.commons.codec.binary.** -keep enum org.apache.commons.codec.binary.** -keep class org.slf4j.** -keep interface org.slf4j.** -keep enum org.slf4j.** -keep class com.sun.syndication.io.** -keep interface com.sun.syndication.io.** -keep enum com.sun.syndication.io.** -keep class com.sun.syndication.feed.synd.** -keep interface com.sun.syndication.feed.synd.** -keep enum com.sun.syndication.feed.synd.**