代码混淆规则配置文件:proguard-rules.pro

如果我们想在打包的时候进行代码混淆,就需要在proguard-rules.pro中配置代码混淆规则.

常用的代码混淆规则:

# 在这里添加项目的代码混淆规则

# 混淆规则请参考:http://proguard.sourceforge.net/index.html#manual/usage.html

##################### 一般使用默认 #####################

# 不使用大小写混合类名,混淆后的类名为小写

-dontusemixedcaseclassnames

# 混淆第三方库

-dontskipnonpubliclibraryclasses

# 混淆时记录日志,有助于排查错误

-verbose

# 代码混淆使用的算法.

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

# 代码混淆压缩比,值在0-7之间,默认为5.

-optimizationpasses 5

# 优化时允许访问并修改有修饰符的类和类的成员

-allowaccessmodification

##################### 不混淆 #####################

# 这些类不混淆

-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.BackupAgent

-keep public class * extends android.preference.Preference

-keep public class * extends android.support.v4.app.Fragment

-keep public class * extends android.support.v4.app.DialogFragment

-keep public class * extends com.actionbarsherlock.app.SherlockListFragment

-keep public class * extends com.actionbarsherlock.app.SherlockFragment

-keep public class * extends com.actionbarsherlock.app.SherlockFragmentActivity

-keep public class * extends android.app.Fragment

-keep public class com.android.vending.licensing.ILicensingService

# Native方法不混淆

-keepclasseswithmembernames class * {

native <methods>;

}

# 自定义组件不混淆

-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*(...);

}

# 自定义控件类和类的成员不混淆(所有指定的类和类成员是要存在)

-keepclasseswithmembers class * {

public <init>(android.content.Context, android.util.AttributeSet);

}

# 同上

-keepclasseswithmembers class * {

public <init>(android.content.Context, android.util.AttributeSet, int);

}

# 自定义控件类不混淆

-keepclassmembers class * extends android.app.Activity {

public void *(android.view.View);

}

# 枚举类不被混淆

-keepclassmembers enum * {

public static **[] values();

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

}

# android.os.Parcelable的子类不混淆

-keep class * implements android.os.Parcelable {

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

}

# 资源类不混淆

-keepclassmembers class **.R$* {

public static <fields>;

}

##################### 第三方库不混淆 #####################

# 保留第三方库android.support.v4不被混淆

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

-keep interface android.support.v4.app.** { *; }

# 打包时忽略警告

-dontwarn android.support.**

# 如果你的项目中使用了第三方库,需要参考官方文档的说明来进行混淆配置

# 例如: 百度地图的配置 参考:http://developer.baidu.com/map/sdkandev-question.htm

#-keep class com.baidu.** { *; }

#-keep class vi.com.gdi.bgl.android.**{*;}

# 例如: 支付宝的混淆 参考: https://doc.open.alipay.com/doc2/detail.htm?treeId=59&articleId=103683&docType=1

#-libraryjars libs/alipaySDK-20150602.jar

#

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

混淆规则配置文件配置好以后,需要在build.gradle中开启混淆

results matching ""

    No results matching ""