Опитвах се да науча как да използвам 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
(вижте извикването ми). Дадох всички стъпки за създаване на буркана, но ето го: 4shared .com/file/xekHfRyx/calc.html?refurl=d1url - person lvella   schedule 24.08.2012