• Android混淆配置文件规范


    #打开project.properties文件中的proguard.config。
    
    -optimizationpasses 5                                                # 指定代码的压缩级别
    -dontusemixedcaseclassnames                                          # 是否使用大小写混合
    -dontskipnonpubliclibraryclasses                                     # 是否混淆第三方jar
    -dontpreverify                                                       # 混淆时是否做预校验
    -verbose                                                             # 混淆时是否记录日志
    -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*      # 混淆时所采用的算法
    
    #保持一些基本的不会混淆
    -keep public class * extends android.app.Activity            
    -keep public class * extends android.app.Fragment                     
    -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 方法不被混淆
        native <methods>;
    }
    -keepclasseswithmembers class * {                          # 保持自定义控件类不被混淆
        public <init>(android.content.Context, android.util.AttributeSet);   
    }
    -keepclasseswithmembers class * {                          # 保持自定义控件类不被混淆
        public <init>(android.content.Context, android.util.AttributeSet, int);
    }
    -keepclassmembers class * extends android.app.Activity {    # 保持自定义控件类不被混淆
        public void *(android.view.View);
    }
    -keepclassmembers enum * {                                   # 保持枚举 enum 类不被混淆
        public static **[] values();
        public static ** valueOf(java.lang.String);
    }
    -keep class * implements android.os.Parcelable {             # 保持 Parcelable 不被混淆
        public static final android.os.Parcelable$Creator *;
    }
    
    #自己写的自定义控件不要混淆
    -keep public class * extends android.view.View { *; }
    #adapter也不能混淆
    -keep public class * extends android.widget.BaseAdapter { *; }
    #如果你使用了CusorAdapter,添加下面这行
    #-keep public class * extends android.widget.CusorAdapter{ *; }
    #数据模型不要混淆
    -keepnames class * implements java.io.Serializable     
    #如果项目中用到了反射,则涉及到反射的类不能混淆(比如,transforms包下的所有类不混淆)
    -keep class com.example.newsdemo.app.banner.transforms.**{ *; } 
    
    #第三方类库(有多少加多少)
    -libraryjars libs/alipaySDK-20150602.jar
    -libraryjars libs/android-viewbadger.jar
    -libraryjars libs/xUtils-2.6.14.jar
    #保持第三方库,有的需要-dontwarn,Android Private Librarys里面的全部keep,keep的时候需要注意class,有的还需要dontwarn。
    -keep class android.** { *; }
    -keep class com.umeng.** { *; }
    -keep class com.tencent.** { *; }
    -dontwarn com.tencent.**
    -keep class com.baidu.** { *; }
    -dontwarn  com.baidu.**
    
    
    ##---------------Begin:  Gson 的配置 ----------   
    -keepattributes Signature   
    -keepattributes *Annotation*    
    # Gson specific classes  
    -keep class sun.misc.Unsafe { *; }  
    #-keep class com.google.gson.stream.** { *; }   
    # Application classes that will be serialized/deserialized over Gson  
    -keep class com.google.gson.examples.android.model.** { *; }  
    #注意:::所有gson涉及的数据bean与model,serialized/deserialized
    
    -keep class cn.shangyu.gdxzPatient.bean.** { *; } 
    
    ##---------------End: Gson 的配置 ---------- 
    
    ##xutils包下所有类不要混淆,包括类里面的方法-----begin-----
    -keep class com.lidroid.** { *; } 
    -keep class * extends java.lang.annotation.Annotation { *; }
    -keepclasseswithmembers class *{
        public *;
    }
    ##xutils包下所有类不要混淆,包括类里面的方法-----end-----
    
    ##删除log代码-----begin-----
    -assumenosideeffects class android.util.Log {
        public static boolean isLoggable(java.lang.String, int);
        public static int v(...);
        public static int i(...);
        public static int w(...);
        public static int d(...);
        public static int e(...);
       } 
    ##删除log代码-----end-----
        
  • 相关阅读:
    11gR2 RAC vip和network资源的依赖性与频繁failover
    Unix上如何查看文件名开头为"+asm"的TRACE文件
    Oracle Partitioning分区技术历年新特性回顾
    Script:列出本会话的细节信息
    UtilSession failed: Prerequisite check "CheckSystemSpace" space(22288172004) is not available
    Oracle中比对2张表之间数据是否一致的几种方法
    [转]asp.net导出Excel/Csv格式数据最优方案(C#)
    C#获取存储过程返回值和输出参数值
    oracle 存储过程的基本语法
    C#调用存储过程的几个方法
  • 原文地址:https://www.cnblogs.com/wangshuaiandroid/p/5339922.html
Copyright © 2020-2023  润新知