#指定代码的压缩级别
-optimizationpasses 5
#包明不混合大小写
-dontusemixedcaseclassnames
#不去忽略非公共的库类
-dontskipnonpubliclibraryclasses
#不优化输入的类文件
-dontoptimize
#预校验
-dontpreverify
#混淆时是否记录日志
-verbose
# 混淆时所采用的算法
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
#保护注解
-keepattributes *Annotation*
-keep class * extends java.lang.annotation.Annotation { *; }
#保护反射
-keepattributes EnclosingMethod
# 保持哪些类不被混淆
-keep public class * extends android.app.Fragment
-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
-keep public class * extends android.view.View.** {*;}
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
#忽略警告
-ignorewarning
#apk 包内所有 class 的内部结构
-dump class_files.txt
-printseeds seeds.txt
-printusage unused.txt
-printmapping mapping.txt
# 这里的com.demo.application是自己项目的包名。
-keep public class com.demo.application.R$*{
public static final int *;
}
####混淆保护自己项目的部分代码以及引用的第三方jar包library-end####
-keep public class * extends android.view.View {
public <init>(android.content.Context);
public <init>(android.content.Context, android.util.AttributeSet);
public <init>(android.content.Context, android.util.AttributeSet, int);
public void set*(...);
}
#保持 native 方法不被混淆
-keepclasseswithmembernames class * {
native <methods>;
}
#保持自定义控件类不被混淆
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
#保持自定义控件类不被混淆
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
#保持 Parcelable 不被混淆
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
#保持 Serializable 不被混淆
-keepnames class * implements java.io.Serializable
#保持 Serializable 不被混淆并且enum 类也不被混淆
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
!static !transient <fields>;
!private <fields>;
!private <methods>;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
# 不混淆按钮类
-keepclassmembers class * {
public void *ButtonClicked(android.view.View);
}
#不混淆资源类
-keepclassmembers class **.R$* { *;}
-keep class **.R$* { *; }
-keepattributes Signature
###################保护第三方包引用不混淆#########################
#如果用用到Gson解析包的,直接添加下面这几行就能成功混淆,不然会报错。
#gson
-keep class sun.misc.Unsafe { *; }
-keep class com.idea.fifaalarmclock.entity.***
-keep class com.google.gson.stream.** { *; }
# Gson specific classes
-keep class sun.misc.Unsafe { *; }
#保持droidplugin不被混淆
-dontwarn com.morgoo.droidplugin.**
-keep class com.morgoo.droidplugin.** {*;}
#adapter也不能混淆
-keep public class * extends android.widget.BaseAdapter {*;}
### greenDAO 3
-keep class org.greenrobot.greendao.**
-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {
public static java.lang.String TABLENAME;
}
-keep class **$Properties
# If you do not use SQLCipher:
-dontwarn org.greenrobot.greendao.database.**
#保护greendao实体类不被混淆
-keep class package_name(包名).gen.**{*;}
#android-circular
-dontwarn cn.kongnannan.**
-keep class cn.kongnannan.** {*;}
#commons-codec
-dontwarn org.apache.commons.codec.**
-keep class org.apache.commons.codec.** {*;}
##eventbus.jar
-dontwarn de.greenrobot.event.**
-keep class de.greenrobot.event.** {*;}
#frameworklib.jar
-dontwarn com.plugin.frameworklib.**
-keep class com.plugin.frameworklib.** {*;}
#lite-http-library.jar
-dontwarn com.litesuits.**
-keep class com.litesuits.** {*;}
#pinyin4j.jar
-dontwarn net.sourceforge.pinyin4j.**
-keep class net.sourceforge.pinyin4j.** {*;}
##zxing
-dontwarn com.google.zxing.**
-keep class com.google.zxing.** {*;}
-dontwarn demo.**
-keep class demo.** {*;}
# OkHttp3
-dontwarn com.squareup.okhttp3.**
-keep class com.squareup.okhttp3.** { *;}
-dontwarn okio.**
##fastjson.jar
-dontwarn com.alibaba.fastjson.**
-keep class com.alibaba.fastjson.**{*;}
#cube-sdk
-dontwarn in.srain.cube.**
-keep class in.srain.cube.**{*;}
#glide.jar
-dontwarn com.bumptech.glide.**
-keep class com.bumptech.glide.*{*;}
#junit.jar
-dontwarn org.junit.**
-keep class org.junit.**{*;}
-dontwarn junit.**
-keep class junit.**{*;}
#hamcrest-core.jar
#-keep class org.hamcrest.**
#-dontwarn org.hamcrest.*{*;}
-dontwarn cn.qqtheme.framework.**
-keep class cn.qqtheme.framework.**{*;}
-dontwarn com.yongchun.library.**
-keep class com.yongchun.library.**{*;}
# support-v4
#https://stackoverflow.com/questions/18978706/obfuscate-android-support-v7-widget-gridlayout-issue
-dontwarn android.support.v4.**
-keep class android.support.v4.app.** { *; }
-keep interface android.support.v4.app.** { *; }
-keep class android.support.v4.** { *; }
# support-v7
-dontwarn android.support.v7.**
-keep class android.support.v7.internal.** { *; }
-keep interface android.support.v7.internal.** { *; }
-keep class android.support.v7.** { *; }
# support design
#@link http://stackoverflow.com/a/31028536
-dontwarn android.support.design.**
-keep class android.support.design.** { *; }
-keep interface android.support.design.** { *; }
-keep public class android.support.design.R$* { *; }
#-------------------------------------------------------------------------