我想学习如何使用ProGuard的 ,这是没办法,因为我想的那么简单。 起初,我发现了一个简单的Java代码来试试吧,简单的二级摇摆计算器 。
该代码可以通过下面这个链接可以找到,但我发现它太冗长,张贴在这里的吧。 无论如何,这是入口点在平原上的应用程序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
选项,但没有成功。 所有我在与我的问题的文档中发现不能帮我。 然后我诉诸你...有什么不对? 如何做到这一点吗?