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-----
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM