2012-04-17 10 views
21

He descargado proguard encapsulado en un archivo zip y lo he desempaquetado en mi disco duro. No lo hice instalar de ninguna manera (porque no sabía cómo). Luego agregué proguard.config=proguard.cfg a mi archivo project.properties. Luego hice una "aplicación de exportación de Android" esperando que eclipse se quejara de que no sabía dónde estaba mi instalación Proguard, pero no hubo ninguna queja. De hecho, un nuevo archivo apk apareció en mi almacén de claves, y un conjunto de archivos (dump.txt, etc.) apareció en el subdirectorio proguard de mi aplicación. El mapping.txt se ve como una buena lista de asignaciones desde mis nombres largos de variables a variables de una y dos letras. Esto debería ser una fuerte evidencia de que proguard de alguna manera ha funcionado; mi única preocupación es que el apk apenas sea más pequeño de lo que era antes. ¿Hay alguna forma de comprobar que la aplicación incluye ofuscaciones de Proguard?Cómo saber si Proguard ha hecho su trabajo

Respuesta

43

Normalmente el tamaño indicará si ProGuard ha trabajado pero se puede: -

  1. Uso Dex2Jar para convertir el apk a un archivo jar
  2. Abrir el archivo JAR resultante con Jd-Gui para ver el código que contiene
+2

Esto funciona de manera brillante, ¡muchas gracias! – Pete

+1

Cómo usar dex2jar? – Roel

+1

http://stackoverflow.com/questions/5257830/how-to-use-dextojar – Kuffs

1

Una alternativa al método @Kuffs sería comparar su nueva APK con una nueva. Ábrelos (con 7zip o su herramienta preferida) y compare el tamaño de los archivos de classes.dex en cada uno de ellos.

Algunas razones simples que no podríamos estar viendo mucho de un ahorro de tamaño:

  • El classes.dex unobfuscated fue capaz de comprimirse mucho más que el ofuscado. Esto siempre es cierto hasta cierto punto.
  • No hizo una versión de lanzamiento. Proguard solo se ejecuta en compilaciones de lanzamiento ya que la depuración del código ofuscado es una pesadilla.
  • La configuración de Proguard que está utilizando no le está yendo muy bien (al menos en términos de tamaño del código) para su proyecto. ¡De hecho, he visto que el código de Proguard en la configuración inicial aumenta el tamaño de los archivos jar antes!
+0

La class.dex no difuminada se pudo comprimir mucho más que la ofuscada -> ¿significa esto que las clases no difuminadas tienen menos tamaño que las ofuscadas? – Rendy

+2

@Rendy Siempre esperaría que el tamaño del .dex ofuscado fuera más pequeño que el no difusionado. Sin embargo, también esperaría que la diferencia de tamaño después de la compresión fuera mucho menor que la diferencia de tamaño antes de la compresión. Esto se debe a que la ofuscación hace parte del mismo trabajo que la compresión, es decir, reemplaza cadenas largas (nombres de clase/método/campo) por otras mucho más cortas. – vaughandroid

+0

lo tengo! ¡Gracias! – Rendy

Cuestiones relacionadas