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

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