As混淆详解

来源:互联网 发布:lms数据采集系统 编辑:程序博客网 时间:2024/06/05 02:34
#忽略警告,避免打包时某些警告出现-ignorewarnings#指定压缩级别-optimizationpasses 5#包名不混合大小写-dontusemixedcaseclassnames#不跳过非公共的库的类-dontskipnonpubliclibraryclasses-dontskipnonpubliclibraryclassmembers#不优化输入的类文件-dontoptimize#关闭预校验-dontpreverify#混淆时记录日志-verbose-printmapping proguardMapping.txt#混淆时采用的算法-optimizations !code/simplification/cast,!field/*,!class/merging/*#保护注解-keepattributes *Annotation*,InnerClasses-keepattributes Signature#保留行号-keepattributes SourceFile,LineNumberTable#keep相关注解-keep class android.support.annotation.Keep-keep @android.support.annotation.Keep class * {*;}-keepclasseswithmembers class * {    @android.support.annotation.Keep <methods>;}-keepclasseswithmembers class * {    @android.support.annotation.Keep <fields>;}-keepclasseswithmembers class * {    @android.support.annotation.Keep <init>(...);}-keep public class * extends android.app.Activity-keep public class * extends android.app.Appliction-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-keep class android.support.** {*;}#保持所有拥有本地方法的类名及本地方法名-keepclasseswithmembernames class * {    native <methods>;}#保持Activity中View及其子类入参的方法-keepclassmembers class * extends android.app.Activity{    public void *(android.view.View);}#枚举-keepclassmembers enum * {    public static **[] values();    public static ** valueOf(java.lang.String);}#保持自定义View的get和set相关方法-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);}-keepclasseswithmembers class * {    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 *;}#Fragment不需要在AndroidManifest.xml中注册,需要额外保护下-keep public class * extends android.support.v4.app.Fragment-keep public class * extends android.app.Fragment#保持所有实现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();}-keep class **.R$* { *;}-keepclassmembers class * {    void *(**On*Event);}#webview-keepclassmembers class fqcn.of.javascript.interface.for.webview {   public *;}-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, jav.lang.String);}
-ignorewarnings                     # 忽略警告,避免打包时某些警告出现-optimizationpasses 5               # 指定代码的压缩级别-dontusemixedcaseclassnames         # 是否使用大小写混合-dontskipnonpubliclibraryclasses    # 是否混淆第三方jar-dontpreverify                      # 混淆时是否做预校验-verbose                            # 混淆时是否记录日志-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*        # 混淆时所采用的算法 -libraryjars   libs/treecore.jar -dontwarn android.support.v4.**     #缺省proguard 会检查每一个引用是否正确,但是第三方库里面往往有些不会用到的类,没有正确引用。如果不配置的话,系统就会报错。-dontwarn android.os.**-keep class android.support.v4.** { *; }        # 保持哪些类不被混淆-keep class com.baidu.** { *; } -keep class vi.com.gdi.bgl.android.**{*;}-keep class android.os.**{*;} -keep interface android.support.v4.app.** { *; } -keep public class * extends android.support.v4.** -keep public class * extends android.app.Fragment -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.support.v4.widget-keep public class * extends com.sqlcrypt.database-keep public class * extends com.sqlcrypt.database.sqlite-keep public class * extends com.treecore.**-keep public class * extends de.greenrobot.dao.**  -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 class MyClass;                              # 保持自己定义的类不被混淆