# Add project specific ProGuard rules here. # By default, the flags in this file are appended to flags specified # in C:\AndroidSDK/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 *; #} # Uncomment this to preserve the line number information for # debugging stack traces. #-keepattributes SourceFile,LineNumberTable # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile #---------------------------------------------------------------------------- #--------------------------------------------------------------------------------------------------- #-------------------------------------------基本不用动区域-------------------------------------------- #---------------------------------基本指令区---------------------------------- -optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontskipnonpubliclibraryclassmembers -dontpreverify -verbose -printmapping proguardMapping.txt -optimizations !code/simplification/cast,!field/*,!class/merging/* -adaptclassstrings -keepattributes InnerClasses, EnclosingMethod, Signature, *Annotation*,Exceptions -keepattributes SourceFile,LineNumberTable #---------------------------------------------------------------------------- #---------------------------------默认保留区--------------------------------- -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.** {*;} -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(); } -keep class **.R$* { *; } -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); } -keepclassmembers class * extends android.webkit.WebChromeClient{ public void openFileChooser(...); } #-------------------------------------------定制化区域---------------------------------------------- #---------------------------------1.实体类--------------------------------- -keep public class * extends com.dayu.base.ui.presenter.BasePresenter -keep class com.dayu.bigfish.api.protocol.** { *; } -keep class com.dayu.base.api.protocol.** { *; } -keep class com.dayu.message.data.protocol.** { *; } -keep class com.dayu.managercenter.data.** { *; } -keep class com.dayu.order.api.protocol.** { *; } -keep class com.dayu.learncenter.api.** { *; } -keep class com.dayu.order.sqlbean.** { *; } -keep class com.dayu.provider.event.** { *; } -keep class com.dayu.usercenter.data.protocol.** { *; } -keep class com.dayu.usercenter.model.** { *; } -keep class com.dayu.usercenter.event.** { *; } -keep class com.bigfish.salecenter.model.** { *; } -keep class com.bigfish.salecenter.event.** { *; } -keep class com.bigfish.learncenter.event.** { *; } -keep class com.dayu.event.** { *; } #------------------------------------------------------------------------- #---------------------------------2.第三方包------------------------------- #retrofit -dontwarn okio.** -dontwarn com.google.** -dontwarn javax.annotation.** -dontwarn javax.annotation.Nullable -dontwarn javax.annotation.ParametersAreNonnullByDefault -dontwarn okio.** -dontwarn retrofit2.** -keep class retrofit2.** { *; } -dontwarn javax.inject.** # OkHttp3 -dontwarn okhttp3.logging.** -keep class okhttp3.internal.**{*;} ############################################# # RxJava RxAndroid -dontwarn sun.misc.** -keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* { long producerIndex; long consumerIndex; } -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef { rx.internal.util.atomic.LinkedQueueNode producerNode; } -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef { rx.internal.util.atomic.LinkedQueueNode consumerNode; } # Gson -keep class com.google.gson.stream.** { *; } -keepattributes EnclosingMethod #PictureSelector 2.0 -keep class com.luck.picture.lib.** { *; } -dontwarn com.yalantis.ucrop** -keep class com.yalantis.ucrop** { *; } -keep interface com.yalantis.ucrop** { *; } #glide -keep public class * implements com.bumptech.glide.module.GlideModule -keep public class * extends com.bumptech.glide.AppGlideModule -keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** { **[] $VALUES; public *; } #greendao -keepclassmembers class * extends org.greenrobot.greendao.AbstractDao { public static java.lang.String TABLENAME; } -keep class **$Properties # If you do not use SQLCipher: -dontwarn org.greenrobot.greendao.database.** # If you do not use Rx: -dontwarn rx.** #环信 -keep class com.hyphenate.** {*;} -keep class com.superrtc.** {*;} -dontwarn com.hyphenate.** #高德地图 -keep class com.amap.api.location.**{*;} -keep class com.amap.api.fence.**{*;} -keep class com.autonavi.aps.amapapi.model.**{*;} #2D地图 -keep class com.amap.api.maps2d.**{*;} -keep class com.amap.api.mapcore2d.**{*;} -dontwarn com.amap.api.** #友盟 -keepclassmembers class * { public <init> (org.json.JSONObject); } -keep public class com.dayu.bigfish.R$*{ public static final int *; } -keep class com.umeng.error.UMError{ public *; } -keep class com.umeng.error.UMErrorCatch{public *; } -keep class com.umeng.error.UMErrorDataManger{ public *; } -keep class com.umeng.error.BatteryUtils{ public *; } #友盟push -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 *; } -keep public class * extends android.app.Service -dontwarn com.vivo.push.** -keep class com.vivo.push.**{*; } -keep class com.vivo.vms.**{*; } -keep class xxx.xxx.xxx.PushMessageReceiverImpl{*;} #eventbus -keepclassmembers class ** { @org.greenrobot.eventbus.Subscribe <methods>; } -keep enum org.greenrobot.eventbus.ThreadMode { *; } ##arouter -keep public class com.alibaba.android.arouter.routes.**{*;} -keep class * implements com.alibaba.android.arouter.facade.template.ISyringe{*;} # 如果使用了 byType 的方式获取 Service,需添加下面规则,保护接口 -keep interface * implements com.alibaba.android.arouter.facade.template.IProvider # 如果使用了 单类注入,即不定义接口实现 IProvider,需添加下面规则,保护实现 -keep class * implements com.alibaba.android.arouter.facade.template.IProvider -dontwarn com.alibaba.** -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -verbose -ignorewarnings #---------------------------------3.与js互相调用的类------------------------ #---------------------------------4.反射相关的类和方法----------------------- #---------------------------------Jiaozivideo----------------------- -keep public class cn.jzvd.JZMediaSystem {*; } -keep public class cn.jzvd.demo.CustomMedia.CustomMedia {*; } -keep public class cn.jzvd.demo.CustomMedia.JZMediaIjk {*; } -keep public class cn.jzvd.demo.CustomMedia.JZMediaSystemAssertFolder {*; } #ijkplayer -keep class tv.danmaku.ijk.media.** {*;} #pictureSelecter -keep class com.luck.picture.lib.** { *; } -keep class com.luck.lib.camerax.** { *; } -dontwarn com.yalantis.ucrop** -keep class com.yalantis.ucrop** { *; } -keep interface com.yalantis.ucrop** { *; }