Android代碼混淆

1.在project.properties文件加入:proguard.config=proguard.cfg,讓項目啓用混淆機制

2.配置proguard.cfg文件:

# ------------------------------------- 

 # android 原始混淆模板 

 # -------------------------------------      

 

 # ---------------------------------- 

 #  通過指定數量的優化能執行 

 #  -optimizationpasses n 

 # ---------------------------------- 

 -optimizationpasses 5 

   

 # ---------------------------------- 

 #   混淆時不會產生形形色色的類名  

 #   -dontusemixedcaseclassnames 

 # ---------------------------------- 

 #-dontusemixedcaseclassnames 

 

 # ---------------------------------- 

 #      指定不去忽略非公共的庫類 

 #  -dontskipnonpubliclibraryclasses 

 # ---------------------------------- 

 #-dontskipnonpubliclibraryclasses 

   

 # ---------------------------------- 

 #       不預校驗 

 #    -dontpreverify 

 # ---------------------------------- 

 # -dontpreverify     

 

 # ---------------------------------- 

 #      輸出生成信息 

 #       -verbose 

 # ---------------------------------- 

 -verbose 

  

 # ---------------------------------- 

 #        優化選項 

 #   optimizations  {optimization_filter}  

 # ---------------------------------- 

 -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 

 

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

 

 -keepclasseswithmembernames class * { 

     native <methods>; 

 } 

 

 # ----------------- 

 # modify 修改合併 

 # ----------------- 

 -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*(...); 

 }      

 

 -keepclassmembers enum * { 

     public static **[] values(); 

     public static ** valueOf(java.lang.String); 

 } 

   

 -keep class * implements android.os.Parcelable { 

   public static final android.os.Parcelable$Creator *; 

 }      

 

 #-------------------------- 

 # 保護類型   -keepattributes 說明 

 # Exceptions, Signature, Deprecated, SourceFile, SourceDir, LineNumberTable, LocalVariableTable,  

 # LocalVariableTypeTable, Synthetic, EnclosingMethod, RuntimeVisibleAnnotations, RuntimeInvisibleAnnotations,  

 # RuntimeVisibleParameterAnnotations, RuntimeInvisibleParameterAnnotations, and AnnotationDefault 

 # -------------------- 

 -keepattributes ** 

 -libraryjars <java.home>/lib/rt.jar      

 

 # ---------------------- 

 #  不壓縮指定的文件 

 #  -dontshrink 

 # ---------------------- 

 -dontshrink 

   

 # ---------------------- 

 #  不優化指定的文件 

 #  -dontoptimize 

 # ----------------------- 

 -dontoptimize 

   

 # ----------------------- 

 #  不混淆指定的文件 

 #  -dontobfuscate 

 # -----------------------      

 

 # ----- 混淆包路徑 ------- 

 -repackageclasses '' 

 -flattenpackagehierarchy '' 

 -target 1.6 

   

 # -------- 以下是使用了 roboguice-1.1.2.jar 以及 guice-2.0-no_app.jar 功能需要保護的字段及類相關 -------- 

 -keep class com.google.inject.Binder 

 -keepclassmembers class * { 

     @com.google.inject.Inject <init>(...); 

 } 

 

 -keepclassmembers class * { 

     void *(**On*Event);  

 } 

 

 -keepclassmembers class **.R$* { 

     public static <fields>; 

 } 

   

 # ------ 編譯時需要用到的 jar 包 

 -libraryjars D:/dev_rc/android-sdk-windows/add-ons/addon_google_apis_google_inc_11/libs/maps.jar      

 # ------ 保護 谷歌第三方 jar 包,界面特效 ---------- 

 -keep class android.support.v4.** 

 -dontwarn android.support.v4.** 

   

 # ------ 保護百度地址jar包 -------- 

 -keep class com.baidu.mapapi.** { *; } 

 -dontwarn com.baidu.mapapi.**      

# ------ 編譯時需要用到的 jar 包

-libraryjars E:\ZhangZhihua\EclipseAndroid\WorkPlace\HPRT hPrint\libs\GifView.jar

-dontwarn com.ant.liao.GifView.**

-keep class com.ant.liao.GifView.** {*; }

 

-libraryjars E:\ZhangZhihua\EclipseAndroid\WorkPlace\HPRT hPrint\libs\android-support-v4.jar

-dontwarn android.support.v4.**

-keep class android.support.v4.** { *; }

-keep public class * extends android.support.v4.**

-keep public class * extends android.app.Fragment

 

-libraryjars E:\ZhangZhihua\EclipseAndroid\WorkPlace\HPRT hPrint\libs\poi-3.7-20101029.jar

-dontwarn poi-3.7-20101029.**

-keep class poi-3.7-20101029.** { *; }

-keep public class * extends poi-3.7-20101029.**

 

-libraryjars E:\ZhangZhihua\EclipseAndroid\WorkPlace\HPRT hPrint\libs\poi-scratchpad-3.7-20101029.jar

-dontwarn poi-scratchpad-3.7-20101029.**

-keep class poi-scratchpad-3.7-20101029.** { *; }

-keep public class * extends poi-scratchpad-3.7-20101029.**

 

# --- 打包時忽略以下類的警告 --

-dontwarn java.awt.**

-keep class java.awt.** { *; }

 

-dontwarn javax.imageio.**

-keep class javax.imageio.** { *; }

 

-dontwarn java.rmi.**

-keep class java.rmi.** { *; }

 

-dontwarn javax.swing.**

-keep class javax.swing.** { *; }

 

-dontwarn org.apache.commons.logging.**

-keep class org.apache.commons.logging.** { *; }

 

 # ---------保護所有實體中的字段名稱---------- 

 -keepclassmembers class * implements java.io.Serializable { 

     <fields>; 

 }      

 

 # --------- 保護類中的所有方法名 ------------ 

 -keepclassmembers class * { 

     public <methods>; 

 }

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章