Code Bye

一个web工程打成war包,求一个proguard的配置方法,proguard图形界面的混淆的具体参数说明.

 

我在混淆的时候 一直出现 warning
都是报 
unexpectedly contains class
can””t find referenced class
Maybe this is program method 

忽略错误的话…进行混淆处理以后生成的war包..一个 .class 文件都没有…
求大神指导…

我用的是proguard 4.10的工具…

这个不错,java混淆器:http://blog.csdn.net/atrueman123/article/details/6281658
目测你引用的文件没有加进来
引用 3 楼 huxiweng 的回复:

目测你引用的文件没有加进来

什么文件…有关的jar包我也放进去了….还是不行…

100分
送你份配置吧。
修改最后几行就行。
或者你生成你的配置看看是什么。
这里字数限制,我把默认生成的那些删掉了,可以加上
-injars ""D:\jar\in\jar.jar""
-outjars ""D:\jar\out\our.jar""

-libraryjars ""C:\Program Files\Java\jre7\lib\rt.jar""
-libraryjars ""D:\jar\jar\android.jar""

-keepattributes *Annotation*

# Keep - Applications. Keep all application classes, along with their ""main""
# methods.
-keepclasseswithmembers public class * {
    public static void main(java.lang.String[]);
}

# Also keep - Enumerations. Keep the special static methods that are required in
# enumeration classes.
-keepclassmembers enum  * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
    public **[] values();
    public ** valueOf(java.lang.String);
}

# Also keep - Database drivers. Keep all implementations of java.sql.Driver.
-keep class * extends java.sql.Driver

# Also keep - Swing UI L&F. Keep all extensions of javax.swing.plaf.ComponentUI,
# along with the special ""createUI"" method.
-keep class * extends javax.swing.plaf.ComponentUI {
    public static javax.swing.plaf.ComponentUI createUI(javax.swing.JComponent);
}

# Keep names - Native method names. Keep all native class/method names.
-keepclasseswithmembers,allowshrinking class * {
    native <methods>;
}

-keep public class com.bpo.offerlist.util.Constant
-keepclassmembers class com.bpo.offerlist.util.Constant {
    public protected private <fields>;
}

-keep public class com.bpo.offerlist.manager.JJJ
-keepclassmembers class com.bpo.offerlist.manager.JJJ {
    public <methods>;
}

-keep public class com.bpo.offerlist.util.DebugHelper
-keepclassmembers class com.bpo.offerlist.util.DebugHelper {
    public <methods>;
    public static <methods>;
    public protected private <fields>;
}
引用 5 楼 AA5279AA 的回复:

送你份配置吧。
修改最后几行就行。
或者你生成你的配置看看是什么。
这里字数限制,我把默认生成的那些删掉了,可以加上

-injars ""D:\jar\in\jar.jar""
-outjars ""D:\jar\out\our.jar""

-libraryjars ""C:\Program Files\Java\jre7\lib\rt.jar""
-libraryjars ""D:\jar\jar\android.jar""

-keepattributes *Annotation*

# Keep - Applications. Keep all application classes, along with their ""main""
# methods.
-keepclasseswithmembers public class * {
    public static void main(java.lang.String[]);
}

# Also keep - Enumerations. Keep the special static methods that are required in
# enumeration classes.
-keepclassmembers enum  * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
    public **[] values();
    public ** valueOf(java.lang.String);
}

# Also keep - Database drivers. Keep all implementations of java.sql.Driver.
-keep class * extends java.sql.Driver

# Also keep - Swing UI L&F. Keep all extensions of javax.swing.plaf.ComponentUI,
# along with the special ""createUI"" method.
-keep class * extends javax.swing.plaf.ComponentUI {
    public static javax.swing.plaf.ComponentUI createUI(javax.swing.JComponent);
}

# Keep names - Native method names. Keep all native class/method names.
-keepclasseswithmembers,allowshrinking class * {
    native <methods>;
}

