maven 代码混淆

proguard代码混淆


 
 
 
 com.github.wvengen
 proguard-maven-plugin
 
 
 package
 
 proguard
 
 
 
 
 true
 ${basedir}/proguard.conf
 
  
 ${java.home}/lib/rt.jar
 
 false
 
  
 
 
 net.sf.proguard
 proguard
 5.2.1
 runtime
 
  
 
 
 
 

Proguard.conf

# ----------------------------------
# 通过指定数量的优化能执行
# -optimizationpasses n
# ----------------------------------
#-optimizationpasses 3

# ----------------------------------
# 混淆时不会产生形形色色的类名 
# -dontusemixedcaseclassnames
# ----------------------------------
-dontusemixedcaseclassnames
# ----------------------------------
# 指定不去忽略非公共的库类
# -dontskipnonpubliclibraryclasses
# ----------------------------------
-dontskipnonpubliclibraryclasses

# ----------------------------------
# 不预校验
# -dontpreverify
# ----------------------------------
# -dontpreverify

# ----------------------------------
# 输出生成信息
# -verbose
# ----------------------------------
-verbose

#混淆时应用侵入式重载 
-overloadaggressively 
 
#优化时允许访问并修改有修饰符的类和类的成员 
-allowaccessmodification
#确定统一的混淆类的成员名称来增加混淆 
-useuniqueclassmembernames

#设置源文件中给定的字符串常量
-renamesourcefileattribute SourceFile
# 保护给定的可选属性,例如LineNumberTable, LocalVariableTable, SourceFile, Deprecated, Synthetic, Signature, and InnerClasses.
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,
 SourceFile,LineNumberTable,*Annotation*,EnclosingMethod

-keep public class * {
 public protected *;
}
-dontskipnonpubliclibraryclassmembers

-keepattributes Exceptions,InnerClasses,Signature,Deprecated,
 SourceFile,LineNumberTable,*Annotation*,EnclosingMethod

-keep public class * {
 public protected *;
}

-keepclassmembernames class * {
 java.lang.Class class$(java.lang.String);
 java.lang.Class class$(java.lang.String, boolean);
}

-keepclasseswithmembernames class * {
 native <methods>;
}

-keepclassmembers,allowoptimization enum * {
 public static **[] values();
 public static ** valueOf(java.lang.String);
}

-keepclassmembers class * implements java.io.Serializable {
 static final long serialVersionUID;
 private static final java.io.ObjectStreamField[] serialPersistentFields;
 private void writeObject(java.io.ObjectOutputStream);
 private void readObject(java.io.ObjectInputStream);
 java.lang.Object writeReplace();
 java.lang.Object readResolve();
}

你可能感兴趣的:(工具)