-ignorewarnings # 抑制警告 #代码混淆压缩比, 在0~7之间, 默认为5, 一般不做修改 -optimizationpasses 5 #混合时不使用大小写混合, 混合后的类名为小写 -dontusemixedcaseclassnames #指定不去忽略非公共库的类 -dontskipnonpubliclibraryclasses #这句话能够使我们的项目混淆后产生映射文件 #包含有类名->混淆后类名的映射关系 -verbose #指定不去忽略非公共库的类 -dontskipnonpubliclibraryclassmembers #不做预校验, preverify是proguard的四个步骤之一, Android不需要preverify, 去掉这一步能够加快混淆速度。 -dontpreverify #保留Annotation不混淆 -keepattributes *Annotation*,InnerClasses #避免混淆泛型 -keepattributes Signature #抛出异常时保留代码行号 -keepattributes SourceFile,LineNumberTable #指定混淆是采用的算法, 后面的参数是一个过滤器 #这个过滤器是谷歌推荐的算法, 一般不做更改 -optimizations !code/simplification/cast,!field/*,!class/merging/* # 存放在app\build\outputs\mapping\release中 -verbose # 混淆前后的映射 -printmapping mapping.txt # apk 包内所有 class 的内部结构 -dump class_files.txt # 未混淆的类和成员 -printseeds seeds.txt # 列出从 apk 中删除的代码 -printusage unused.txt # 包名不使用大小写混合 aA Aa -dontusemixedcaseclassnames # 不混淆第三方引用的库 -dontskipnonpubliclibraryclasses # 不做预校验 -dontpreverify #保留我们使用的四大组件, 自定义的Application等等这些类不被混淆 #因为这些子类都有可能被外部调用 -keep public class * extends android.app.Activity -keep public class * extends android.app.Appliction -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 com.** {*;} -keep class cn.sharesdk.onekeyshare.** {*;} -keep class www.zhouyan.project.bus.RxCustomerSupplier {*;} -keep class www.zhouyan.project.retrofit.GlobalResponse {*;} -keep class www.zhouyan.project.view.modle.** {*;} -keep class com.squareup.timessquare.**{*;} #保留support下的所有类及其内部类 -keep class android.support.** {*;} #保留R下面的资源 -keep class **.R$* {*;} #保留本地native方法不被混淆 -keepclasseswithmembernames class * { native <methods>; } #保留在Activity中的方法参数是view的方法, #这样以来我们在layout中写的onClick就不会被影响 -keepclassmembers class * extends android.app.Activity{ public void *(android.view.View); } #保留枚举类不被混淆 -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } #保留我们自定义控件(继承自View)不被混淆 -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); } #保留Parcelable序列化类不被混淆 -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } #保留Serializable序列化的类不被混淆 -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(); } #对于带有回调函数的onXXEvent的, 不能被混淆 -keepclassmembers class * { void *(**On*Event); } -keep class com.** {*;} #如果有引用v4包可以添加下面这行 -keep public class * extends android.support.v4.app.Fragment #如果引用了v4或者v7包,percent -dontwarn android.support.v4 -dontwarn android.support.v7 -dontwarn android.support.percent #bugly -dontwarn com.tencent.bugly.** -keep public class com.tencent.bugly.**{*;} # OkHttp3 -dontwarn com.squareup.okhttp3.** -keep class com.squareup.okhttp3.* { *;} -keep class okhttp3.* { *;} -keep class okio.* { *;} -dontwarn sun.security.** -keep class sun.security.* { *;} -dontwarn okio.** -dontwarn okhttp3.** # Retrofit2 -dontwarn retrofit2.** -keep class retrofit2.* { *; } -keepattributes Signature -keepattributes Exceptions -dontwarn org.robovm.** -keep class org.robovm.* { *; } # RxJava RxAndroid -dontwarn rx.** -keep class rx.* { *; } -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 #如果用用到Gson解析包的, 直接添加下面这几行就能成功混淆, 不然会报错。 -keepattributes Signature -keep class sun.misc.Unsafe { *; } -keep class com.google.gson.examples.android.model.* { *; } #glide -keep public class * implements com.bumptech.glide.module.GlideModule -keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** { **[] $VALUES; public *; } #butterknife -keep class butterknife.** { *; } -dontwarn butterknife.internal.** -keep class **ViewBinder{ *; } -keep class **OnClick{ *; } -keepclasseswithmembernames class * { @butterknife.* <fields>; } -keepclasseswithmembernames class * { @butterknife.* <methods>; } #sharesdk -keep class cn.sharesdk.**{*;} -keep class com.sina.**{*;} -keep class **.R$* {*;} -keep class **.R{*;} -dontwarn cn.sharesdk.** -dontwarn **.R$* # EventBus3.0 -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); } # GreenDao -keepclassmembers class * extends org.greenrobot.greendao.AbstractDao { public static java.lang.String TABLENAME; } -keep class **$Properties -dontwarn org.greenrobot.greendao.database.** #zxing -dontwarn com.google.zxing.** -keep class com.google.zxing.**{*;} #-keep com.igexin.** -keep class com.igexin.**{*;}
Android 混淆
最新推荐文章于 2021-12-29 20:27:42 发布