-keep public class com.bpo.offerlist.util.Constant
-keepclassmembers class com.bpo.offerlist.util.Constant {
    public protected private <fields>;
}

-keep public class com.bpo.offerlist.manager.JJJ
-keepclassmembers class com.bpo.offerlist.manager.JJJ {
    public <methods>;
}

-keep public class com.bpo.offerlist.util.DebugHelper
-keepclassmembers class com.bpo.offerlist.util.DebugHelper {
    public <methods>;
    public static <methods>;
    public protected private <fields>;
}

用那个工具能改配置文件吗?
我看都是自动生成出来的…

引用 6 楼 winner12 的回复:
Quote: 引用 5 楼 AA5279AA 的回复:

送你份配置吧。
修改最后几行就行。
或者你生成你的配置看看是什么。
这里字数限制,我把默认生成的那些删掉了,可以加上

-injars ""D:\jar\in\jar.jar""
-outjars ""D:\jar\out\our.jar""

-libraryjars ""C:\Program Files\Java\jre7\lib\rt.jar""
-libraryjars ""D:\jar\jar\android.jar""

-keepattributes *Annotation*

# Keep - Applications. Keep all application classes, along with their ""main""
# methods.
-keepclasseswithmembers public class * {
    public static void main(java.lang.String[]);
}

# Also keep - Enumerations. Keep the special static methods that are required in
# enumeration classes.
-keepclassmembers enum  * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
    public **[] values();
    public ** valueOf(java.lang.String);
}

# Also keep - Database drivers. Keep all implementations of java.sql.Driver.
-keep class * extends java.sql.Driver

# Also keep - Swing UI L&F. Keep all extensions of javax.swing.plaf.ComponentUI,
# along with the special ""createUI"" method.
-keep class * extends javax.swing.plaf.ComponentUI {
    public static javax.swing.plaf.ComponentUI createUI(javax.swing.JComponent);
}

# Keep names - Native method names. Keep all native class/method names.
-keepclasseswithmembers,allowshrinking class * {
    native <methods>;
}

-keep public class com.bpo.offerlist.util.Constant
-keepclassmembers class com.bpo.offerlist.util.Constant {
    public protected private <fields>;
}

-keep public class com.bpo.offerlist.manager.JJJ
-keepclassmembers class com.bpo.offerlist.manager.JJJ {
    public <methods>;
}

-keep public class com.bpo.offerlist.util.DebugHelper
-keepclassmembers class com.bpo.offerlist.util.DebugHelper {
    public <methods>;
    public static <methods>;
    public protected private <fields>;
}

用那个工具能改配置文件吗?
我看都是自动生成出来的…

到了process那一步的时候点击save configuration
保存配置,然后修改这个配置。。。
下一次在第一步选择Load configuration
然后直接点击process就行了

引用 7 楼 AA5279AA 的回复:
Quote: 引用 6 楼 winner12 的回复:
Quote: 引用 5 楼 AA5279AA 的回复:

送你份配置吧。
修改最后几行就行。
或者你生成你的配置看看是什么。
这里字数限制,我把默认生成的那些删掉了,可以加上

-injars ""D:\jar\in\jar.jar""
-outjars ""D:\jar\out\our.jar""

-libraryjars ""C:\Program Files\Java\jre7\lib\rt.jar""
-libraryjars ""D:\jar\jar\android.jar""

-keepattributes *Annotation*

# Keep - Applications. Keep all application classes, along with their ""main""
# methods.
-keepclasseswithmembers public class * {
    public static void main(java.lang.String[]);
}

# Also keep - Enumerations. Keep the special static methods that are required in
# enumeration classes.
-keepclassmembers enum  * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
    public **[] values();
    public ** valueOf(java.lang.String);
}

# Also keep - Database drivers. Keep all implementations of java.sql.Driver.
-keep class * extends java.sql.Driver

