1:在build.grandle添加,其中规则写在proguard-rules.pro中
buildTypes{
release{signingConfig signingConfigs.release
minifyEnabled true
proguardFiles getDefaultProguardFile(‘proguard-android.txt‘),‘proguard-rules.pro‘
}
}
2:在proguard-rules.pro中加入以下代码(示例)
-optimizationpasses5# 指定代码的压缩级别-dontusemixedcaseclassnames# 是否使用大小写混合-dontpreverify# 混淆时是否做预校验-verbose# 混淆时是否记录日志-optimizations!code/simplification/arithmetic,!field/*,!class/merging/*# 混淆时所采用的算法-keep
#----不进行混淆保持原样----
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Fragment
-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 * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference#
-keep public class * extends android.os.AsyncTask
-keep public class * extends android.support.v4.**
-keep public class com.android.vending.licensing.ILicensingService
#-keep public class android.os.AsyncTask{*;}
#----保持 native 方法不被混淆----
-keepclasseswithmembernames class * {
native;
}
#----保持自定义控件类不被混淆----
-keepclasseswithmembernames class * {
public(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembernames class * {
public(android.content.Context, android.util.AttributeSet, int);
}
#----保持枚举 enum 类不被混淆----
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
#----所有jar包----
-libraryjars libs/android-async-http-1.4.8.jar
...
-libraryjars libs/armeabi/libzbar.so
...
#----jar----
-dontwarn com.lidroid.xutils.**
-keep class com.lidroid.xutils.**{ *; }
-dontwarn com.loopj.android.http.**
-keep class com.loopj.android.http.**{ *; }
#----所有方法不进行混淆----
#-keep public abstract interface com.asqw.android.Listener{
#public protected
#}
#----百度地图----
-keep class com.baidu.** { *; }
-keep class vi.com.gdi.bgl.android.**{*;}
#----umeng统计----
-keepclassmembers class * {
public(org.json.JSONObject);
}
-keep public class com.fansye.southernnc.R$*{
public static final int *;
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
#----webview----
-keepclassmembers class * extends android.webkit.WebViewClient {
public void *(android.webkit.WebView,java.lang.String,android.graphics.Bitmap);
public boolean *(android.webkit.WebView,java.lang.String);
}
-keepclassmembers class * extends android.webkit.WebChromeClient {
public void *(android.webkit.WebView,java.lang.String);
}
##---------------Begin: proguard configuration for Gson ----------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature
# Gson specific classes
-keep class sun.misc.Unsafe { *; }
#-keep class com.google.gson.stream.** { *; }
# Application classes that will be serialized/deserialized over Gson
-keep class com.xxx.xxx.xxx.bean.** { *; } ##这里需要改成解析到哪个 javabean
##---------------End: proguard configuration for Gson ----------
## ------------- Serializable -----------------
# Explicitly preserve all serialization members. The Serializable interface
# is only a marker interface, so it wouldn't save them.
-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();
}
-keep public class * implements java.io.Serializable {*;}
#-dontwarn com.zbar.lib.**
#-keep class com.zbar.lib.**{ *; }
#-dontwarn com.xxx.xxx.xxx.activity.**
#-keep class com.xxx.xxx.xxx.activity.**{ *; }