Я пытался научиться пользоваться ProGuard, и это оказалось не так просто, как я думал. Сначала я нашел простой код Java, чтобы попробовать его, два простых два Калькулятор класса Swing.
Код можно найти, перейдя по этой ссылке, но я нашел его слишком подробным, чтобы публиковать его здесь. В любом случае, это обычное приложение с точкой входа на Calc.main()
, пакетов нет.
Затем я скомпилировал оба источника с помощью:
$ javac *.java
и создал файл .jar
(потому что кажется, что ProGuard работает только с банками):
$ 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%)
Записал файл ProGuard с именем 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[]);
}
И, наконец, запустите 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?
Ну явно не сработало. Я устал возиться с параметрами ProGruard, особенно с этими -keep
параметрами, но безуспешно. Все, что я нашел в документах, связанных с моей проблемой, не могло мне помочь. Тогда я прибегаю к вам... Что не так? Как это сделать правильно?
main
пишется с большой буквы, чего почти наверняка не должно быть. - person Louis Wasserman   schedule 24.08.2012bin
(см. мой вызов). Я описал все шаги по сборке jar-файла, но вот он: 4shared .com/file/xekHfRyx/calc.html?refurl=d1url - person lvella   schedule 24.08.2012