#-------------------------------------------基本不用动区域--------------------------------------------
#---------------------------------基本指令区----------------------------------
-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
#----------------------------------------------------------------------------
-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);
}
#----------------------------------------------------------------------------

#auxiliary
-keep class com.easefun.polyv.businesssdk.api.auxiliary.IPolyvAuxiliaryAdStage {*;}
-keep class com.easefun.polyv.businesssdk.api.auxiliary.IPolyvAuxiliaryAdStage$* {*;}
-keep class com.easefun.polyv.businesssdk.api.auxiliary.IPolyvAuxiliaryListenerNotifyer {*;}
-keep class com.easefun.polyv.businesssdk.api.auxiliary.IPolyvAuxiliaryListenerNotifyer$* {*;}
-keep class com.easefun.polyv.businesssdk.api.auxiliary.IPolyvAuxiliaryVideoView {*;}
-keep class com.easefun.polyv.businesssdk.api.auxiliary.IPolyvAuxiliaryVideoView$* {*;}
-keep class com.easefun.polyv.businesssdk.api.auxiliary.IPolyvAuxiliaryVideoViewListenerBinder {*;}
-keep class com.easefun.polyv.businesssdk.api.auxiliary.IPolyvAuxiliaryVideoViewListenerBinder$* {*;}
-keep class com.easefun.polyv.businesssdk.api.auxiliary.IPolyvAuxiliaryVideoViewListenerEvent {*;}
-keep class com.easefun.polyv.businesssdk.api.auxiliary.IPolyvAuxiliaryVideoViewListenerEvent$* {*;}
-keep class com.easefun.polyv.businesssdk.api.auxiliary.PolyvAuxiliaryVideoViewListener {*;}
-keep class com.easefun.polyv.businesssdk.api.auxiliary.PolyvAuxiliaryVideoViewListener$* {*;}
#common
-keep class com.easefun.polyv.businesssdk.api.common.meidacontrol.* {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.listener.* {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.microplayer.IPolyvCommonVideoView {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.microplayer.IPolyvCommonVideoView$* {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.universalplayer.IPolyvUniversalVideoView {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.universalplayer.IPolyvUniversalVideoView$* {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.IPolyvBaseVideoView {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.IPolyvBaseVideoView$* {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.PolyvdMediaPlayerListenerHolder {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.PolyvdMediaPlayerListenerHolder$* {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.PolyvijkVideoViewSubject {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.PolyvijkVideoViewSubject$* {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.PolyvListenerNotifyerDecorator {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.PolyvListenerNotifyerDecorator$* {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.PolyvPlayError {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.PolyvPlayError$* {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.PolyvPlayerScreenRatio {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.PolyvPlayerScreenRatio$* {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.PolyvVideoViewListener {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.PolyvVideoViewListener$* {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.PolyvPlayerOptionParamVO* {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.PolyvErrorMessageUtils {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.PolyvErrorMessageUtils$* {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.PolyvPlayErrorReason {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.PolyvPlayErrorReason$* {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.PolyvPlayType {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.PolyvPlayType$* {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.PolyvVideoType {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.PolyvVideoType$* {*;}
-keep class com.easefun.polyv.businesssdk.api.common.ppt.* {*;}
-keep class com.easefun.polyv.businesssdk.api.common.service.* {*;}
-keep class com.easefun.polyv.businesssdk.api.common.* {*;}
#log
-keep class com.easefun.polyv.businesssdk.log.* {*;}
#model
-keep class com.easefun.polyv.businesssdk.model.** {*;}
#net
-keep class com.easefun.polyv.businesssdk.net.** {*;}
#service
-keep class com.easefun.polyv.businesssdk.service.** {*;}
#sp
-keep class com.easefun.polyv.businesssdk.sp.* {*;}
#sub
-keep class com.easefun.polyv.businesssdk.sub.** {*;}
#vodplayer
-keep class com.easefun.polyv.businesssdk.vodplayer.api.* {*;}
-keep class com.easefun.polyv.businesssdk.vodplayer.db.** {*;}
-keep class com.easefun.polyv.businesssdk.vodplayer.log.* {*;}
-keep class com.easefun.polyv.businesssdk.vodplayer.ppt.* {*;}
-keep class com.easefun.polyv.businesssdk.vodplayer.question.model.* {*;}
-keep class com.easefun.polyv.businesssdk.vodplayer.srt.* {*;}
#web
-keep class com.easefun.polyv.businesssdk.web.* {*;}
#config
-keep class com.easefun.polyv.businesssdk.PolyvThirdSDKClient {*;}
-keep class com.easefun.polyv.businesssdk.PolyvThirdSDKClient$* {*;}

-keep class com.easefun.polyv.businesssdk.PolyvCommonSDKClient {*;}
-keep class com.easefun.polyv.businesssdk.PolyvCommonSDKClient* {*;}

-keep class com.easefun.polyv.businesssdk.PolyvChatDomainManager {*;}
-keep class com.easefun.polyv.businesssdk.PolyvChatDomainManager* {*;}

-keep class com.easefun.polyv.businesssdk.api.auxiliary.PolyvAuxiliaryVideoview {
    public <fields>;
    protected <fields>;
    public <methods>;
    protected <methods>;
}
-keep class com.easefun.polyv.businesssdk.api.auxiliary.PolyvAuxiliaryVideoview$* {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.microplayer.PolyvCommonVideoView {
    public <fields>;
    protected <fields>;
    public <methods>;
    protected <methods>;
}
-keep class com.easefun.polyv.businesssdk.api.common.player.microplayer.PolyvCommonVideoView$* {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.universalplayer.PolyvUniversalVideoView {
    public <fields>;
    protected <fields>;
    public <methods>;
    protected <methods>;
}
-keep class com.easefun.polyv.businesssdk.api.common.player.universalplayer.PolyvUniversalVideoView$* {*;}
-keep class com.easefun.polyv.businesssdk.api.common.player.player.PolyvBaseVideoView {
    public <fields>;
    protected <fields>;
    public <methods>;
    protected <methods>;
}
-keep class com.easefun.polyv.businesssdk.api.common.player.player.PolyvBaseVideoView$* {*;}
-keep class com.easefun.polyv.businesssdk.vodplayer.PolyvVodSDKClient {
    public <fields>;
    protected <fields>;
    public <methods>;
    protected <methods>;
}
-keep class com.easefun.polyv.businesssdk.vodplayer.PolyvVodSDKClient$* {*;}
