Comment puis-je utiliser ProGuard?
J'essayais d'apprendre à utiliser ProGuard, et il n'est pas une façon aussi facile que je le pensais. Au début j'ai trouvé un simple code Java pour l'essayer, une simple deux classes Swing calculatrice.
Le code peut être consulté en suivant ce lien, mais je l'ai trouvé trop verbeux pour poster les ici. De toute façon, c'est une simple application avec point d'entrée sur Calc.main()
, il n'y a pas de paquets.
Puis j'ai compilé les deux sources avec:
$ javac *.java
et créé le .jar
fichier (car il semble ProGuard travaillons uniquement avec des pots):
$ 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%)
A écrit le ProGuard fichier nommé 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[]);
}
Et enfin exécuter 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?
Bon, évidemment, n'a pas fonctionné. Je suis fatigué de jouer avec ProGruard paramètres, spécialement avec qui -keep
options, sans succès. Tout ce que je trouve dans les docs liés à mon problème ne pouvait pas m'aider. Ensuite j'ai recours à vous... Quel est le problème? Comment le faire correctement?
- Votre
main
méthode est en majuscule, dont il est presque certainement ne devriez pas être. - Droit, fixe. Toujours le même problème.
- Cela semble bien pour moi. Pouvez-vous envoyer votre pot et votre ProGuard de configuration quelque part, afin que nous puissions tester des solutions au lieu de simplement deviner ce qui pourrait être mal sur votre ordinateur?
- Je n'ai pas de ProGuard de configuration, juste déballé et utilisé immédiatement, à partir de la
bin
répertoire (voir mon invocation). J'ai donné toutes les étapes pour construire le pot, mais il est ici: 4shared.com/file/xekHfRyx/calc.html?refurl=d1url
Vous devez vous connecter pour publier un commentaire.
Je l'ai eu à travailler en utilisant le fichier de configuration suivant:
Plus particulièrement, j'ai abandonné le
public
en face declass Calc
.J'ai eu des problèmes similaires, résolu par la prise de Java modificateurs.
Java modificateurs comme modificateurs de visibilité sont facultatives dans le
ProGuard fichier de configuration -conserver l'option (et dans les options-keepclassmembers etc.)
De manuel:
-maintenez le bouton [,modificateur,...] class_specification
Donc, sauf si il y a une raison particulière sinon, vous pouvez les laisser dehors.