如何使用ProGuard的?(How do I use ProGuard?)

2019-07-31 03:53发布

我想学习如何使用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选项,但没有成功。 所有我在与我的问题的文档中发现不能帮我。 然后我诉诸你...有什么不对? 如何做到这一点吗?

Answer 1:

我把它用下面的配置文件的工作:

-injars       calc.jar
-outjars      calc_obf.jar
-libraryjars  <java.home>/lib/rt.jar
-keep class Calc {
  public static void main(java.lang.String[]);
}

最值得注意的是,我抛弃了public面前class Calc



Answer 2:

我有类似的问题,采取了Java的修饰符来解决。

Java的改性剂,如能见度修饰符在ProGuard的配置文件选项-keep可选(以及相关-keepclassmembers选项等)

从手册:-keep [,修改,...] class_specification

因此,除非有特殊原因,否则,你可以离开他们。



文章来源: How do I use ProGuard?