# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /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 *;
#}
#

# 这里的混淆配置会被带进 arr 包里面

-dontwarn android.support.v4.**
-dontwarn android.os.**
-keep class android.support.v4.** { *; }        # 保持哪些类不被混淆
-keep class android.os.**{*;}

-keep interface android.suppoproguard-rules.prort.v4.app.** { *; }
-keep public class * extends android.support.v4.**
-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.support.v4.widget

-keepclasseswithmembernames class * {     # 保持 native 方法不被混淆
    native <methods>;
}

-keepclasseswithmembers class * {         # 保持自定义控件类不被混淆
    public <init>(android.content.Context, android.util.AttributeSet);
}

-keepclasseswithmembers class * {         # 保持自定义控件类不被混淆
    public <init>(android.content.Context, android.util.AttributeSet, int);
}

-keepclassmembers class * extends android.app.Activity { #保持类成员
   public void *(android.view.View);
}

-keepclassmembers enum * {                  # 保持枚举 enum 类不被混淆
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keep class * implements android.os.Parcelable {    # 保持Parcelable不被混淆
  public static final android.os.Parcelable$Creator *;
}

-dontwarn com.ss.android.push.**
-keepnames class org.msgpack.MessageTypeException.** {*;}
-keepnames class org.msgpack.packer.** {*;}
-keepnames class org.msgpack.template.** {*;}
-keepnames class org.msgpack.type.** {*;}
-keepnames class org.msgpack.unpacker.** {*;}
-keepnames class org.msgpack.MessagePack.** {*;}
-dontwarn org.msgpack.**

-keep interface com.ss.android.pushmanager.thirdparty.I* {*;}
-keep class * implements com.ss.android.pushmanager.thirdparty.IPushAdapter {*;}
-keep class * implements com.ss.android.pushmanager.thirdparty.IPushDepend {*;}

-keep interface com.ss.android.pushmanager.IMessageAppAdapter {*;}
-keep class * implements com.ss.android.pushmanager.IMessageAppAdapter {*;}
-keep class com.ss.android.push.daemon.NativeDaemonBase {*;}





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

    #-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.handler.MzPushMessage {*;}
    -dontwarn com.meizu.cloud.pushsdk.handler.MzPushMessage

    -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);
        public void showQuickNotification(android.content.Context,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{*;}
    -dontwarn com.meizu.cloud.pushsdk.util.MzSystemUtils

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


    -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


#umeng
-dontwarn com.umeng.**
-dontwarn com.taobao.**
-dontwarn anet.channel.**
-dontwarn anetwork.channel.**
-dontwarn org.android.**
-dontwarn org.apache.thrift.**
#-dontwarn com.xiaomi.**
#-dontwarn com.huawei.**
#-dontwarn com.meizu.**
-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 com.meizu.** {*;}
-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 *;
}
#xiaomi
-keep class com.xiaomi.push.service.receivers.MIPushMessageHandler {*;}
-dontwarn com.xiaomi.push.**

#huawei
-keep class com.hianalytics.android.**{*;}
-keep class com.huawei.android.**{*;}

-keep class com.volcengine.push.ITracker{*;}
-keep class com.volcengine.push.settings.SettingsManager{*;}
-keep interface com.volcengine.push.settings.PushOnlineSettings{
    boolean needControlFlares();
}
-keep class com.volcengine.push.utils.RomVersionParamHelper{
     boolean isMiui12();
}
-dontoptimize
-keep class com.volcengine.push.VePush$*{
*;
}
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /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 /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 *;
#}
#
# 这里的混淆配置 不会 带进 aar 包里面

-optimizationpasses 5
-keepparameternames

-ignorewarnings
-keep class com.volcengine.push.BDPush {*;}
-keep interface com.volcengine.push.IVePushService {*;}
-keep interface com.volcengine.push.ICallback {*;}
-keep class com.volcengine.push.ErrorCode {*;}
-keep interface com.volcengine.push.OnPushClickListener {*;}
-keep interface com.volcengine.push.OnPushArriveListener {*;}

-keep interface com.ss.android.pushmanager.I* {*;}
-keep interface com.ss.android.message.IPushLifeCycleListener {*;}
-keep class * implements com.ss.android.pushmanager.I*  {*;}
-keep class com.ss.android.newmedia.message.MessageReceiverService  {*;}
-keep class com.ss.android.pushmanager.MessageConstants  {*;}
-keep class com.bytedance.common.utility.Logger  {*;}
-keep class com.ss.android.pushmanager.PushCommonConstants  {*;}
-keep class com.ss.android.pushmanager.client.**  {*;}
-keep class com.ss.android.pushmanager.setting.**  {*;}
-keep class com.ss.android.newmedia.message.MessageShowHandlerService  {*;}
-keep class com.ss.android.newmedia.message.MessageShowHandlerService$ImageDownloadCallback  {*;}
-keep class com.volcengine.push.PushBody  {*;}


# 给 faceu 打包,特殊处理,  face 那边也用到了 msgpack-0.6.9 所以这里 先吧 msgpack 相关类 keep 了
-keep class org.msgpack.MessageTypeException.** {*;}
-keep class org.msgpack.packer.** {*;}
-keep class org.msgpack.template.** {*;}
-keep class org.msgpack.type.** {*;}
-keep class org.msgpack.unpacker.** {*;}
-keep class org.msgpack.annotation.** {*;}
-keep class org.msgpack.io.** {*;}
-keep class org.msgpack.util.** {*;}
-keep class org.msgpack.** {*;}
-keep class org.apache.harmony.beans.** {*;}
-keep class org.apache.harmony.beans.Argument  {*;}
-keep class org.apache.harmony.internal.nls.** {*;}
-dontwarn org.msgpack.**
-dontwarn org.apache.harmony.beans.**

-dontwarn com.ss.android.push.**


