1,整体分类
#-----------------------------------实体类-----------------------------------------
# TODO ADD2
#-----------------------------------第三方包-----------------------------------------
# TODO ADD3
#-----------------------------------与js交互调用的类-----------------------------------------
# TODO ADD4
#-----------------------------------反射相关的类-----------------------------------------
# TODO ADD5
#-----------------------------------Jni调用的类----------------------------------------
# TODO ADD6
#-----------------------------------基础配置-----------------------------------------
# TODO ADD7
#-----------------------------------Manifest内配置相关的量------------------------------------------
# TODO ADD8
以上分类,之后会分类的分别贴上,个人工程中使用的
2,实体类(Model类要求继承 Serializable)
1)Parcelable
#保持 Parcelable 不被混淆
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
2)Serializable
#保持 Serializable 不被混淆
-keepnames class * implements java.io.Serializable
3,第三方包(尽可能找的官方的链接)
1)OkHttp3:3.8.1
#########OkHttp3,link:https://github.com/square/okhttp
-dontwarn okhttp3.**
-dontwarn okio.**
-dontwarn javax.annotation.**
-dontwarn org.conscrypt.**
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
2)Fresco:1.5.0
#########Fresco,link:https://www.fresco-cn.org/docs/proguard.html
# See http://sourceforge.net/p/proguard/bugs/466/
-keep,allowobfuscation @interface com.facebook.common.internal.DoNotStrip
-keep,allowobfuscation @interface com.facebook.soloader.DoNotOptimize
# Do not strip any method/class that is annotated with @DoNotStrip
-keep @com.facebook.common.internal.DoNotStrip class *
-keepclassmembers class * {
@com.facebook.common.internal.DoNotStrip *;
}
# Do not strip any method/class that is annotated with @DoNotOptimize
-keep @com.facebook.soloader.DoNotOptimize class *
-keepclassmembers class * {
@com.facebook.soloader.DoNotOptimize *;
}
# Keep native methods
-keepclassmembers class * {
native <methods>;
}
-dontwarn okio.**
-dontwarn com.squareup.okhttp.**
-dontwarn okhttp3.**
-dontwarn javax.annotation.**
-dontwarn com.android.volley.toolbox.**
-dontwarn com.facebook.infer.**
3)
org.greenrobot.eventbus:3.0.0
#########org.greenrobot:eventbus,link:http://greenrobot.org/eventbus/documentation/proguard
-keepattributes *Annotation*
-keepclassmembers class * {
@org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }
# Only required if you use AsyncExecutor
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
<init>(java.lang.Throwable);
}
4)glide
#########Glide
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public class * extends com.bumptech.glide.module.AppGlideModule
-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
**[] $VALUES;
public *;
}
# for DexGuard only
-keepresourcexmlelements manifest/application/meta-data@value=GlideModule
5)picasso:2.5.2
同 OkHttp3
6)网易云信
##########网易云信,link:http://dev.netease.im/docs/product/%E9%80%9A%E7%94%A8/NRTC/android_nrtc?kw=%E6%B7%B7%E6%B7%86&pg=1&pid=0#混淆配置
-dontwarn com.netease.**
-keep class com.netease.** {*;}
7)Pinyin4j - 2.5.0
##########Pinyin4j - 2.5.0
#jar包
-libraryjars libs/pinyin4j-2.5.0.jar
#demo
-dontwarn demo.**
-keep class demo.**{*;}
#net
-dontwarn net.sourceforge.pinyin4j.**
-keep class net.sourceforge.pinyin4j.**{*;}
-keep class net.sourceforge.pinyin4j.format.**{*;}
-keep class net.sourceforge.pinyin4j.format.exception.**{*;}
8)com.umeng.message,3.1.1
##########com.umeng.message,3.1.1,link:http://dev.umeng.com/push/android/integration#2_2_8
#引用
-dontwarn com.taobao.**
-dontwarn anet.channel.**
-dontwarn anetwork.channel.**
-dontwarn org.android.**
-dontwarn org.apache.thrift.**
-dontwarn com.xiaomi.**
-dontwarn com.huawei.**
#注解
-keepattributes *Annotation*
#第三方
-keep class com.taobao.** {*;}
-keep class org.android.** {*;}
-keep class anet.channel.** {*;}
-keep class com.umeng.** {*;}
-keep class com.xiaomi.** {*;}
-keep class com.huawei.** {*;}
-keep class org.apache.thrift.** {*;}
#参考
-keep class com.alibaba.sdk.android.**{*;}
-keep class com.ut.**{*;}
-keep class com.ta.**{*;}
#内部类
-keep public class **.R$*{
public static final int *;
}
#(可选)避免Log打印输出
-assumenosideeffects class android.util.Log {
public static *** v(...);
public static *** d(...);
public static *** i(...);
public static *** w(...);
}
9)rxJava,1.2.1
##########rxjava1.2.1,link:https://github.com/artem-zinnatullin/RxJavaProGuardRules/blob/master/rxjava-proguard-rules/proguard-rules.txt
#隐藏
-dontwarn sun.misc.**
#成员
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
long producerIndex;
long consumerIndex;
}
#类成员
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
rx.internal.util.atomic.LinkedQueueNode producerNode;
}
#类成员
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
rx.internal.util.atomic.LinkedQueueNode consumerNode;
}
#忽略
-dontnote rx.internal.util.PlatformDependent
10)com.tencent.mm.opensdk,5.1.0
##########com.tencent.mm.opensdk,5.1.0,link:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=1417751808&token=&lang=zh_CN
-dontwarn com.tencent.mm.opensdk.**
-keep class com.tencent.mm.opensdk.** {*;}
7,基础配置
#压缩时:指定代码的压缩级别,值在0-7之间
-optimizationpasses 5
#优化时:不优化输入的类文件
#-dontoptimize
#混淆时:包名不混合大小写;
-dontusemixedcaseclassnames
#指定 不去忽略非公共的库类
-dontskipnonpubliclibraryclasses
#不做预校验
-dontpreverify
#混淆时是否记录日志
-verbose
# 混淆时,所采用的算法
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
#保护给定的可选属性,例如LineNumberTable, LocalVariableTable, SourceFile, Deprecated, Synthetic, Signature, InnerClass
#不混淆泛型
-keepattributes Signature
#不混淆Annotation
-keepattributes *Annotation*
#抛出异常时保留代码行号
-keepattributes SourceFile,LineNumberTable
#忽略警告,避免打包时某些警告出现
#-ignorewarning
#------记录生成的日志数据,build/outputs/mapping/release目录下-------
#apk 包内所有 class 的内部结构
-dump class_files.txt
#混淆前后的映射
-printmapping mapping.txt
#未混淆的类和成员
-printseeds seeds.txt
#列出从 apk 中删除的代码
-printusage unused.txt
8,Manifest内配置相关的量
#Mainfest注册的类
-keep public class * extends android.app.Application
-keep public class * extends android.app.Activity
-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.preference.Preference
-keep public class * extends android.support.v4.**
-keep public class * extends android.support.annotation.**
-keep public class * extends android.support.v7.**
#如果引用了v4或者v7包
-dontwarn android.support.**
以上的部分叠加在一起就是目前,项目添加的部分