文章出處

# 代碼混淆壓縮比,在0和7之間,默認為5,一般不需要改

-optimizationpasses 5

 

# 混淆時不使用大小寫混合,混淆后的類名為小寫

-dontusemixedcaseclassnames

 

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

-dontskipnonpubliclibraryclasses

 

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

-dontskipnonpubliclibraryclassmembers

 

# 不做預校驗,preverify是proguard的4個步驟之一

# Android不需要preverify,去掉這一步可加快混淆速度

-dontpreverify

 

# 有了verbose這句話,混淆后就會生成映射文件

# 包含有類名->混淆后類名的映射關系

# 然后使用printmapping指定映射文件的名稱

-verbose

-printmapping proguardMapping.txt

 

# 指定混淆時采用的算法,后面的參數是一個過濾器

# 這個過濾器是谷歌推薦的算法,一般不改變

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

 

# 保護代碼中的Annotation不被混淆,這在JSON實體映射時非常重要,比如fastJson

-keepattributes *Annotation*

 

# 避免混淆泛型,這在JSON實體映射時非常重要,比如fastJson

-keepattributes Signature

 

//拋出異常時保留代碼行號,在第6章異常分析中我們提到過

-keepattributes SourceFile,LineNumberTable

 

# 保留所有的本地native方法不被混淆

-keepclasseswithmembernames class * {

    native <methods>;

}

 

# 保留了繼承自Activity、Application這些類的子類

# 因為這些子類,都有可能被外部調用

# 比如說,第一行就保證了所有Activity的子類不要被混淆

-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 * extends android.view.View

-keep public class com.android.vending.licensing.ILicensingService

 

# 如果有引用android-support-v4.jar包,可以添加下面這行

-keep public class com.youngheart.app.ui.fragment.** {*;}

 

# 保留在Activity中的方法參數是view的方法,

# 從而我們在layout里面編寫onClick就不會被影響

-keepclassmembers class * extends android.app.Activity {

    public void *(android.view.View);

}

 

# 枚舉類不能被混淆

-keepclassmembers enum * {

public static **[] values();

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

}

 

# 保留自定義控件(繼承自View)不被混淆

-keep public class * extends android.view.View {

    *** get*();

    void set*(***);

    public <init>(android.content.Context);

    public <init>(android.content.Context, android.util.AttributeSet);

    public <init>(android.content.Context, android.util.AttributeSet, int);

}

 

# 保留Parcelable序列化的類不被混淆

-keep class * implements android.os.Parcelable {

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

}

 

# 保留Serializable序列化的類不被混淆

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

}

 

# 對于R(資源)下的所有類及其方法,都不能被混淆

-keep class **.R$* {

    *;

}

 

# 對于帶有回調函數onXXEvent的,不能被混淆

-keepclassmembers class * {

    void *(**On*Event);

}

 

# 保留實體類和成員不被混淆

-keep public class com.youndheart.entity.** {

    public void set*(***);

    public *** get*();

    public *** is*();

}

 

# 保留內嵌類不被混淆

-keep class com.example.youngheart.MainActivity$* { *; }

 

# 對WebView的處理

-keepclassmembers class * extends android.webkit.webViewClient {

    public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);

    public boolean *(android.webkit.WebView, java.lang.String)

}

-keepclassmembers class * extends android.webkit.webViewClient {

    public void *(android.webkit.webView, java.lang.String)

}

 

# 保留JS方法不被混淆

-keepclassmembers class com.example.youngheart.MainActivity$JSInterface1 {

    <methods>;

}

 

# 針對android-support-v4.jar的解決方案

-libraryjars libs/android-support-v4.jar

-dontwarn android.support.v4.**

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

-keep interface android.support.v4.app.** { *; }

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

-keep public class * extends android.app.Fragment

 

# 對alipay的混淆處理

-libraryjars libs/alipaysdk.jar

-dontwarn com.alipay.android.app.**

-keep public class com.alipay.**  { *; }


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()