# This is a configuration file for ProGuard.
# http://proguard.sourceforge.net/index.html#manual/usage.html
#
# Starting with version 2.2 of the Android plugin for Gradle, these files are no longer used. Newer
# versions are distributed with the plugin and unpacked at build time. Files in this directory are
# no longer maintained.

#表示混淆时不使用大小写混合类名
-dontusemixedcaseclassnames
#表示不跳过library中的非public的类
-dontskipnonpubliclibraryclasses
#打印混淆的详细信息
-verbose

# Optimization is turned off by default. Dex does not like code run
# through the ProGuard optimize and preverify steps (and performs some
# of these optimizations on its own).
-dontoptimize
##表示不进行校验,这个校验作用 在java平台上的
-dontpreverify
# Note that if you want to enable optimization, you cannot just
# include optimization flags in your own project configuration file;
# instead you will need to point to the
# "proguard-android-optimize.txt" file instead of this one from your
# project.properties file.

-keep public class com.google.vending.licensing.ILicensingService
-keep public class com.android.vending.licensing.ILicensingService

# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
-keepclasseswithmembernames class * {
    native <methods>;
}

# keep setters in Views so that animations can still work.
# see http://proguard.sourceforge.net/manual/examples.html#beans
-keepclassmembers public class * extends android.view.View {
   void set*(***);
   *** get*();
}

# We want to keep methods in Activity that could be used in the XML attribute onClick
-keepclassmembers class * extends android.app.Activity {
   public void *(android.view.View);
}

# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keepclassmembers class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator CREATOR;
}

-keepclassmembers class **.R$* {
    public static <fields>;
}

# The support library contains references to newer platform versions.
# Don't warn about those in case this app is linking against an older
# platform version.  We know about them, and they are safe.
-dontwarn android.support.**

# Understand the @Keep support annotation.
-keep class android.support.annotation.Keep

-keep @android.support.annotation.Keep class * {*;}

-keepclasseswithmembers class * {
    @android.support.annotation.Keep <methods>;
}

-keepclasseswithmembers class * {
    @android.support.annotation.Keep <fields>;
}

-keepclasseswithmembers class * {
    @android.support.annotation.Keep <init>(...);
}

#忽略警告
-ignorewarnings
#保证是独立的jar,没有任何项目引用,如果不写就会认为我们所有的代码是无用的,从而把所有的代码压缩掉,导出一个空的jar
-dontshrink
#保护内部类,泛型
-keepattributes Exceptions, InnerClasses, Signature, Deprecated, SourceFile, LineNumberTable, *Annotation*, EnclosingMethod
#指定被保护的方法的参数类型和参数名不被混淆
-keepparameternames

-keep class tv.danmaku.ijk.media.**{*;}

-keep class com.easefun.polyvsdk.video.auxiliary.PolyvAuxiliaryVideoView {
    public PolyvAuxiliaryVideoView <init>;
    public <fields>;
    protected <fields>;
    public <methods>;
    protected <methods>;
}

-keep class com.easefun.polyvsdk.video.auxiliary.PolyvAuxiliaryVideoViewListenerEvent {
    public PolyvAuxiliaryVideoViewListenerEvent <init>;
    public <fields>;
    protected <fields>;
    public <methods>;
    protected <methods>;
}

-keep class com.easefun.polyvsdk.video.PolyvVideoUtil {
    public PolyvVideoUtil <init>;
    public <fields>;
    protected <fields>;
    public <methods>;
    protected <methods>;
}

-keep class com.easefun.polyvsdk.video.PolyvVideoUtil$* {*;}

-keep class com.easefun.polyvsdk.video.PolyvVideoView {
    public PolyvVideoView <init>;
    public <fields>;
    protected <fields>;
    public <methods>;
    protected <methods>;
}

-keep class com.easefun.polyvsdk.video.PolyvVideoViewListenerEvent {
    public PolyvVideoViewListenerEvent <init>;
    public <fields>;
    protected <fields>;
    public <methods>;
    protected <methods>;
}

