【proguard 专题二】如何混淆jar2
来源:互联网 发布:js offsetleft属性 编辑:程序博客网 时间:2024/06/05 02:28
混淆之前需要有混淆的配置文件,如下:(注意:以下文件是我项目中使用的,不要完全copy)
-injars AChartSDK_1.0.jar-outjars AChartSDK_P1.0.jar-libraryjars 'C:\Program Files (x86)\Java\jre6\lib\rt.jar'<span style="color:#ff0000;">-libraryjars 'D:\android_sdk\adt-bundle-windows-x86_64-20130219\sdk\platforms\android-19\android.jar'-dontskipnonpubliclibraryclassmembers-optimizationpasses 5-dontusemixedcaseclassnames-dontpreverify-verbose-dontwarn android.**-keepattributes InnerClasses-keep public enum org.achartengine.chart.SupportBarChart$Type { *;}-keep class android.** { <fields>; <methods>;}</span># Keep - Applications. Keep all application classes, along with their 'main'# methods.-keepclasseswithmembers public class * { public static void main(java.lang.String[]);}# Keep - Library. Keep all public and protected classes, fields, and methods.-keep public class * { public protected <fields>; public protected <methods>;}# 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);}# 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>;}# Remove - System method calls. Remove all invocations of System# methods without side effects whose return values are not used.-assumenosideeffects public class java.lang.System { public static long currentTimeMillis(); static java.lang.Class getCallerClass(); public static int identityHashCode(java.lang.Object); public static java.lang.SecurityManager getSecurityManager(); public static java.util.Properties getProperties(); public static java.lang.String getProperty(java.lang.String); public static java.lang.String getenv(java.lang.String); public static java.lang.String mapLibraryName(java.lang.String); public static java.lang.String getProperty(java.lang.String,java.lang.String);}# Remove - Math method calls. Remove all invocations of Math# methods without side effects whose return values are not used.-assumenosideeffects public class java.lang.Math { public static double sin(double); public static double cos(double); public static double tan(double); public static double asin(double); public static double acos(double); public static double atan(double); public static double toRadians(double); public static double toDegrees(double); public static double exp(double); public static double log(double); public static double log10(double); public static double sqrt(double); public static double cbrt(double); public static double IEEEremainder(double,double); public static double ceil(double); public static double floor(double); public static double rint(double); public static double atan2(double,double); public static double pow(double,double); public static int round(float); public static long round(double); public static double random(); public static int abs(int); public static long abs(long); public static float abs(float); public static double abs(double); public static int max(int,int); public static long max(long,long); public static float max(float,float); public static double max(double,double); public static int min(int,int); public static long min(long,long); public static float min(float,float); public static double min(double,double); public static double ulp(double); public static float ulp(float); public static double signum(double); public static float signum(float); public static double sinh(double); public static double cosh(double); public static double tanh(double); public static double hypot(double,double); public static double expm1(double); public static double log1p(double);}# Remove - Number method calls. Remove all invocations of Number# methods without side effects whose return values are not used.-assumenosideeffects public class java.lang.* extends java.lang.Number { public static java.lang.String toString(byte); public static java.lang.Byte valueOf(byte); public static byte parseByte(java.lang.String); public static byte parseByte(java.lang.String,int); public static java.lang.Byte valueOf(java.lang.String,int); public static java.lang.Byte valueOf(java.lang.String); public static java.lang.Byte decode(java.lang.String); public int compareTo(java.lang.Byte); public static java.lang.String toString(short); public static short parseShort(java.lang.String); public static short parseShort(java.lang.String,int); public static java.lang.Short valueOf(java.lang.String,int); public static java.lang.Short valueOf(java.lang.String); public static java.lang.Short valueOf(short); public static java.lang.Short decode(java.lang.String); public static short reverseBytes(short); public int compareTo(java.lang.Short); public static java.lang.String toString(int,int); public static java.lang.String toHexString(int); public static java.lang.String toOctalString(int); public static java.lang.String toBinaryString(int); public static java.lang.String toString(int); public static int parseInt(java.lang.String,int); public static int parseInt(java.lang.String); public static java.lang.Integer valueOf(java.lang.String,int); public static java.lang.Integer valueOf(java.lang.String); public static java.lang.Integer valueOf(int); public static java.lang.Integer getInteger(java.lang.String); public static java.lang.Integer getInteger(java.lang.String,int); public static java.lang.Integer getInteger(java.lang.String,java.lang.Integer); public static java.lang.Integer decode(java.lang.String); public static int highestOneBit(int); public static int lowestOneBit(int); public static int numberOfLeadingZeros(int); public static int numberOfTrailingZeros(int); public static int bitCount(int); public static int rotateLeft(int,int); public static int rotateRight(int,int); public static int reverse(int); public static int signum(int); public static int reverseBytes(int); public int compareTo(java.lang.Integer); public static java.lang.String toString(long,int); public static java.lang.String toHexString(long); public static java.lang.String toOctalString(long); public static java.lang.String toBinaryString(long); public static java.lang.String toString(long); public static long parseLong(java.lang.String,int); public static long parseLong(java.lang.String); public static java.lang.Long valueOf(java.lang.String,int); public static java.lang.Long valueOf(java.lang.String); public static java.lang.Long valueOf(long); public static java.lang.Long decode(java.lang.String); public static java.lang.Long getLong(java.lang.String); public static java.lang.Long getLong(java.lang.String,long); public static java.lang.Long getLong(java.lang.String,java.lang.Long); public static long highestOneBit(long); public static long lowestOneBit(long); public static int numberOfLeadingZeros(long); public static int numberOfTrailingZeros(long); public static int bitCount(long); public static long rotateLeft(long,int); public static long rotateRight(long,int); public static long reverse(long); public static int signum(long); public static long reverseBytes(long); public int compareTo(java.lang.Long); public static java.lang.String toString(float); public static java.lang.String toHexString(float); public static java.lang.Float valueOf(java.lang.String); public static java.lang.Float valueOf(float); public static float parseFloat(java.lang.String); public static boolean isNaN(float); public static boolean isInfinite(float); public static int floatToIntBits(float); public static int floatToRawIntBits(float); public static float intBitsToFloat(int); public static int compare(float,float); public boolean isNaN(); public boolean isInfinite(); public int compareTo(java.lang.Float); public static java.lang.String toString(double); public static java.lang.String toHexString(double); public static java.lang.Double valueOf(java.lang.String); public static java.lang.Double valueOf(double); public static double parseDouble(java.lang.String); public static boolean isNaN(double); public static boolean isInfinite(double); public static long doubleToLongBits(double); public static long doubleToRawLongBits(double); public static double longBitsToDouble(long); public static int compare(double,double); public boolean isNaN(); public boolean isInfinite(); public int compareTo(java.lang.Double); public <init>(byte); public <init>(short); public <init>(int); public <init>(long); public <init>(float); public <init>(double); public <init>(java.lang.String); public byte byteValue(); public short shortValue(); public int intValue(); public long longValue(); public float floatValue(); public double doubleValue(); public int compareTo(java.lang.Object); public boolean equals(java.lang.Object); public int hashCode(); public java.lang.String toString();}# Remove - String method calls. Remove all invocations of String# methods without side effects whose return values are not used.-assumenosideeffects public class java.lang.String { public <init>(); public <init>(byte[]); public <init>(byte[],int); public <init>(byte[],int,int); public <init>(byte[],int,int,int); public <init>(byte[],int,int,java.lang.String); public <init>(byte[],java.lang.String); public <init>(char[]); public <init>(char[],int,int); public <init>(java.lang.String); public <init>(java.lang.StringBuffer); public static java.lang.String copyValueOf(char[]); public static java.lang.String copyValueOf(char[],int,int); public static java.lang.String valueOf(boolean); public static java.lang.String valueOf(char); public static java.lang.String valueOf(char[]); public static java.lang.String valueOf(char[],int,int); public static java.lang.String valueOf(double); public static java.lang.String valueOf(float); public static java.lang.String valueOf(int); public static java.lang.String valueOf(java.lang.Object); public static java.lang.String valueOf(long); public boolean contentEquals(java.lang.StringBuffer); public boolean endsWith(java.lang.String); public boolean equalsIgnoreCase(java.lang.String); public boolean equals(java.lang.Object); public boolean matches(java.lang.String); public boolean regionMatches(boolean,int,java.lang.String,int,int); public boolean regionMatches(int,java.lang.String,int,int); public boolean startsWith(java.lang.String); public boolean startsWith(java.lang.String,int); public byte[] getBytes(); public byte[] getBytes(java.lang.String); public char charAt(int); public char[] toCharArray(); public int compareToIgnoreCase(java.lang.String); public int compareTo(java.lang.Object); public int compareTo(java.lang.String); public int hashCode(); public int indexOf(int); public int indexOf(int,int); public int indexOf(java.lang.String); public int indexOf(java.lang.String,int); public int lastIndexOf(int); public int lastIndexOf(int,int); public int lastIndexOf(java.lang.String); public int lastIndexOf(java.lang.String,int); public int length(); public java.lang.CharSequence subSequence(int,int); public java.lang.String concat(java.lang.String); public java.lang.String replaceAll(java.lang.String,java.lang.String); public java.lang.String replace(char,char); public java.lang.String replaceFirst(java.lang.String,java.lang.String); public java.lang.String[] split(java.lang.String); public java.lang.String[] split(java.lang.String,int); public java.lang.String substring(int); public java.lang.String substring(int,int); public java.lang.String toLowerCase(); public java.lang.String toLowerCase(java.util.Locale); public java.lang.String toString(); public java.lang.String toUpperCase(); public java.lang.String toUpperCase(java.util.Locale); public java.lang.String trim();}# Remove - StringBuffer method calls. Remove all invocations of StringBuffer# methods without side effects whose return values are not used.-assumenosideeffects public class java.lang.StringBuffer { public <init>(); public <init>(int); public <init>(java.lang.String); public <init>(java.lang.CharSequence); public java.lang.String toString(); public char charAt(int); public int capacity(); public int codePointAt(int); public int codePointBefore(int); public int indexOf(java.lang.String,int); public int lastIndexOf(java.lang.String); public int lastIndexOf(java.lang.String,int); public int length(); public java.lang.String substring(int); public java.lang.String substring(int,int);}# Remove - StringBuilder method calls. Remove all invocations of StringBuilder# methods without side effects whose return values are not used.-assumenosideeffects public class java.lang.StringBuilder { public <init>(); public <init>(int); public <init>(java.lang.String); public <init>(java.lang.CharSequence); public java.lang.String toString(); public char charAt(int); public int capacity(); public int codePointAt(int); public int codePointBefore(int); public int indexOf(java.lang.String,int); public int lastIndexOf(java.lang.String); public int lastIndexOf(java.lang.String,int); public int length(); public java.lang.String substring(int); public java.lang.String substring(int,int);}
或者:
解决方案:在tool/lib 目录下新建 proguard.cfg内容如下-optimizationpasses 5-dontusemixedcaseclassnames-dontskipnonpubliclibraryclasses-dontpreverify-verbose-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*-keep public class * extends android.app.Activity-keep public class * extends android.app.Application-keep public class * extends android.app.Service-keep public class * extends android.content.BroadcastReceiver-keep public class * extends android.content.ContentProvider-keep public class com.android.vending.licensing.ILicensingService-keepclasseswithmembernames class * {native ;}-keepclasseswithmembernames class * {public (android.content.Context, android.util.AttributeSet);}-keepclasseswithmembernames class * {public (android.content.Context, android.util.AttributeSet, int);}-keepclassmembers enum * {public static **[] values();public static ** valueOf(java.lang.String);}-keep class * implements android.os.Parcelable {public static final android.os.Parcelable$Creator *;}
0 0
- 【proguard 专题二】如何混淆jar2
- 【proguard 专题一】如何混淆jar
- 关于ProGuard混淆器(二)
- Android ProGuard混淆(二)
- JAVA之代码混淆proguard基础(二)
- Android 中 ProGuard 混淆详解(二)
- 如何混淆Android项目代码(ProGuard)
- 如何混淆Android项目代码(ProGuard)
- 如何混淆Android项目代码(ProGuard)
- Android Proguard 如何混淆package name
- proguard混淆
- proguard混淆
- proguard混淆
- Proguard混淆总结 Proguard语法
- 如何混淆Android项目代码(ProGuard),防止反编译
- 如何混淆Android项目代码(ProGuard),防止反编译
- 如何混淆Android项目代码(ProGuard)防止反编译
- 如何混淆Android项目代码(ProGuard),防止反编译
- linux 目录结构
- 配置VS编写Spring.Net 和NHibernate的配置文件时,给出代码提示
- Python性能测试脚本-开源中国
- Swift学习——函数的使用和分类(四)
- 求字符串中相同且长度最长的字符串及其首字母的位置
- 【proguard 专题二】如何混淆jar2
- textread使用举例-matlab
- hdu Lawrence(DP-单调性优化-斜率优化)
- !@OSC本日推荐!淘宝性能采集工具-Tsar
- matlab中注释多行
- C# Winform程序经验之Form问题总结
- NOJ1093阶乘之和——n超过24不变
- VB2QTPApi_Binary.zip
- java swing高仿酷我音乐界面代码例子下载