# Also keep - Swing UI L&F. Keep all extensions of javax.swing.plaf.ComponentUI,
# along with the special ""createUI"" method.
-keep class * extends javax.swing.plaf.ComponentUI {
    public static javax.swing.plaf.ComponentUI createUI(javax.swing.JComponent);
}

# Keep names - Native method names. Keep all native class/method names.
-keepclasseswithmembers,allowshrinking class * {
    native <methods>;
}

-keep public class com.bpo.offerlist.util.Constant
-keepclassmembers class com.bpo.offerlist.util.Constant {
    public protected private <fields>;
}

-keep public class com.bpo.offerlist.manager.JJJ
-keepclassmembers class com.bpo.offerlist.manager.JJJ {
    public <methods>;
}

-keep public class com.bpo.offerlist.util.DebugHelper
-keepclassmembers class com.bpo.offerlist.util.DebugHelper {
    public <methods>;
    public static <methods>;
    public protected private <fields>;
}

用那个工具能改配置文件吗?
我看都是自动生成出来的…

到了process那一步的时候点击save configuration
保存配置,然后修改这个配置。。。
下一次在第一步选择Load configuration
然后直接点击process就行了

那些东西不能混淆….
是不是反射的..
还有其他东西不能进行混淆的吗

引用 8 楼 winner12 的回复:
Quote: 引用 7 楼 AA5279AA 的回复:
Quote: 引用 6 楼 winner12 的回复:
Quote: 引用 5 楼 AA5279AA 的回复:

送你份配置吧。
修改最后几行就行。
或者你生成你的配置看看是什么。
这里字数限制,我把默认生成的那些删掉了,可以加上

-injars ""D:\jar\in\jar.jar""
-outjars ""D:\jar\out\our.jar""

-libraryjars ""C:\Program Files\Java\jre7\lib\rt.jar""
-libraryjars ""D:\jar\jar\android.jar""

-keepattributes *Annotation*

# Keep - Applications. Keep all application classes, along with their ""main""
# methods.
-keepclasseswithmembers public class * {
    public static void main(java.lang.String[]);
}

# Also keep - Enumerations. Keep the special static methods that are required in
# enumeration classes.
-keepclassmembers enum  * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
    public **[] values();
    public ** valueOf(java.lang.String);
}

# Also keep - Database drivers. Keep all implementations of java.sql.Driver.
-keep class * extends java.sql.Driver

# Also keep - Swing UI L&F. Keep all extensions of javax.swing.plaf.ComponentUI,
# along with the special ""createUI"" method.
-keep class * extends javax.swing.plaf.ComponentUI {
    public static javax.swing.plaf.ComponentUI createUI(javax.swing.JComponent);
}

# Keep names - Native method names. Keep all native class/method names.
-keepclasseswithmembers,allowshrinking class * {
    native <methods>;
}

-keep public class com.bpo.offerlist.util.Constant
-keepclassmembers class com.bpo.offerlist.util.Constant {
    public protected private <fields>;
}

-keep public class com.bpo.offerlist.manager.JJJ
-keepclassmembers class com.bpo.offerlist.manager.JJJ {
    public <methods>;
}

-keep public class com.bpo.offerlist.util.DebugHelper
-keepclassmembers class com.bpo.offerlist.util.DebugHelper {
    public <methods>;
    public static <methods>;
    public protected private <fields>;
}

用那个工具能改配置文件吗?
我看都是自动生成出来的…

到了process那一步的时候点击save configuration
保存配置,然后修改这个配置。。。
下一次在第一步选择Load configuration
然后直接点击process就行了

那些东西不能混淆….
是不是反射的..
还有其他东西不能进行混淆的吗

你以为这些语句是干什么用的?
-keep public class com.bpo.offerlist.util.DebugHelper
-keepclassmembers class com.bpo.offerlist.util.DebugHelper {
    public <methods>;
    public static <methods>;
    public protected private <fields>;
}