-keep class com.easefun.polyvsdk.PolyvDevMountInfo {
    public PolyvDevMountInfo <init>;
    public <fields>;
    protected <fields>;
    public <methods>;
    protected <methods>;
}

-keep class com.easefun.polyvsdk.PolyvSDKClient {
    public PolyvSDKClient <init>;
    public <fields>;
    protected <fields>;
    public <methods>;
    protected <methods>;
}

-keep class com.easefun.polyvsdk.PolyvSDKUtil {
    public PolyvSDKUtil <init>;
    public <fields>;
    protected <fields>;
    public <methods>;
    protected <methods>;
}

-keep class com.easefun.polyvsdk.application.PolyvSettings {*;}
-keep class com.easefun.polyvsdk.database.question.QuestionDatabaseService {*;}
-keep class com.easefun.polyvsdk.database.video.VideoDatabaseService {*;}
-keep class com.easefun.polyvsdk.database.videoProgress.VideoProgressDatabaseService {*;}
-keep class com.easefun.polyvsdk.ijk.* {*;}
-keep class com.easefun.polyvsdk.ijk.IjkVideoView$* {*;}
-keep class com.easefun.polyvsdk.init.PolyvSDKStrategy {*;}
-keep class com.easefun.polyvsdk.init.PolyvSDKStrategy$* {*;}
-keep class com.easefun.polyvsdk.live.** {*;}
-keep class com.easefun.polyvsdk.live.chat.IPolyvPPTView$* {*;}
-keep class com.easefun.polyvsdk.log.PolyvLogFile {*;}
-keep class com.easefun.polyvsdk.log.PolyvELogStore {*;}
-keep class com.easefun.polyvsdk.log.PolyvCommonLog {*;}
-keep class com.easefun.polyvsdk.marquee.* {*;}
-keep class com.easefun.polyvsdk.net.PolyvNetHelper {*;}
-keep class com.easefun.polyvsdk.net.PolyvNetPptJsRequest {*;}
-keep class com.easefun.polyvsdk.net.PolyvNetPptJsRequestResult {*;}
-keep class com.easefun.polyvsdk.net.PolyvNetQuestionRequest {*;}
-keep class com.easefun.polyvsdk.net.PolyvNetQuestionRequestResult {*;}
-keep class com.easefun.polyvsdk.net.PolyvNetRequestResult {*;}
-keep class com.easefun.polyvsdk.net.PolyvNetRequestResult$* {*;}
-keep class com.easefun.polyvsdk.net.PolyvNetUrlVO {*;}
-keep class com.easefun.polyvsdk.net.PolyvNetUrlVO$* {*;}
-keep class com.easefun.polyvsdk.net.PolyvNetVideoJSONRequest {*;}
-keep class com.easefun.polyvsdk.net.PolyvNetVideoJSONRequestResult {*;}
-keep class com.easefun.polyvsdk.net.PolyvNetWorker {*;}
-keep class com.easefun.polyvsdk.po.** {*;}
-keep class com.easefun.polyvsdk.question.PolyvQuestion {*;}
-keep class com.easefun.polyvsdk.question.PolyvQuestionDoneAction {*;}
-keep class com.easefun.polyvsdk.question.PolyvQuestionDoneAction$* {*;}
-keep class com.easefun.polyvsdk.server.AndroidService {*;}
-keep class com.easefun.polyvsdk.srt.PolyvSRTItemVO {*;}
-keep class com.easefun.polyvsdk.util.PolyvAPIHelper {*;}
-keep class com.easefun.polyvsdk.util.PolyvDnsUtil {*;}
-keep class com.easefun.polyvsdk.util.PolyvUtils {*;}
-keep class com.easefun.polyvsdk.util.PolyvReqUtils {*;}
-keep class com.easefun.polyvsdk.util.PolyvReqUtils$* {*;}
-keep class com.easefun.polyvsdk.util.PolyvScreenTool {*;}
-keep class com.easefun.polyvsdk.util.PolyvVideoProgressDatabaseUtil {*;}
-keep class com.easefun.polyvsdk.util.PolyvVodPlayerUtil {*;}
-keep class com.easefun.polyvsdk.util.ScreenTool {*;}
-keep class com.easefun.polyvsdk.util.PolyvDownloadDirUtil {*;}
-keep class com.easefun.polyvsdk.util.PolyvScopedStorageUtil {*;}
-keep class com.easefun.polyvsdk.video.auxiliary.IPolyvAuxiliaryIjkVideoView {*;}
-keep class com.easefun.polyvsdk.video.auxiliary.IPolyvAuxiliaryVideoView {*;}
-keep class com.easefun.polyvsdk.video.auxiliary.IPolyvAuxiliaryVideoViewListenerEvent {*;}
-keep class com.easefun.polyvsdk.video.auxiliary.PolyvAuxiliaryVideoView$* {*;}
-keep class com.easefun.polyvsdk.video.constant.** {*;}
-keep class com.easefun.polyvsdk.video.PolyvVideoType {*;}
-keep class com.easefun.polyvsdk.video.listener.* {*;}
-keep class com.easefun.polyvsdk.video.IMediaController {*;}
-keep class com.easefun.polyvsdk.video.IPolyvIjkVideoView {*;}
-keep class com.easefun.polyvsdk.video.IPolyvMediaController {*;}
-keep class com.easefun.polyvsdk.video.IPolyvMediaPlayerControl {*;}
-keep class com.easefun.polyvsdk.video.IPolyvVideoView {*;}
-keep class com.easefun.polyvsdk.video.IPolyvVideoViewListenerEvent {*;}
-keep class com.easefun.polyvsdk.video.PolyvBaseMediaController$* {*;}
-keep class com.easefun.polyvsdk.video.PolyvIjkVideoView {*;}
-keep class com.easefun.polyvsdk.video.PolyvMediaInfoType {*;}
-keep class com.easefun.polyvsdk.video.PolyvPlayErrorReason {*;}
-keep class com.easefun.polyvsdk.video.PolyvPlayErrorReason$* {*;}
-keep class com.easefun.polyvsdk.video.PolyvPlayStrategy {*;}
-keep class com.easefun.polyvsdk.video.PolyvPlayStrategy$* {*;}
-keep class com.easefun.polyvsdk.video.PolyvValidateM3U8VideoReturnType {*;}
-keep class com.easefun.polyvsdk.video.PolyvValidateM3U8VideoReturnType$* {*;}
-keep class com.easefun.polyvsdk.video.PolyvVideoView$* {*;}
-keep class com.easefun.polyvsdk.video.PolyvSeekType {*;}
-keep class com.easefun.polyvsdk.video.PolyvSeekType$* {*;}
-keep class com.easefun.polyvsdk.vo.** {*;}
-keep class com.easefun.polyvsdk.vo.PolyvQAFormatVO$* {*;}
-keep class com.easefun.polyvsdk.BitRateEnum {*;}
-keep class com.easefun.polyvsdk.PolyvBitRate {*;}
-keep class com.easefun.polyvsdk.PolyvDevMountInfo$* {*;}
-keep class com.easefun.polyvsdk.PolyvQOSAnalytics {*;}
-keep class com.easefun.polyvsdk.PolyvQuestionUtil {*;}
-keep class com.easefun.polyvsdk.QAFormatVO {*;}
-keep class com.easefun.polyvsdk.QuestionAnswerVO {*;}
-keep class com.easefun.polyvsdk.QuestionVO {*;}
-keep class com.easefun.polyvsdk.QuestionVO$* {*;}
-keep class com.easefun.polyvsdk.RestVO {*;}
-keep class com.easefun.polyvsdk.SDKUtil {*;}
-keep class com.easefun.polyvsdk.Video {*;}
-keep class com.easefun.polyvsdk.Video$* {*;}
-keep class com.easefun.polyvsdk.screencast.** {*;}
-keep class com.easefun.polyvsdk.screencast.PolyvScreencastHelper$* {*;}
