Android studio 代码混淆

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.**{ *; }

你可能感兴趣的:(Android studio 代码混淆)