您的位置:首页 > 移动开发 > Android开发

Android代码混淆

2014-01-21 15:58 162 查看
1.在project.properties文件加入:proguard.config=proguard.cfg,让项目启用混淆机制

2.配置proguard.cfg文件:

# -------------------------------------

# android 原始混淆模板

# -------------------------------------

# ----------------------------------

# 通过指定数量的优化能执行

# -optimizationpasses n

# ----------------------------------

-optimizationpasses 5

# ----------------------------------

# 混淆时不会产生形形色色的类名

# -dontusemixedcaseclassnames

# ----------------------------------

#-dontusemixedcaseclassnames

# ----------------------------------

# 指定不去忽略非公共的库类

# -dontskipnonpubliclibraryclasses

# ----------------------------------

#-dontskipnonpubliclibraryclasses

# ----------------------------------

# 不预校验

# -dontpreverify

# ----------------------------------

# -dontpreverify

# ----------------------------------

# 输出生成信息

# -verbose

# ----------------------------------

-verbose

# ----------------------------------

# 优化选项

# optimizations {optimization_filter}

# ----------------------------------

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

-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

-keepclasseswithmembernames class * {

native <methods>;

}

# -----------------

# modify 修改合并

# -----------------

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

}

-keepclassmembers enum * {

public static **[] values();

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

}

-keep class * implements android.os.Parcelable {

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

}

#--------------------------

# 保护类型 -keepattributes 说明

# Exceptions, Signature, Deprecated, SourceFile, SourceDir, LineNumberTable, LocalVariableTable,

# LocalVariableTypeTable, Synthetic, EnclosingMethod, RuntimeVisibleAnnotations, RuntimeInvisibleAnnotations,

# RuntimeVisibleParameterAnnotations, RuntimeInvisibleParameterAnnotations, and AnnotationDefault

# --------------------

-keepattributes **

-libraryjars <java.home>/lib/rt.jar

# ----------------------

# 不压缩指定的文件

# -dontshrink

# ----------------------

-dontshrink

# ----------------------

# 不优化指定的文件

# -dontoptimize

# -----------------------

-dontoptimize

# -----------------------

# 不混淆指定的文件

# -dontobfuscate

# -----------------------

# ----- 混淆包路径 -------

-repackageclasses ''

-flattenpackagehierarchy ''

-target 1.6

# -------- 以下是使用了 roboguice-1.1.2.jar 以及 guice-2.0-no_app.jar 功能需要保护的字段及类相关 --------

-keep class com.google.inject.Binder

-keepclassmembers class * {

@com.google.inject.Inject <init>(...);

}

-keepclassmembers class * {

void *(**On*Event);

}

-keepclassmembers class **.R$* {

public static <fields>;

}

# ------ 编译时需要用到的 jar 包

-libraryjars D:/dev_rc/android-sdk-windows/add-ons/addon_google_apis_google_inc_11/libs/maps.jar

# ------ 保护 谷歌第三方 jar 包,界面特效 ----------

-keep class android.support.v4.**

-dontwarn android.support.v4.**

# ------ 保护百度地址jar包 --------

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

-dontwarn com.baidu.mapapi.**

# ------ 编译时需要用到的 jar 包

-libraryjars E:\ZhangZhihua\EclipseAndroid\WorkPlace\HPRT hPrint\libs\GifView.jar

-dontwarn com.ant.liao.GifView.**

-keep class com.ant.liao.GifView.** {*; }

-libraryjars E:\ZhangZhihua\EclipseAndroid\WorkPlace\HPRT hPrint\libs\android-support-v4.jar

-dontwarn android.support.v4.**

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

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

-keep public class * extends android.app.Fragment

-libraryjars E:\ZhangZhihua\EclipseAndroid\WorkPlace\HPRT hPrint\libs\poi-3.7-20101029.jar

-dontwarn
poi-3.7-20101029.**

-keep class poi-3.7-20101029.** { *; }

-keep public class * extends
poi-3.7-20101029.**

-libraryjars E:\ZhangZhihua\EclipseAndroid\WorkPlace\HPRT hPrint\libs\poi-scratchpad-3.7-20101029.jar

-dontwarn
poi-scratchpad-3.7-20101029.**

-keep class poi-scratchpad-3.7-20101029.** { *; }

-keep public class * extends
poi-scratchpad-3.7-20101029.**

# --- 打包时忽略以下类的警告 --

-dontwarn java.awt.**

-keep class java.awt.** { *; }

-dontwarn javax.imageio.**

-keep class javax.imageio.** { *; }

-dontwarn java.rmi.**

-keep class java.rmi.** { *; }

-dontwarn javax.swing.**

-keep class javax.swing.** { *; }

-dontwarn org.apache.commons.logging.**

-keep class org.apache.commons.logging.** { *; }

# ---------保护所有实体中的字段名称----------

-keepclassmembers class * implements java.io.Serializable {

<fields>;

}

# --------- 保护类中的所有方法名 ------------

-keepclassmembers class * {

public <methods>;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: