Android混淆设置
首先将位于tools/proguard/
目录下的混淆设置复制到proguard-rules.pro
文件中
-
–optimizations !code/simplification/arithmetic,!field/*,!class/merging/* # 混淆时所采用的算法
-
–optimizationpasses 5 # 指定代码的压缩级别
-
–allowaccessmodification # 允许访问并修改有修饰符的类和类的成员
-
–dontpreverify # 混淆时不做预校验
-
-
# The remainder of this file is identical to the non-optimized version
-
# of the Proguard configuration file (except that the other file has
-
# flags to turn off optimization).
-
-
–dontusemixedcaseclassnames # 是否使用大小写混合
-
–dontskipnonpubliclibraryclasses # 是否混淆第三方jar
-
–verbose # 混淆时记录日志
-
-
–keepattributes *Annotation* # 保留任何可选属性
-
–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>(…);
-
}
通常不需混淆的Android类
-
-keep public class * extends android.app.Fragment
-
-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.preference.Preference
-
-keep public class * extends android.content.ContentProvider
-
-keep public class * extends android.support.v4.**
-
-keep public class * extends android.support.annotation.**
-
-keep public class * extends android.support.v7.**
Butter Knife
-
–keep class butterknife.** { *; }
-
–dontwarn butterknife.internal.**
-
–keep class **$$ViewBinder { *; }
-
–keepclasseswithmembernames class * {
-
.* <fields>;
-
}
-
–keepclasseswithmembernames class * {
-
.* <methods>;
-
}
Retrofit
-
–dontwarn retrofit2.**
-
–keep class retrofit2.** { *; }
-
–keepattributes Signature
-
–keepattributes Exceptions
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
-
–keepattributes Signature-keepattributes *Annotation*
-
–keep class sun.misc.Unsafe { *; }
-
–keep class com.google.gson.stream.** { *; }
-
# Application classes that will be serialized/deserialized over Gson 下面替换成自己的实体类
-
–keep class com.example.bean.** { *; }
OkHttp3
-
–dontwarn com.squareup.okhttp3.**
-
–keep class com.squareup.okhttp3.** { *;}
-
–dontwarn okio.**
Glide
-
-keep public class * implements com.bumptech.glide.module.GlideModule
-
–keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
-
**[] $VALUES;
-
public *;
-
}
友盟统计
-
-keepclassmembers class * {
-
public <init> (org.json.JSONObject);
-
}
-
-keep public class [您的应用包名].R$*{
-
public static final int *;
-
}
-
-keepclassmembers enum * {
-
public static **[] values(); public static ** valueOf(java.lang.String);
-
}