【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
原创粉丝点击