#-------------------------------------------基本不用动区域--------------------------------------------
#---------------------------------基本指令区----------------------------------
-optimizationpasses 5       # 指定代码的压缩级别
-dontusemixedcaseclassnames     # 是否使用大小写混合
-dontskipnonpubliclibraryclasses        # 指定不去忽略非公共的库类
-dontskipnonpubliclibraryclassmembers       # 指定不去忽略包可见的库类的成员
-dontpreverify      # 混淆时是否做预校验
-verbose        # 混淆时是否记录日志
-printmapping proguardMapping.txt
-optimizations !code/simplification/cast,!field/*,!class/merging/*      # 混淆时所采用的算法
-keepattributes *Annotation*,InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
-keepattributes Exceptions

#----------------------------------------------------------------------------
-ignorewarnings     # 是否忽略检测，（是）
#---------------------------------默认保留区---------------------------------
-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.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class * extends android.view.View
-keep public class com.android.vending.licensing.ILicensingService
-keep class android.support.** {*;}
#-ignorewarnings -keep class * { public private *; }

#如果有引用v4包可以添加下面这行
-keep class android.support.v4.** { *; }
-keep public class * extends android.support.v4.**
-keep public class * extends android.app.Fragment

-keepclasseswithmembernames class * {
    native <methods>;
}
-keepclassmembers class * extends android.app.Activity{
    public void *(android.view.View);
}
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}
-keep public class * extends android.view.View{
    *** get*();
    void set*(***);
    public <init>(android.content.Context);
    public <init>(android.content.Context, android.util.AttributeSet);
    public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet);
    public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}
-keepclassmembers class * implements java.io.Serializable {
    static final long serialVersionUID;
    private 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();
}
#表示不混淆R文件中的所有静态字段
-keep class **.R$* {
    public static <fields>;
}
# 保留注解不被混淆
-keep public @interface * {
    ** default (*);
}
-keepclassmembers class * {
    void *(**On*Event);
}
#----------------------------------------------------------------------------

#---------------------------------webview------------------------------------
-keepclassmembers class fqcn.of.javascript.interface.for.Webview {
   public *;
}
-keepclassmembers class * extends android.webkit.WebViewClient {
    public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
    public boolean *(android.webkit.WebView, java.lang.String);
}
-keepclassmembers class * extends android.webkit.WebViewClient {
    public void *(android.webkit.WebView, jav.lang.String);
}
#----------------------------------------------------------------------------

#chat
-keep class com.easefun.polyv.livescenes.chatroom.** {*;}

#feature
-keep class com.easefun.polyv.livescenes.feature.** {*;}

#log
-keep class com.easefun.polyv.livescenes.log.* {*;}
#model
-keep class com.easefun.polyv.livescenes.model.** {*;}
#net
-keep class com.easefun.polyv.livescenes.net.** {*;}
#playback
-keep class com.easefun.polyv.livescenes.playback.log.* {*;}
-keep class com.easefun.polyv.livescenes.playback.ppt.* {*;}
-keep class com.easefun.polyv.livescenes.playback.video.api.* {*;}
-keep class com.easefun.polyv.livescenes.playback.video.PolyvPlaybackListType{*;}
-keep class com.easefun.polyv.livescenes.playback.video.PolyvPlaybackListType$* {*;}
-keep class com.easefun.polyv.livescenes.playback.video.PolyvPlaybackVideoViewListener {*;}
-keep class com.easefun.polyv.livescenes.playback.video.PolyvPlaybackVideoViewListener$* {*;}
#video
-keep class com.easefun.polyv.livescenes.video.api.* {*;}
-keep class com.easefun.polyv.livescenes.video.PolyvTuWenWebView{*;}
-keep class com.easefun.polyv.livescenes.video.PolyvTuWenWebView$*{*;}
#单独keep某个类时，需同时保持其内部类
-keep class com.easefun.polyv.livescenes.video.PolyvLiveListener {*;}
-keep class com.easefun.polyv.livescenes.video.PolyvLiveListener$* {*;}
-keep class com.easefun.polyv.livescenes.video.PolyvLiveCountDownController {*;}
-keep class com.easefun.polyv.livescenes.video.PolyvLiveCountDownController$* {*;}
#current
-keep class com.easefun.polyv.livescenes.PolyvSocketEvent {*;}
-keep class com.easefun.polyv.livescenes.PolyvSocketEvent$* {*;}

-keep class com.easefun.polyv.livescenes.chatroom.PolyvChatroomManager {
    public <fields>;
    protected <fields>;
    public <methods>;
    protected <methods>;
}
-keep class com.easefun.polyv.livescenes.chatroom.PolyvChatManager$* {*;}
-keep class com.easefun.polyv.livescenes.chatroom.PolyvUserManager* {*;}
-keep class com.easefun.polyv.livescenes.config.*{*;}
-keep class com.easefun.polyv.livescenes.config.PolyvLiveChannelType**{*;}

-keep class com.easefun.polyv.livescenes.config.PolyvLiveSDKClient {
    public <fields>;
    protected <fields>;
    public <methods>;
    protected <methods>;
}
-keep class com.easefun.polyv.livescenes.config.PolyvLiveSDKClient$* {*;}
-keep class com.easefun.polyv.livescenes.config.PolyvLiveChannelType**{*;}
-keep class com.easefun.polyv.livescenes.video.PolyvLiveVideoView {
    public <fields>;
    protected <fields>;
    public <methods>;
    protected <methods>;
}
-keep class com.easefun.polyv.livescenes.video.PolyvLiveVideoView$* {*;}
-keep class com.easefun.polyv.livescenes.playback.video.PolyvPlaybackVideoView {
    public <fields>;
    protected <fields>;
    public <methods>;
    protected <methods>;
}
-keep class com.easefun.polyv.livescenes.playback.video.PolyvPlaybackVideoView$* {*;}

#linkmic
-keep class com.easefun.polyv.livescenes.linkmic.**{*;}
#socket
-keep class com.easefun.polyv.livescenes.socket.**{*;}
#log
-keep class com.easefun.polyv.livescenes.log.**{*;}
