3636# 这个过滤器是谷歌推荐的算法,一般不做更改
3737-optimizations !code/simplification/cast,!field/*,!class/merging/*
3838
39-
4039#############################################
4140#
4241# Android开发中一些需要保留的公共部分
4342#
4443#############################################
4544
46- # 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
47- # 因为这些子类都有可能被外部调用
48- -keep public class * extends android.app.Activity
49- -keep public class * extends android.app.Appliction
50- -keep public class * extends android.app.Service
51- -keep public class * extends android.content.BroadcastReceiver
52- -keep public class * extends android.content.ContentProvider
53- -keep public class * extends android.app.backup.BackupAgentHelper
54- -keep public class * extends android.preference.Preference
55- -keep public class * extends android.view.View
56- -keep public class com.android.vending.licensing.ILicensingService
57-
58-
59- # 保留support下的所有类及其内部类
60- -keep class android.support.** {*;}
61-
62- # 保留继承的
63- -keep public class * extends android.support.v4.**
64- -keep public class * extends android.support.v7.**
65- -keep public class * extends android.support.annotation.**
66-
6745# 保留R下面的资源
6846-keep class **.R$* {*;}
6947
9169 public <init>(android.content.Context);
9270 public <init>(android.content.Context, android.util.AttributeSet);
9371 public <init>(android.content.Context, android.util.AttributeSet, int);
94- }
95-
96- # 保留Parcelable序列化类不被混淆
97- -keep class * implements android.os.Parcelable {
98- public static final android.os.Parcelable$Creator *;
99- }
100-
101- # 保留Serializable序列化的类不被混淆
102- -keepclassmembers class * implements java.io.Serializable {
103- static final long serialVersionUID;
104- private static final java.io.ObjectStreamField[] serialPersistentFields;
105- !static !transient <fields>;
106- !private <fields>;
107- !private <methods>;
108- private void writeObject(java.io.ObjectOutputStream);
109- private void readObject(java.io.ObjectInputStream);
110- java.lang.Object writeReplace();
111- java.lang.Object readResolve();
112- }
113-
114- # 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
115- -keepclassmembers class * {
116- void *(**On*Event);
117- void *(**On*Listener);
118- }
119-
120- # webView处理,项目中没有使用到webView忽略即可
121- -keepclassmembers class fqcn.of.javascript.interface.for.webview {
122- public *;
123- }
124- -keepclassmembers class * extends android.webkit.webViewClient {
125- public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
126- public boolean *(android.webkit.WebView, java.lang.String);
127- }
128- -keepclassmembers class * extends android.webkit.webViewClient {
129- public void *(android.webkit.webView, jav.lang.String);
130- }
131-
132- #############################################
133- #
134- # 第三方开源库混淆配置
135- #
136- #############################################
137-
138- -dontwarn android.arch.**
139- -keep class android.arch.** { *; }
140- -dontwarn com.alibaba.android.vlayout.**
141- -keep class com.alibaba.android.vlayout.** { *; }
142- -dontwarn android.support.**
143- -keep class android.support.** { *; }
144- -dontwarn androidx.constraintlayout.solver.widgets.**
145- -keep class androidx.constraintlayout.solver.widgets.** { *; }
146- -dontwarn com.blankj.utilcode.**
147- -keep class com.blankj.utilcode.** { *; }
148- -dontwarn com.bigkoo.pickerview.**
149- -keep class com.bigkoo.pickerview.** { *; }
150- -dontwarn com.contrarywind.**
151- -keep class com.contrarywind.** { *; }
152- -dontwarn com.bumptech.glide.**
153- -keep class com.bumptech.glide.** { *; }
154- -dontwarn com.github.chrisbanes.photoview.**
155- -keep class com.github.chrisbanes.photoview.** { *; }
156- -dontwarn com.chad.library.**
157- -keep class com.chad.library.** { *; }
158- -dontwarn com.luck.picture.lib.**
159- -keep class com.luck.picture.lib.** { *; }
160- -dontwarn com.yalantis.ucrop.**
161- -keep class com.yalantis.ucrop.** { *; }
162- -dontwarn com.mcxtzhang.swipemenulib.**
163- -keep class com.mcxtzhang.swipemenulib.** { *; }
164- -dontwarn com.google.gson.**
165- -keep class com.google.gson.** { *; }
166- -dontwarn com.google.zxing.**
167- -keep class com.google.zxing.** { *; }
168- -dontwarn com.just.agentweb.**
169- -keep class com.just.agentweb.** { *; }
170- -dontwarn com.otaliastudios.cameraview.**
171- -keep class com.otaliastudios.cameraview.** { *; }
172- -dontwarn com.qmuiteam.qmui.**
173- -keep class com.qmuiteam.qmui.** { *; }
174- -dontwarn com.scwang.smartrefresh.layout.**
175- -keep class com.scwang.smartrefresh.layout.** { *; }
176- -dontwarn me.imid.swipebacklayout.lib.**
177- -keep class me.imid.swipebacklayout.lib.** { *; }
178- -dontwarn org.reactivestreams.**
179- -keep class org.reactivestreams.** { *; }
180- -dontwarn com.tencent.**
181- -keep class dagger.** { *; }
182- -dontwarn dagger.**
183- -keep class com.tencent.** { *; }
184- -dontwarn com.alipay.**
185- -keep class com.alipay.** { *; }
186- -keep class com.sdwfqin.widget.** { *; }
187- -keep class com.sdwfqin.quicklib.** { *; }
188- -keep class com.sdwfqin.qrscan.** { *; }
189- -keep class com.sdwfqin.paylib.** { *; }
190- -keep class com.sdwfqin.imageloader.** { *; }
191-
192- #============================Retrofit===========================
193- # Retrofit does reflection on generic parameters and InnerClass is required to use Signature.
194- -keepattributes Signature, InnerClasses
195- # Retain service method parameters when optimizing.
196- -keepclassmembers,allowshrinking,allowobfuscation interface * {
197- @retrofit2.http.* <methods>;
198- }
199- # Ignore annotation used for build tooling.
200- -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
201- # Ignore JSR 305 annotations for embedding nullability information.
202- -dontwarn javax.annotation.**
203- # Guarded by a NoClassDefFoundError try/catch and only used when on the classpath.
204- -dontwarn kotlin.Unit
205-
206- #============================EventBus===========================
207- -keepattributes *Annotation*
208- -keepclassmembers class * {
209- @org.greenrobot.eventbus.Subscribe <methods>;
210- }
211- -keep enum org.greenrobot.eventbus.ThreadMode { *; }
212- # Only required if you use AsyncExecutor
213- -keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
214- <init>(java.lang.Throwable);
215- }
216- #============================butterknife===========================
217- -keep public class * implements butterknife.Unbinder { public <init>(**, android.view.View); }
218- -keep class butterknife.*
219- -keepclasseswithmembernames class * { @butterknife.* <methods>; }
220- -keepclasseswithmembernames class * { @butterknife.* <fields>; }
221- #============================RxJava===========================
222- -dontwarn sun.misc.**
223- -keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
224- long producerIndex;
225- long consumerIndex;
226- }
227- -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
228- rx.internal.util.atomic.LinkedQueueNode producerNode;
229- }
230- -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
231- rx.internal.util.atomic.LinkedQueueNode consumerNode;
232- }
233- -dontwarn io.reactivex.**
234- -keep class io.reactivex.**{*;}
235- #============================OkHttp===========================
236- # JSR 305 annotations are for embedding nullability information.
237- -dontwarn javax.annotation.**
238- # A resource is loaded with a relative path so the package of this class must be preserved.
239- -keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
240- # Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java.
241- -dontwarn org.codehaus.mojo.animal_sniffer.*
242- # OkHttp platform used only on JVM and when Conscrypt dependency is available.
243- -dontwarn okhttp3.internal.platform.ConscryptPlatform
244- -dontwarn okhttp3.**
245- -keep class okhttp3.**{*;}
246- #============================OkIo===========================
247- -dontwarn okio.**
248- -keep class okio.**{*;}
72+ }
0 commit comments