# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

#默认的proguard-android.txt已经增加了Annotation、native、view的setget方法、Activity参数为view的方法、Enum枚举、Parcelable、R，此处不再写

#代码混淆压缩比，在0和7之间，默认为5，一般不需要改
-optimizationpasses 5
#混淆时不使用大小写混合，混淆后的类名为小写
-dontusemixedcaseclassnames
#指定不去忽略非公共的库的类
-dontskipnonpubliclibraryclasses
#指定不去忽略非公共的库的类的成员
-dontskipnonpubliclibraryclassmembers
#不做预校验，preverify是proguard的4个步骤之一
#Android不需要preverify，去掉这一步可加快混淆速度
-dontpreverify
#有了verbose这句话，混淆后就会生成映射文件
#包含有类名->混淆后类名的映射关系
#然后使用printmapping指定映射文件的名称
-verbose
-printmapping proguardMapping.txt
#指定混淆时采用的算法，后面的参数是一个过滤器
#这个过滤器是谷歌推荐的算法，一般不改变
-optimizations !code/simplification/cast,!field/*,!class/merging/*
#保护代码中的Annotation不被混淆，这在JSON实体映射时非常重要，比如fastJson
-keepattributes *Annotation*,InnerClasses
#避免混淆泛型，这在JSON实体映射时非常重要，比如fastJson
-keepattributes Signature
#抛出异常时保留代码行号，在异常分析中可以方便定位
-keepattributes SourceFile,LineNumberTable

-dontwarn **

#基础保留
-keep class * extends android.app.Activity
-keep class * extends android.app.Application
-keep class * extends android.app.Service
-keep class * extends android.content.BroadcastReceiver
-keep class * extends android.content.ContentProvider
-keep class * extends android.app.backup.BackupAgentHelper
-keep class * extends android.preference.Preference
-keep class * extends android.view.View {
    <init>(...);
}


-keep class com.eziot.message.** {*;}
-keep class com.eziot.push.** {*;}
-keep class com.eziot.device.** {*;}
-keep class com.eziot.family.** {*;}
-keep class com.eziot.smart.** {*;}
-keep class com.eziot.sdk.** {*;}

#公共模块
-keep class com.eziot.common.http.bean.** {*;}
-keep class com.eziot.common.http.callback.** {*;}
-keep class com.eziot.common.http.core.** {*;}
-keep class com.eziot.common.data.** {*;}
-keep class com.eziot.common.exception.** {*;}
-keep class com.eziot.common.model.** {*;}
-keep class com.eziot.common.utils.** {*;}
-keep class com.eziot.common.constant.** {*;}

#用户模块
-keep class com.eziot.user.model.** {*;}
-keep class com.eziot.user.data.** {*;}
-keep class com.eziot.user.http.bean.** {*;}
-keep class com.eziot.user.http.callback.** {*;}
-keep class com.eziot.user.EZIotUserManager{*;}

-dontwarn com.ezviz.**
-keep class com.ezviz.**{*;}

-dontwarn com.ez.**
-keep class com.ez.**{*;}

-dontwarn com.ezdatasource.**
-keep class com.ezdatasource.**{*;}

-dontwarn io.realm.**
-keep class io.realm.** { *; }

-keep class kotlin.**{*;}
-keep class kotlinx.**{*;}