# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in D:\Android\sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:

# 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 *;
#}




# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in D:\Android\sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:

# 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 *;
#}

# 防止内部类被混淆，无法访问,务必加上，不然外部引用无法使用内部类

    #-renamesourcefileattribute SourceFile
    #-keepattributes SourceFile,LineNumberTable

    # 防止内部类被混淆，无法访问
    -keepattributes Exceptions,InnerClasses,Signature,Deprecated,*Annotation*,EnclosingMethod

    # 保留所有重要组件
    -keep public class * extends android.app.Service
    -keep public class * extends android.content.BroadcastReceiver

    ## 保留所有 Parcelable 实现类的特殊属性.
    -keepclassmembers class * implements android.os.Parcelable {
         static android.os.Parcelable$Creator CREATOR;
    }

    -keepclassmembers enum * {
            public static **[] values();
            public static ** valueOf(java.lang.String);
    }

    ## 用到序列化的实体类
    -keepclassmembers class * implements java.io.Serializable {
         static final long serialVersionUID;
             static final java.io.ObjectStreamField[] serialPersistentFields;
         private void writeObject(java.io.ObjectOutputStream);
         private void readObject(java.io.ObjectInputStream);
         java.lang.Object writeReplace();
         java.lang.Object readResolve();
    }


    ## for pushManager
    -keep class com.meizu.cloud.pushsdk.PushManager{ *; }
    -dontwarn com.meizu.cloud.pushsdk.PushManager

    -keep class com.meizu.cloud.pushsdk.notification.MPushMessage{ *; }
    -dontwarn com.meizu.cloud.pushsdk.notification.MPushMessage

    -keep class com.meizu.cloud.pushsdk.handler.MessageV3 {*;}
    -dontwarn com.meizu.cloud.pushsdk.handler.MessageV3

    -keep class com.meizu.cloud.pushsdk.handler.MessageV4 {*;}
    -dontwarn com.meizu.cloud.pushsdk.handler.MessageV4

    -keep class com.meizu.cloud.pushsdk.notification.PushNotificationBuilder{ *; }
    -dontwarn com.meizu.cloud.pushsdk.notification.PushNotificationBuilder


    -keep class com.meizu.cloud.pushsdk.platform.message.BasicPushStatus{*;}
    -dontwarn com.meizu.cloud.pushsdk.platform.message.BasicPushStatus

    -keep class com.meizu.cloud.pushsdk.platform.message.PushSwitchStatus{*;}
    -dontwarn com.meizu.cloud.pushsdk.platform.message.PushSwitchStatus

    -keep class com.meizu.cloud.pushsdk.platform.message.RegisterStatus{*;}
    -dontwarn com.meizu.cloud.pushsdk.platform.message.RegisterStatus

    -keep class com.meizu.cloud.pushsdk.platform.message.SubAliasStatus{*;}
    -dontwarn com.meizu.cloud.pushsdk.platform.message.SubAliasStatus

    -keep class com.meizu.cloud.pushsdk.platform.message.UnRegisterStatus{*;}
    -dontwarn com.meizu.cloud.pushsdk.platform.message.UnRegisterStatus

    -keep class com.meizu.cloud.pushsdk.platform.message.SubTagsStatus{*;}
    -dontwarn com.meizu.cloud.pushsdk.platform.message.SubTagsStatus

    -keep class com.meizu.cloud.pushsdk.platform.message.SubTagsStatus$*{*;}

    -keep class com.meizu.cloud.pushsdk.notification.model.styleenum.BaseStyleModel{*;}
    -dontwarn com.meizu.cloud.pushsdk.notification.model.styleenum.BaseStyleModel

    -keep class com.meizu.cloud.pushsdk.notification.model.styleenum.InnerStyleLayout{*;}
    -dontwarn com.meizu.cloud.pushsdk.notification.model.styleenum.InnerStyleLayout

    -keep class com.meizu.cloud.pushsdk.notification.model.ActVideoSetting{*;}
    -dontwarn com.meizu.cloud.pushsdk.notification.model.ActVideoSetting
    -keep class com.meizu.cloud.pushsdk.notification.model.AdvanceSetting{*;}
    -dontwarn com.meizu.cloud.pushsdk.notification.model.AdvanceSetting
    -keep class com.meizu.cloud.pushsdk.notification.model.AppIconSetting{*;}
    -dontwarn com.meizu.cloud.pushsdk.notification.model.AppIconSetting
    -keep class com.meizu.cloud.pushsdk.notification.model.NotificationStyle{*;}
    -dontwarn com.meizu.cloud.pushsdk.notification.model.NotificationStyle
    -keep class com.meizu.cloud.pushsdk.notification.model.NotifyType{*;}
    -dontwarn com.meizu.cloud.pushsdk.notification.model.NotifyType
    -keep class com.meizu.cloud.pushsdk.notification.model.TimeDisplaySetting{*;}
    -dontwarn com.meizu.cloud.pushsdk.notification.model.TimeDisplaySetting

    -keep class com.meizu.cloud.pushsdk.platform.PlatformMessageSender{
        public void launchStartActivity(android.content.Context, java.lang.String, java.lang.String,java.lang.String);
     }

    -keep class com.meizu.cloud.pushsdk.constants.PushConstants{ *; }
    -dontwarn com.meizu.cloud.pushsdk.constants.PushConstants

    -keep class com.meizu.cloud.pushsdk.util.MzSystemUtils{
        public static boolean isBrandMeizu();
    }
    -dontwarn com.meizu.cloud.pushsdk.util.MzSystemUtils


    -keep class com.meizu.cloud.pushsdk.MzPushMessageReceiver{ *; }
    -dontwarn com.meizu.cloud.pushsdk.MzPushMessageReceiver

    -keep class com.meizu.cloud.pushinternal.DebugLogger{*;}
    -dontwarn com.meizu.cloud.pushinternal.DebugLogger

