Estaba tratando de aprender a usar ProGuard, y no es tan fácil como pensaba. Al principio encontré un código Java simple para probarlo, un simple two class Swing calculator.¿Cómo uso ProGuard?
El código se puede encontrar siguiendo ese enlace, pero me pareció demasiado detallado para publicarlo aquí. De todos modos, es una aplicación simple con punto de entrada en Calc.main()
, no hay paquetes.
Entonces compilan las dos fuentes con:
$ javac *.java
y creó el archivo .jar
(porque parece ProGuard sólo funcionan con los tarros):
$ jar cvef Calc calc.jar *.class
added manifest
adding: Calc.class(in = 3869) (out= 2126)(deflated 45%)
adding: Calc$ClearListener.class(in = 468) (out= 327)(deflated 30%)
adding: CalcLogic.class(in = 1004) (out= 515)(deflated 48%)
adding: Calc$NumListener.class(in = 1005) (out= 598)(deflated 40%)
adding: Calc$OpListener.class(in = 1788) (out= 1005)(deflated 43%)
escribió el archivo ProGuard llamado obfuscate.pro
:
-injars calc.jar
-outjars calc_obf.jar
-libraryjars <java.home>/lib/rt.jar
-keep public class Calc extends javax.swing.JFrame {
public static void main(java.lang.String[]);
}
Y finalmente ejecutar ProGuard:
$ ~/progs/proguard/proguard4.8/bin/proguard.sh @obfuscate.pro
ProGuard, version 4.8
Reading program jar [/home/lucas/tmp/calc.jar]
Reading library jar [/usr/lib/jvm/java-7-openjdk-i386/jre/lib/rt.jar]
Error: The output jar is empty. Did you specify the proper '-keep' options?
Bueno, obviamente no funcionó. Me cansé de jugar con los parámetros de ProGruard, especialmente con las opciones -keep
, sin éxito. Todo lo que encontré en los documentos relacionados con mi problema no pudo ayudarme. Entonces estoy recurriendo a ti ... ¿Qué pasa? ¿Cómo hacerlo bien?
Su método 'main' está en mayúscula, lo que seguramente no debería ser. –
@LouisWasserman Derecha, arreglado. Todavía tiene el mismo ploblema. – lvella
Esto se ve bien para mí. ¿Puede cargar su jar y su configuración de ProGuard en alguna parte, para que podamos probar soluciones en lugar de simplemente adivinar qué podría estar mal en su computadora? –