# Add project specific ProGuard rules here. # By default, the flags in this file are appended to flags specified # in /Users/zhy/android/sdk/android-sdk-macosx/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 *; #} -optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontskipnonpubliclibraryclassmembers #生æˆæ··æ·†åŽçš„æ˜ å°„å…³ç³» -verbose #è¾“å‡ºæ˜ å°„æ–‡ä»¶åˆ°mappingcd -printmapping build/outputs/mapping/release/mapping.txt -ignorewarnings -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* -keepattributes Signature #注解ä¸éœ€è¦æ··æ·† -keepattributes *Annotation* #androidä¸åšé¢„检验,去掉å¯ä»¥åŠ 快混淆速度 -dontpreverify #抛出异常时ä¿ç•™ä»£ç è¡Œå·ï¼Œ -keepattributes SourceFile,LineNumberTable #实体类混淆开始 -dontwarn com.electric.chargingpile.data.** -keep class com.electric.chargingpile.data.**{*;} #å®žä½“ç±»æ··æ·†ç»“æŸ #高德地图相关混淆开始 #3D 地图 V5.0.0之åŽï¼š -keep class com.amap.api.maps.**{*;} -keep class com.autonavi.**{*;} -keep class com.amap.api.trace.**{*;} #å®šä½ -keep class com.amap.api.location.**{*;} -keep class com.amap.api.fence.**{*;} -keep class com.autonavi.aps.amapapi.model.**{*;} #æœç´¢ -keep class com.amap.api.services.**{*;} #导航 -keep class com.amap.api.navi.**{*;} -keep class com.autonavi.**{*;} #内置è¯éŸ³ V5.6.0ä¹‹åŽ -keep class com.alibaba.idst.nls.** {*;} -keep class com.google.**{*;} -keep class com.nlspeech.nlscodec.** {*;} #é«˜å¾·åœ°å›¾ç›¸å…³æ··æ·†ç»“æŸ #Gson混淆开始 -keep class com.google.gson.stream.** { *; } -keepattributes EnclosingMethod #Gsonæ··æ·†ç»“æŸ #butterknife混淆开始 -keep class butterknife.** { *; } -dontwarn butterknife.internal.** -keep class **$$ViewBinder { *; } -keepclasseswithmembernames class * { @butterknife.* <fields>;} -keepclasseswithmembernames class * { @butterknife.* <methods>;} #butterknifeæ··æ·†ç»“æŸ -keep class cn.sharesdk.**{*;} -keep class com.sina.**{*;} -keep class **.R$* {*;} -keep class **.R{*;} -keep class com.mob.**{*;} -keep class m.framework.**{*;} -dontwarn cn.sharesdk.** -dontwarn com.sina.** -dontwarn com.mob.** -dontwarn **.R$* # 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 RxJava: -dontwarn rx.** # greenDAOæ··æ·†ç»“æŸ # jpush混淆开始 -dontoptimize -dontpreverify -dontwarn cn.jpush.** -keep class cn.jpush.** { *; } -keep class * extends cn.jpush.android.helpers.JPushMessageReceiver { *; } -dontwarn cn.jiguang.** -keep class cn.jiguang.** { *; } # jpushæ··æ·†ç»“æŸ -keepattributes *Annotation* -keepclassmembers class ** { @org.greenrobot.eventbus.Subscribe <methods>; } -keep enum org.greenrobot.eventbus.ThreadMode { *; } # Only required if you use AsyncExecutor -keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent { <init>(java.lang.Throwable); } -keep class cn.sharesdk.**{*;} -keep class com.sina.**{*;} -keep class **.R$* {*;} -keep class **.R{*;} -keep class com.mob.**{*;} -keep class m.framework.**{*;} -dontwarn cn.sharesdk.** -dontwarn com.sina.** -dontwarn com.mob.** -dontwarn **.R$* -keepclassmembers class ** { public void onEvent*(**); } # 混淆忽略东软jar -keep class com.dlruijin.sid.** {*;} -dontwarn okhttp3.** -keep class okhttp3.**{*;} # 混淆忽略东软jar #EventBus混淆开始 #//如果使用了EventBus processorè¿›è¡ŒåŠ é€Ÿï¼Œå°±å¿…é¡»åŠ ä¸Šè¿™ä¸ª(åªè¦æœ‰è¿™ä¸ªæ³¨è§£çš„类和方法都ä¸æ··æ·†ï¼Œä¸ºå编译æ供了便利), å¦‚æžœæ²¡æœ‰ç”¨åˆ°åŠ é€Ÿï¼Œè¿™ä¸ªå°±ä¸ç”¨äº† -keepclassmembers class ** { @org.greenrobot.eventbus.Subscribe <methods>; } -keep enum org.greenrobot.eventbus.ThreadMode { *; } # Only required if you use AsyncExecutor -keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent { <init>(java.lang.Throwable); } #EventBusæ··æ·†ç»“æŸ # 科大讯飞混淆开始 -keep class com.iflytek.**{*;} -keepattributes Signature # ç§‘å¤§è®¯é£žæ··æ·†ç»“æŸ #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; } #Rxjava&RxAndroidæ··æ·†ç»“æŸ -dontoptimize -dontpreverify -dontwarn cn.jpush.** -keep class cn.jpush.** { *; } -keep class * extends cn.jpush.android.helpers.JPushMessageReceiver { *; } -dontwarn cn.jiguang.** -keep class cn.jiguang.** { *; } # Okhttp3混淆开始 -dontwarn okhttp3.** -dontwarn okio.** -dontwarn javax.annotation.** # A resource is loaded with a relative path so the package of this class must be preserved. -keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase # Okhttp3æ··æ·†ç»“æŸ # Glide -keep public class * implements com.bumptech.glide.module.GlideModule -keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** { **[] $VALUES; public *; } # support-v7-appcompat -keep public class android.support.v7.widget.** { *; } -keep public class android.support.v7.internal.widget.** { *; } -keep public class android.support.v7.internal.view.menu.** { *; } -keep public class * extends android.support.v4.view.ActionProvider { public <init>(android.content.Context); } # support-design -dontwarn android.support.design.** -keep class android.support.design.** { *; } -keep interface android.support.design.** { *; } -keep public class android.support.design.R$* { *; } -keepclasseswithmembernames class * { native <methods>; } -keepclasseswithmembernames class * { public void run(...); } -keepclasseswithmembernames class * { public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembernames class * { public <init>(android.content.Context, android.util.AttributeSet, int); } -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 -dontwarn android.support.v4.** -dontwarn android.os.** -keep class android.support.v4.** { *; } -keepclassmembers class * extends android.app.Activity { public void *(android.view.View); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } -keep public class * extends android.view.View { public <init>(android.content.Context); public <init>(android.content.Context, android.util.AttributeSet); public <init>(android.content.Context, android.util.AttributeSet, int); public void set*(...); } -keepclassmembers class **.R$* { public static <fields>; } -keep public class com.ikmak.parent.R$*{ public static final int *; } -keepnames class * implements java.io.Serializable -keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; !static !transient <fields>; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); } -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); } #ijkplayer -keep class tv.danmaku.ijk.media.player.** {*;} -keep class tv.danmaku.ijk.media.player.IjkMediaPlayer{*;} -keep class tv.danmaku.ijk.media.player.ffmpeg.FFmpegApi{*;} -dontwarn demo.** -keep class demo.**{*;} -dontwarn net.sourceforge.pinyin4j.** -keep class net.sourceforge.pinyin4j.**{*;} -keep class net.sourceforge.pinyin4j.format.**{*;} -keep class net.sourceforge.pinyin4j.format.exception.**{*;} -dontwarn javax.swing.** -keep class javax.swing.** { *;} -dontwarn java.rmi.** -keep class java.rmi.** { *;} #----------- 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; } -dontnote rx.internal.util.PlatformDependent