在Android studio中进行代码混淆:
先在build.gradle中添加:
然后在proguard-rules.pro中编写规则,当然也可以设置 proguard-android.txt替代proguard-rules.pro;buildTypes { release { //代码混淆 minifyEnabled true shrinkResources false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
proguard-android.txt规则书写如下(根据自己的项目进行修改):
-keep class **.R$* { *; } -keep class com.easemob.** {*;} -keep class org.jivesoftware.** {*;} -keep class org.apache.** {*;} -dontwarn com.easemob.** -keep class com.easemob.easeui.utils.EaseSmileUtils {*;} -keep class org.bitlet.** {*;} -keep class com.alibaba.fastjson.**{*;} -keep class com.loopj.android.http.**{*;} -keep class bolts.**{*;} -keep class com.**{*;} -keep class com.parse.**{*;} -keep class org.apache.http.entity.mime.**{*;} -keep class com.squareup.picasso.**{*;} -dontwarn com.alibaba.fastjson.** -dontwarn com.loopj.android.http.** -dontwarn android.support.multidex.** -dontwarn bolts.** -dontwarn de.greenrobot.event.** -dontwarn com.parse.** -dontwarn com.google.zxing.** -optimizationpasses 7 # 指定代码的压缩级别 -dontusemixedcaseclassnames # 是否使用大小写混合 -dontpreverify # 混淆时是否做预校验 -verbose # 混淆时是否记录日志 -ignorewarning -printmapping mapping.txt #保持哪些类不被混淆 -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 * extends android.app.backup.BackupAgentHelper -keep public class * extends android.preference.Preference -keep public class com.android.vending.licensing.ILicensingService -keepattributes Signature #不混淆泛型 -keepnames class * implements java.io.Serializable #不混淆Serializable -keepclasseswithmembernames class * { # 保持 native 方法不被混淆 native <methods>; } -keepclasseswithmembers class * { # 保持自定义控件类不被混淆 public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembers class * { # 保持自定义控件类不被混淆 public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers class * extends android.app.Activity { # 保持自定义控件类不被混淆 public void *(android.view.View); } -keepclassmembers enum * { # 保持枚举 enum 类不被混淆 public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { # 保持 Parcelable 不被混淆 public static final android.os.Parcelable$Creator *; }还有其他的方法,大家在细查。