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>;
}
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>;
}
相关文章推荐
- Eclipse+ADT对android apk 进行代码混淆(proguard)
- Android 混淆代码总结
- Android 混淆代码总结
- Android 混淆代码总结
- ANDROID混淆部分代码
- android ProGuard 代码混淆实现
- Android 代码混淆总结
- Android常用框架混淆代码
- android代码混淆笔记
- android代码签名和混淆打包
- Android gradle proguard 代码混淆详解
- android 代码 混淆- 原来如此简单
- android混淆代码bug跟踪 推荐
- android代码混淆发布版本时关闭log输出
- Android Studio的代码混淆
- Android反编译与加密(代码混淆)
- Android 4.0以后代码混淆及签名
- Android代码混淆防止反编译APK获取源码
- 如何混淆Android项目代码(ProGuard),防止反编译
- 关于Android Stuido 代码混淆打包签名后,高德地图定位出不来