引用 9 楼 AA5279AA 的回复:
Quote: 引用 8 楼 winner12 的回复:
Quote: 引用 7 楼 AA5279AA 的回复:
Quote: 引用 6 楼 winner12 的回复:
Quote: 引用 5 楼 AA5279AA 的回复:

送你份配置吧。
修改最后几行就行。
或者你生成你的配置看看是什么。
这里字数限制,我把默认生成的那些删掉了,可以加上

-injars ""D:\jar\in\jar.jar""
-outjars ""D:\jar\out\our.jar""

-libraryjars ""C:\Program Files\Java\jre7\lib\rt.jar""
-libraryjars ""D:\jar\jar\android.jar""

-keepattributes *Annotation*

# Keep - Applications. Keep all application classes, along with their ""main""
# methods.
-keepclasseswithmembers public class * {
    public static void main(java.lang.String[]);
}

# Also keep - Enumerations. Keep the special static methods that are required in
# enumeration classes.
-keepclassmembers enum  * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
    public **[] values();
    public ** valueOf(java.lang.String);
}

# Also keep - Database drivers. Keep all implementations of java.sql.Driver.
-keep class * extends java.sql.Driver

# Also keep - Swing UI L&F. Keep all extensions of javax.swing.plaf.ComponentUI,
# along with the special ""createUI"" method.
-keep class * extends javax.swing.plaf.ComponentUI {
    public static javax.swing.plaf.ComponentUI createUI(javax.swing.JComponent);
}

# Keep names - Native method names. Keep all native class/method names.
-keepclasseswithmembers,allowshrinking class * {
    native <methods>;
}

-keep public class com.bpo.offerlist.util.Constant
-keepclassmembers class com.bpo.offerlist.util.Constant {
    public protected private <fields>;
}

-keep public class com.bpo.offerlist.manager.JJJ
-keepclassmembers class com.bpo.offerlist.manager.JJJ {
    public <methods>;
}

-keep public class com.bpo.offerlist.util.DebugHelper
-keepclassmembers class com.bpo.offerlist.util.DebugHelper {
    public <methods>;
    public static <methods>;
    public protected private <fields>;
}

用那个工具能改配置文件吗?
我看都是自动生成出来的…

到了process那一步的时候点击save configuration
保存配置,然后修改这个配置。。。
下一次在第一步选择Load configuration
然后直接点击process就行了

那些东西不能混淆….
是不是反射的..
还有其他东西不能进行混淆的吗

你以为这些语句是干什么用的?
-keep public class com.bpo.offerlist.util.DebugHelper
-keepclassmembers class com.bpo.offerlist.util.DebugHelper {
    public <methods>;
    public static <methods>;
    public protected private <fields>;
}

我是想问….哪些东西不能混淆………反射的东西是不是不能混淆?还有其他东西不能混淆的吗?

求个新手指南 我也在弄这个 都要疯了  一直都是  out of memory  我也扩充了 但是不行
看看这个
http://demo.netfoucs.com/rulon147/article/details/42550901
http://proguard.sourceforge.net/

ProGuard的使用是为了:

1.创建紧凑的代码文档是为了更快的网络传输,快速装载和更小的内存占用.

2.创建的程序和程序库很难使用反向工程.

3.所以它能删除来自源文件中的没有调用的代码

4.充分利用java6的快速加载的优点来提前检测和返回java6中存在的类文件.

参数:

-include {filename} 从给定的文件中读取配置参数

-basedirectory {directoryname} 指定基础目录为以后相对的档案名称

-injars {class_path} 指定要处理的应用程序jar,war,ear和目录

-outjars {class_path} 指定处理完后要输出的jar,war,ear和目录的名称

-libraryjars {classpath} 指定要处理的应用程序jar,war,ear和目录所需要的程序库文件

-dontskipnonpubliclibraryclasses 指定不去忽略非公共的库类。

