ProGuardの使用方法を学ぼうとしていましたが、思ったほど簡単ではありません。最初に、単純な2 クラスの Swing 計算機を試すための単純な Java コードを見つけました。
コードはそのリンクをたどることで見つけることができますが、ここに投稿するには冗長すぎることがわかりました。とにかく、これはエントリ ポイントがオンになっている単純なアプリケーションでCalc.main()
あり、パッケージはありません。
次に、両方のソースを次のようにコンパイルしました。
$ javac *.java
ファイルを作成しました.jar
(ProGuardはjarでのみ機能するように見えるため):
$ 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
オプションをいじるのにうんざりしましたが、成功しませんでした。私の問題に関連するドキュメントで見つけたものはすべて、私を助けることができませんでした. それから私はあなたに頼っています. 何が問題なのですか? それを正しく行う方法は?