android 代码混淆示例

来源:互联网 发布:linux安装jdk1.8 编辑:程序博客网 时间:2024/06/05 08:01

# 指定代码的压缩级别
-optimizationpasses 5                                                          
-dontusemixedcaseclassnames    
# 是否混淆第三方jar                                                  
-dontskipnonpubliclibraryclasses                                               
-dontpreverify                                                                  
-keepattributes SourceFile,LineNumberTable                                         
-verbose                                                                        
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*        


-libraryjars libs/httpmime-4.1.3.jar
-libraryjars libs/libammsdk.jar
-libraryjars libs/fastjson-1.1.34.android.jar
-libraryjars libs/commons-lang.jar
-libraryjars libs/weibosdkcore.jar


# webview + js
# keep 使用 webview 的类
-keepclassmembers class com.goldnet.mobile.activity.InfoDetailActivity {
   public *;
}
# keep 使用 webview 的类的所有的内部类
-keepclassmembers   class com.goldnet.mobile.activity.InfoDetailActivity$*{
    *;
}


# 保持哪些类不被混淆
-keep class android.** {*; }
-keep public class * extends android.view  
-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.pm                                
-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             


#ACRA specifics
# we need line numbers in our stack traces otherwise they are pretty useless
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable


# ACRA needs "annotations" so add this... 
-keepattributes *Annotation*


# 保持 native 方法不被混淆
-keepclasseswithmembernames class * {                                        
    native <methods>;
}


# 保持自定义控件类不被混淆
-keepclasseswithmembers class * {                                               
    public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet, int);     
}


-keepclasseswithmembers class * {
    void onClick*(...);
}
-keepclasseswithmembers class * {
    *** *Callback(...);
}


# keep setters in Views so that animations can still work.
# see http://proguard.sourceforge.net/manual/examples.html#beans
-keepclassmembers public class * extends android.view.View {
   void set*(***);
   *** get*();
}


# 保持自定义控件类不被混淆
-keepclassmembers class * extends android.app.Activity {                       
   public void *(android.view.View);
}


# 保持枚举 enum 类不被混淆
-keepclassmembers enum * {                                                     
    public static **[] values();
    public static ** valueOf(java.lang.String);
}


# 保持 Parcelable 不被混淆
-keep class * implements android.os.Parcelable {                             
  public static final android.os.Parcelable$Creator *;
}


-keepclassmembers class **.R$* {
    public static <fields>;
}


# http client
-keep class org.apache.http.** {*; }


# 微信
-keep class com.tencent.mm.sdk.openapi.WXMediaMessage {*;}
-keep class com.tencent.mm.sdk.openapi.** implements com.tencent.mm.sdk.openapi.WXMediaMessage$IMediaObject {*;}
 
# fastjson
-keep class com.alibaba.fastjson.**{*;}
# keep 所有的 javabean
-keep class com.goldnet.mobile.entity.**{*;}   
# keep 泛型
-keepattributes Signature
  
#-keep public class * implements java.io.Serializable {  
#    public *;  
#}  
  
#-keepclassmembers class * implements java.io.Serializable {  
#    static final long serialVersionUID;  
#    private static final java.io.ObjectStreamField[] serialPersistentFields;  
#    private void writeObject(java.io.ObjectOutputStream);  
#    private void readObject(java.io.ObjectInputStream);  
#    java.lang.Object writeReplace();  
#    java.lang.Object readResolve();  
#} 


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


# 新浪微博
-keep class com.sina.**{*;}


#######
# 其它第三方库
#######
-dontwarn org.bouncycastle.**
-keep class org.bouncycastle.**{*;}


-dontwarn android-async-http-1.4.4.jar.**
-keep class android-async-http-1.4.4.jar.**{*;}


-dontwarn Decoder.**
-keep class Decoder.**{*;}


# volley
-dontwarn com.android.volley.jar.**
-keep class com.android.volley.**{*;}
 
# actionbarsherlock
-dontwarn com.actionbarsherlock.**
-keep class com.actionbarsherlock.**{*;}


# slidingmenu
-dontwarn com.jeremyfeinstein.slidingmenu.lib.**
-keep class com.jeremyfeinstein.slidingmenu.lib.**{*;}


-dontwarn com.cairh.app.sjkh.**

-keep class com.cairh.app.sjkh.**{*;}


package com.wissen.testApp;public class MyUsers {    public static final String AUTHORITY  = “com.wissen.MyContentProvider”;    // BaseColumn类中已经包含了 _id字段   public static final class User implements BaseColumns {        public static final Uri CONTENT_URI  = Uri.parse(”content://com.wissen.MyContentProvider”);        // 表数据列     public static final String  USER_NAME  = “USER_NAME”;    }}  


0 0
原创粉丝点击