-dontskipnonpubliclibraryclassmembers 指定不去忽略包可见的库类的成员。

保留选项

-keep {Modifier} {class_specification} 保护指定的类文件和类的成员

-keepclassmembers {modifier} {class_specification} 保护指定类的成员,如果此类受到保护他们会保护的更好

-keepclasseswithmembers {class_specification} 保护指定的类和类的成员,但条件是所有指定的类和类成员是要存在。

-keepnames {class_specification} 保护指定的类和类的成员的名称(如果他们不会压缩步骤中删除)

-keepclassmembernames {class_specification} 保护指定的类的成员的名称(如果他们不会压缩步骤中删除)

-keepclasseswithmembernames {class_specification} 保护指定的类和类的成员的名称,如果所有指定的类成员出席(在压缩步骤之后)

-printseeds {filename} 列出类和类的成员-keep选项的清单,标准输出到给定的文件

压缩

-dontshrink 不压缩输入的类文件

-printusage {filename}

-whyareyoukeeping {class_specification}

优化

-dontoptimize 不优化输入的类文件

-assumenosideeffects {class_specification} 优化时假设指定的方法,没有任何副作用

-allowaccessmodification 优化时允许访问并修改有修饰符的类和类的成员

混淆

-dontobfuscate 不混淆输入的类文件

-printmapping {filename}

-applymapping {filename} 重用映射增加混淆

-obfuscationdictionary {filename} 使用给定文件中的关键字作为要混淆方法的名称

-overloadaggressively 混淆时应用侵入式重载

-useuniqueclassmembernames 确定统一的混淆类的成员名称来增加混淆

-flattenpackagehierarchy {package_name} 重新包装所有重命名的包并放在给定的单一包中

-repackageclass {package_name} 重新包装所有重命名的类文件中放在给定的单一包中

-dontusemixedcaseclassnames 混淆时不会产生形形色色的类名

-keepattributes {attribute_name,…} 保护给定的可选属性,例如LineNumberTable, LocalVariableTable, SourceFile, Deprecated, Synthetic, Signature, and InnerClasses.

-renamesourcefileattribute {string} 设置源文件中给定的字符串常量

因为我们开发的是webwork+spring+hibernate的架构的项目,所有需要很详细的配置。(经过n次失败后总结)

Example:

-injars <project>.jar

-outjars <project>_out.jar

-libraryjars <java.home>/lib/rt.jar

-libraryjars <project.home>/webroot/WEB-INF/lib/webwork.jar

…….

# 保留实现Action接口类中的公有的,友好的,私有的属性 和 公有的,友好的方法。其它的全部压缩,优化,混淆。

# 因为配置文件中的类名是一个完整的类名,如果经过处理后就有可能找不到这个类。

# 属性是jsp页面所需要的,如果经过处理jsp页面就无法得到action中的数据。

-keep public class * implements com.opensymphony.xwork.Action{

public protected private <fields>;

public protected <methods>;

}

# 保留实现了Serializable接口类中的公有的,友好的,私有的成员(属性和方法)

# 这个配置主要是对应实体类的配置。

-keep public class * implements java.io.Serializable{

public protected private *;

}

……

# 关于配置的解释已说了很多了,下面的配置自已可以尝试。

然后在命行端输入:proguard @配置文件

 

 

 

 

 

            -target 1.6
              -injars      ${target.dir}/IWapDemo5.jar
              -outjars     ${target.dir}/IWapDemo5_test.jar
           
            -dontnote
            -printconfiguration “c:\config_dome.xml”

            -libraryjars ${source.lib}/**.jar
            -libraryjars ${j2ee.lib}/**.jar
           
           
            -keep public class demo.** {
                public protected *;
            }
            -keep class demo.** {
                public protected *;
            }           
           
           
            -keepclassmembers class demo.** {
                public protected *;
            }


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明一个web工程打成war包,求一个proguard的配置方法,proguard图形界面的混淆的具体参数说明.