|
@@ -19,28 +19,202 @@
|
|
|
# If you keep the line number information, uncomment this to
|
|
|
# hide the original source file name.
|
|
|
#-renamesourcefileattribute SourceFile
|
|
|
--keep public class com.hboxs.base_library.http.response.HttpResult
|
|
|
+# 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
|
|
|
+-optimizationpasses 5
|
|
|
|
|
|
-# Retrofit
|
|
|
--dontnote retrofit2.Platform
|
|
|
--dontnote retrofit2.Platform$IOS$MainThreadExecutor
|
|
|
--dontwarn retrofit2.Platform$Java8
|
|
|
+# 混合时不使用大小写混合,混合后的类名为小写
|
|
|
+-dontusemixedcaseclassnames
|
|
|
+
|
|
|
+# 指定不去忽略非公共库的类
|
|
|
+-dontskipnonpubliclibraryclasses
|
|
|
+
|
|
|
+# 指定不去忽略非公共库的类成员
|
|
|
+-dontskipnonpubliclibraryclassmembers
|
|
|
+
|
|
|
+# 这句话能够使我们的项目混淆后产生映射文件
|
|
|
+# 包含有类名->混淆后类名的映射关系
|
|
|
+-verbose
|
|
|
+
|
|
|
+# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
|
|
|
+-dontpreverify
|
|
|
+
|
|
|
+# 保留Annotation不混淆 这在JSON实体映射时非常重要,比如fastJson
|
|
|
+-keepattributes *Annotation*,InnerClasses
|
|
|
+
|
|
|
+# 避免混淆泛型
|
|
|
-keepattributes Signature
|
|
|
--keepattributes Exceptions
|
|
|
|
|
|
-# okhttp
|
|
|
--dontwarn okio.**
|
|
|
+# 抛出异常时保留代码行号
|
|
|
+-keepattributes SourceFile,LineNumberTable
|
|
|
+
|
|
|
+# 指定混淆是采用的算法,后面的参数是一个过滤器
|
|
|
+# 这个过滤器是谷歌推荐的算法,一般不做更改
|
|
|
+-optimizations !code/simplification/cast,!field/*,!class/merging/*
|
|
|
+
|
|
|
+# 忽略警告
|
|
|
+-ignorewarnings
|
|
|
+
|
|
|
+# 设置是否允许改变作用域
|
|
|
+-allowaccessmodification
|
|
|
+
|
|
|
+# 把混淆类中的方法名也混淆了
|
|
|
+-useuniqueclassmembernames
|
|
|
+
|
|
|
+# apk 包内所有 class 的内部结构
|
|
|
+-dump class_files.txt
|
|
|
+
|
|
|
+# 未混淆的类和成员
|
|
|
+-printseeds seeds_txt
|
|
|
+
|
|
|
+# 列出从apk中删除的代码
|
|
|
+-printusage unused.txt
|
|
|
+
|
|
|
+# 混淆前后的映射
|
|
|
+-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.BackupAgent
|
|
|
+-keep public class * extends android.preference.Preference
|
|
|
+-keep public class * extends android.support.v4.app.Fragment
|
|
|
+-keep public class * extends android.app.Fragment
|
|
|
+-keep public class * extends android.view.view
|
|
|
+-keep public class com.android.vending.licensing.ILicensingService
|
|
|
+-keep public class * extends android.support.v4.**{
|
|
|
+ <fields>;
|
|
|
+ <methods>;
|
|
|
+}
|
|
|
+-keep public class * extends android.support.v7.**
|
|
|
+-keep public class * extends android.support.annotation.**
|
|
|
+-keepattributes *Annotation*
|
|
|
+
|
|
|
+-keepattributes *JavascriptInterface*
|
|
|
+
|
|
|
+-keep class * implements android.os.Parcelable {
|
|
|
+ public static final android.os.Parcelable$Creator *;
|
|
|
+}
|
|
|
+
|
|
|
+-keep class * implements java.io.Serializable {
|
|
|
+ public *;
|
|
|
+}
|
|
|
+
|
|
|
+-keepclassmembers class * implements java.io.Serializable {
|
|
|
+ static final long serialVersionUID;
|
|
|
+ private static final java.io.ObjectStreamField[] serialPersistentFields;
|
|
|
+ !static !transient <fields>;
|
|
|
+ private void writeObject(java.io.ObjectOutputStream);
|
|
|
+ private void readObject(java.io.ObjectInputStream);
|
|
|
+ java.lang.Object writeReplace();
|
|
|
+ java.lang.Object readResolve();
|
|
|
+}
|
|
|
+
|
|
|
+-keep class com.google.gson.** {*;}
|
|
|
+-keep class sun.misc.Unsafe {*;}
|
|
|
+-keep class com.google.gson.stream.** {*;}
|
|
|
+-keep class com.google.gson.examples.android.model.** {*;}
|
|
|
+-keep class com.google.** {
|
|
|
+ <fields>;
|
|
|
+ <methods>;
|
|
|
+}
|
|
|
+
|
|
|
+#保持自定义控件类不被混淆
|
|
|
+-keepclasseswithmembers class * {
|
|
|
+ public <init>(android.content.Context, android.util.AttributeSet);
|
|
|
+}
|
|
|
|
|
|
+#保持自定义控件类不被混淆
|
|
|
+-keepclassmembers class * extends android.app.Activity {
|
|
|
+ public void *(android.view.View);
|
|
|
+}
|
|
|
|
|
|
-# RxJava RxAndroid
|
|
|
--dontwarn sun.misc.**
|
|
|
--keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
|
|
|
- long producerIndex;
|
|
|
- long consumerIndex;
|
|
|
+-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*(...);
|
|
|
}
|
|
|
--keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
|
|
|
- rx.internal.util.atomic.LinkedQueueNode producerNode;
|
|
|
+
|
|
|
+#butterknife
|
|
|
+-keep class butterknife.** { *; }
|
|
|
+-dontwarn butterknife.internal.**
|
|
|
+-keep class **$$ViewBinder { *; }
|
|
|
+-keep class **$$ViewIjector { *; }
|
|
|
+-keepclasseswithmembernames class * {
|
|
|
+ @butterknife.* <fields>;
|
|
|
}
|
|
|
--keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
|
|
|
- rx.internal.util.atomic.LinkedQueueNode consumerNode;
|
|
|
-}
|
|
|
+
|
|
|
+-keepclasseswithmembernames class * {
|
|
|
+ @butterknife.* <methods>;
|
|
|
+}
|
|
|
+#butterknife
|
|
|
+
|
|
|
+
|
|
|
+#iot-check
|
|
|
+-keep class com.bgy.iot.** { *; }
|
|
|
+-keep class io.netty.** { *; }
|
|
|
+#iot-check
|
|
|
+
|
|
|
+#打印机的
|
|
|
+-keep class com.printsdk.**{*;}
|
|
|
+
|
|
|
+-keep class android.net.http.SslError
|
|
|
+-keep class android.webkit.**{*;}
|
|
|
+-keep class cn.sharesdk.**{*;}
|
|
|
+-keep class com.sina.**{*;}
|
|
|
+-keep class m.framework.**{*;}
|
|
|
+-keep class **.R$* {*;}
|
|
|
+-keep class **.R{*;}
|
|
|
+-dontwarn cn.sharesdk.**
|
|
|
+-dontwarn **.R$*
|
|
|
+
|
|
|
+-keep class * extends com.bgy.autosale.base.ui.BaseFragment
|
|
|
+-keep class * extends com.bgy.autosale.base.ui.BaseAutoExitFragment
|
|
|
+-keep class * extends com.bgy.autosale.base.ui.BaseActivity
|
|
|
+-keep class * implements com.bgy.autosale.interfaces.FlavorInterface {
|
|
|
+ public *;
|
|
|
+}
|
|
|
+
|
|
|
+### greenDAO 3
|
|
|
+-keep class org.greenrobot.greendao.**{*;}
|
|
|
+-keep public class * extends org.greenrobot.greendao.AbstractDao
|
|
|
+-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {
|
|
|
+ public static java.lang.String TABLENAME;
|
|
|
+ public *;
|
|
|
+}
|
|
|
+-keep class **$Properties
|
|
|
+-keepclassmembers class **$Properties {*;}
|
|
|
+
|
|
|
+
|
|
|
+# 如果类中有使用了注解的字段,则不混淆类和类成员
|
|
|
+-keepclasseswithmembers class * {
|
|
|
+ @com.bgy.autosale.socket.base.ServerMethod <methods>;
|
|
|
+}
|
|
|
+
|
|
|
+# 如果类中有使用了注解的字段,则不混淆类和类成员
|
|
|
+-keepclasseswithmembers class * {
|
|
|
+ @com.bgy.autosale.socket.base.ServerApi <methods>;
|
|
|
+}
|
|
|
+# 如果类中有使用了注解的字段,则不混淆类和类成员
|
|
|
+-keepclasseswithmembers class * {
|
|
|
+ @com.bgy.plc.proxys.base.ProxyMethod <methods>;
|
|
|
+}
|
|
|
+
|
|
|
+# 如果类中有使用了注解的字段,则不混淆类和类成员
|
|
|
+-keepclasseswithmembers class * {
|
|
|
+ @com.bgy.plc.proxys.base.ProxySendApi <methods>;
|
|
|
+}
|
|
|
+
|
|
|
+#个推
|
|
|
+-dontwarn com.igexin.**
|
|
|
+-keep class com.igexin.** { *; }
|
|
|
+-keep class org.json.** { *; }
|
|
|
+
|
|
|
+
|
|
|
+-keep public class com.hboxs.base_library.beans.** {
|
|
|
+ public void set*(***);
|
|
|
+ public *** get*();
|
|
|
+ public *** is*();
|
|
|
+ }
|