之前对项目混淆一直了解不是很透,趁着打包正式项目的时候有特意的去了解了一番,做些记录,备忘!

-optimizationpasses 5

-dontusemixedcaseclassnames

-dontskipnonpubliclibraryclasses

-dontpreverify

-verbose

-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

-keepattributes Signature

-keep class android.support.v4.** { *; }

-ignorewarnings

-dontwarn android.support.**

-keepattributes EnclosingMetho

-keepclassmembers class * {

public (org.json.JSONObject);

}

-assumenosideeffects class android.util.Log {

public static *** d(...);

public static *** v(...);

public static *** i(...);

public static *** w(...);

public static *** e(...);

}

-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 com.android.vending.licensing.ILicensingService # 保持哪些类不被混淆

# 过滤R文件的混淆:

-keep class **.R$* {*;}

# 所有方法不进行混淆

-keep public abstract interface com.huawei.android.airsharing.listener{

public protected ;

}

-keep public abstract interface com.huawei.android.airsharing.api{

public protected ;

}

-keepclasseswithmembernames class * { # 保持 native 方法不被混淆

native ;

}

-keepclasseswithmembers class * { # 保持自定义控件类不被混淆

public (android.content.Context, android.util.AttributeSet);

}

-keepclasseswithmembers class * {

public (android.content.Context, android.util.AttributeSet, int); # 保持自定义控件类不被混淆

}

-keepclassmembers class * extends android.app.Activity { # 保持自定义控件类不被混淆

public void *(android.view.View);

}

-keepclassmembers enum * { # 保持枚举 enum 类不被混淆

public static **[] values();

public static ** valueOf(java.lang.String);

}

-keep class * implements android.os.Parcelable { # 保持 Parcelable 不被混淆

public static final android.os.Parcelable$Creator *;

}

#gson

-keep class **.bean.** { *; }

#webview

-keepclassmembers class fqcn.of.javascript.interface.for.webview {

public *;

}

#databinding

-dontwarn android.databinding.**

-keep class android.databinding.** { *; }

# OkHttp3

-dontwarn com.squareup.okhttp3.**

-keep class com.squareup.okhttp3.** { *;}

-dontwarn okio.**

# Okio

-dontwarn com.squareup.**

-dontwarn okio.**

-keep public class org.codehaus.* { *; }

-keep public class java.nio.* { *; }

# retrofit

-dontwarn okio.**

-dontwarn javax.annotation.**

#支付

-keep class com.alipay.android.app.IAlixPay{*;}

-keep class com.alipay.android.app.IAlixPay$Stub{*;}

-keep class com.alipay.android.app.IRemoteServiceCallback{*;}

-keep class com.alipay.android.app.IRemoteServiceCallback$Stub{*;}

-keep class com.alipay.sdk.app.PayTask{ public *;}

-keep class com.alipay.sdk.app.AuthTask{ public *;}

#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;

}

-dontnote rx.internal.util.PlatformDependent

#eventBus

-keepattributes *Annotation*

-keepclassmembers class ** {

@org.greenrobot.eventbus.Subscribe ;

}

-keep enum org.greenrobot.eventbus.ThreadMode { *; }

# Only required if you use AsyncExecutor

-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {

(Java.lang.Throwable);

}

#项目本身

#-keep class com.tecsun.mobileintegration.** {*;}

#-keep public class com.tecsun.base.** { *; }

#-keep public class com.tecsun.tsb.network.** { *; }

#-keep public class com.andview.refreshview.** { *; }

参考文章

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