Android--混淆

来源:互联网 发布:索尼手机无法连接网络 编辑:程序博客网 时间:2024/05/29 12:45
-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



0 0