Android--混淆
2015-07-17 10:36
337 查看
-optimizationpasses 5 # 指定代码的压缩级别 默认为5
-dontusemixedcaseclassnames # 是否使用大小写混合 (即小写)
-dontskipnonpubliclibraryclasses # 是否混淆第三方jar (否)
-dontpreverify # 混淆时是否做预校验 (否)
-verbose # 混淆时是否记录日志
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* # 混淆时所采用的算法(谷歌)
-keepattributes *Annotation* #假如项目中有用到注解 应用加入
-keepattributes Signature
#声明第三方包
-libraryjars libs/alipaysdk.jar
-libraryjars libs/alipaysecsdk.jar
-libraryjars libs/alipayutdid.jar
-libraryjars libs/android_api_1.1_forsdk.jar
-libraryjars libs/android-support-v4.jar
-libraryjars libs/BaiduLBS_Android.jar
-libraryjars libs/galaxy_mini.jar
-libraryjars libs/jackson-core-asl-1.8.9.jar
-libraryjars libs/jackson-mapper-asl-1.8.9.jar
-libraryjars libs/jpush-sdk-release1.7.3.jar
-libraryjars libs/simple-xml-2.6.2.jar
-libraryjars libs/spring_android_rest_template_1.0.0.1_release.jar
-libraryjars libs/umeng-analytics-v5.5.3.jar
#API里面的类,如果混淆编译不通过
-keep class com.baidu.** { *; }
-keep class vi.com.gdi.bgl.android.**{*;}
-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.ILicensingServices
#保留实体类
-keep class cn.com.lmbj.car.entity.** { *; }
-keep class cn.com.lmbj.car.util.**{ *; }
-keep class cn.com.lmbj.car.base.**{ *; }
-keep class cn.com.lmbj.car.net.**{ *; }
-dontwarn android.support.v4.**
-keep class android.support.v4.** { *; }
-dontwarn com.sinovoice.hcicloudsdk.**
-keep class com.sinovoice.hcicloudsdk.**{ *;}
-dontwarn org.w3c.dom.**
-keep class org.w3c.dom.**{ *;}
-dontwarn org.joda.time.**
-keep class org.joda.time.**{ *;}
-dontwarn javax.xml.stream.**
-keep class javax.xml.stream.**{ *;}
-dontwarn org.springframework.**
-keep class org.springframework.**{ *;}
-dontwarn com.google.gson.**
-keep class com.google.gson.**{ *;}
-keep class org.json.** {*;}
-keep public class * extends android.support.v4.**
-keep public class * extends android.support.v4.app.Fragment
-keep public class * extends android.support.v4.app.FragmentActivity
-keep public class android.support.v4.accessibilityservice.** { *; }
-keep public class android.support.v4.app.** { *; }
-keep public class android.support.v4.os.** { *; }
-keep public class android.support.v4.view.** { *; }
-keep public class android.support.v4.widget.** { *; }
# 保持 native 方法不被混淆
-keepclasseswithmembernames class * {
native <methods>;
}
# 保持自定义控件类不被混淆
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
# 保持枚举 enum 类不被混淆
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keepclassmembers class * extends android.content.Context {
public void *(android.view.View);
public void *(android.view.MenuItem);
}
#保留View子类读取XML的构造方法:
-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*(...);
}
# 保持 Parcelable 不被混淆
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
-keepclasseswithmembers class * {
public <init>(android.content.Context);
}
#保持R文件
-keep public class cn.com.lmbj.car.R$*{
public static final int *;
}
#去除调试日志,将所有Log.d()改为Log.i():
-assumenosideeffects class android.util.Log{
public static *** d(...);
public static *** i(...);
public static *** e(...);
}
最后在project.properties里面加上proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
-dontusemixedcaseclassnames # 是否使用大小写混合 (即小写)
-dontskipnonpubliclibraryclasses # 是否混淆第三方jar (否)
-dontpreverify # 混淆时是否做预校验 (否)
-verbose # 混淆时是否记录日志
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* # 混淆时所采用的算法(谷歌)
-keepattributes *Annotation* #假如项目中有用到注解 应用加入
-keepattributes Signature
#声明第三方包
-libraryjars libs/alipaysdk.jar
-libraryjars libs/alipaysecsdk.jar
-libraryjars libs/alipayutdid.jar
-libraryjars libs/android_api_1.1_forsdk.jar
-libraryjars libs/android-support-v4.jar
-libraryjars libs/BaiduLBS_Android.jar
-libraryjars libs/galaxy_mini.jar
-libraryjars libs/jackson-core-asl-1.8.9.jar
-libraryjars libs/jackson-mapper-asl-1.8.9.jar
-libraryjars libs/jpush-sdk-release1.7.3.jar
-libraryjars libs/simple-xml-2.6.2.jar
-libraryjars libs/spring_android_rest_template_1.0.0.1_release.jar
-libraryjars libs/umeng-analytics-v5.5.3.jar
#API里面的类,如果混淆编译不通过
-keep class com.baidu.** { *; }
-keep class vi.com.gdi.bgl.android.**{*;}
-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.ILicensingServices
#保留实体类
-keep class cn.com.lmbj.car.entity.** { *; }
-keep class cn.com.lmbj.car.util.**{ *; }
-keep class cn.com.lmbj.car.base.**{ *; }
-keep class cn.com.lmbj.car.net.**{ *; }
-dontwarn android.support.v4.**
-keep class android.support.v4.** { *; }
-dontwarn com.sinovoice.hcicloudsdk.**
-keep class com.sinovoice.hcicloudsdk.**{ *;}
-dontwarn org.w3c.dom.**
-keep class org.w3c.dom.**{ *;}
-dontwarn org.joda.time.**
-keep class org.joda.time.**{ *;}
-dontwarn javax.xml.stream.**
-keep class javax.xml.stream.**{ *;}
-dontwarn org.springframework.**
-keep class org.springframework.**{ *;}
-dontwarn com.google.gson.**
-keep class com.google.gson.**{ *;}
-keep class org.json.** {*;}
-keep public class * extends android.support.v4.**
-keep public class * extends android.support.v4.app.Fragment
-keep public class * extends android.support.v4.app.FragmentActivity
-keep public class android.support.v4.accessibilityservice.** { *; }
-keep public class android.support.v4.app.** { *; }
-keep public class android.support.v4.os.** { *; }
-keep public class android.support.v4.view.** { *; }
-keep public class android.support.v4.widget.** { *; }
# 保持 native 方法不被混淆
-keepclasseswithmembernames class * {
native <methods>;
}
# 保持自定义控件类不被混淆
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
# 保持枚举 enum 类不被混淆
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keepclassmembers class * extends android.content.Context {
public void *(android.view.View);
public void *(android.view.MenuItem);
}
#保留View子类读取XML的构造方法:
-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*(...);
}
# 保持 Parcelable 不被混淆
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
-keepclasseswithmembers class * {
public <init>(android.content.Context);
}
#保持R文件
-keep public class cn.com.lmbj.car.R$*{
public static final int *;
}
#去除调试日志,将所有Log.d()改为Log.i():
-assumenosideeffects class android.util.Log{
public static *** d(...);
public static *** i(...);
public static *** e(...);
}
最后在project.properties里面加上proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
相关文章推荐
- Android问题集锦
- Android ViewDragHelper完全解析 自定义ViewGroup神器
- Android onTouch事件与手势操作
- Android中listView分组显示内容和下拉刷新
- android 获取屏幕宽高 & 控件宽高
- Android4.4 Launcher3分析之IconCache
- Android运行时ART简要介绍和学习计划
- Android应用如何监听自己是否被卸载及卸载反馈功能的实现(第二版)
- Android应用资源系列之属性(Attribute)资源
- Android报错记录2
- Android APK 手动命令编译、打包、签名步骤
- android 自定义控件 总结
- Android应用如何监听自己是否被卸载及卸载反馈功能的实现
- Android时间戳和日期字符串互换
- android组件Service控制后台音乐播放
- TabActivity通过Intent向Child Activity传值
- Android 对话框
- Android中的长度单位详解(dp、sp、px、in、pt、mm)
- 类似IOS的滑动返回上一级,SwipeBackLayout-android的滑动返回类库
- android 中 系统日期时间的获取