您的当前位置:首页正文

Android 混淆打包相关

来源:花图问答

1. 保留区

     #-------------------------------------------定制化区域----------------------------------------------
            #---------------------------------1.实体类---------------------------------
    
    -keep class 你的实体类所在的包.** { *; }
    
            #-------------------------------------------------------------------------
    
            #---------------------------------2.第三方包-------------------------------
    
    #详情见后边/或者去gitHub上找
    
            #-------------------------------------------------------------------------
    
            #---------------------------------3.与js互相调用的类------------------------
    
    
    
            #-------------------------------------------------------------------------
    
            #---------------------------------4.反射相关的类和方法-----------------------
    
    
    
            #----------------------------------------------------------------------------
            #---------------------------------------------------------------------------------------------------
    
            #-------------------------------------------基本不用动区域--------------------------------------------
            #---------------------------------基本指令区----------------------------------
            -optimizationpasses 5
            -dontusemixedcaseclassnames
            -dontskipnonpubliclibraryclasses
            -dontskipnonpubliclibraryclassmembers
            -dontpreverify
            -verbose
            -printmapping proguardMapping.txt
            -optimizations !code/simplification/cast,!field/*,!class/merging/*
    -keepattributes *Annotation*,InnerClasses
    -keepattributes Signature
    -keepattributes SourceFile,LineNumberTable
    #----------------------------------------------------------------------------
    
    #---------------------------------默认保留区---------------------------------
    -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
    -keep class android.support.** {*;}
    
    -keepclasseswithmembernames class * {
        native <methods>;
    }
    -keepclassmembers class * extends android.app.Activity{
        public void *(android.view.View);
    }
    -keepclassmembers enum * {
        public static **[] values();
        public static ** valueOf(java.lang.String);
    }
    -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);
    }
    -keep class * implements android.os.Parcelable {
      public static final android.os.Parcelable$Creator *;
    }
    -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);
    }
    #----------------------------------------------------------------------------
    #---------------------------------------------------------------------------------------------------

2. 常见的第三方库

  • Butter Knife

      -keep class butterknife.** { *; }
      -dontwarn butterknife.internal.**
      -keep class **$$ViewBinder { *; }
      -keepclasseswithmembernames class * {
      @butterknife.* <fields>;
      }
              -keepclasseswithmembernames class * {
      @butterknife.* <methods>;
      }
    
  • Retrofit

      -dontwarn retrofit2.**
      -keep class retrofit2.** { *; }
      -keepattributes Signature
      -keepattributes Exceptions
    
  • RxJava RxAndroid

      -dontwarn sun.misc.**
      -keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
      long producerIndex;
      long consumerIndex;
      }
      -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
      rx.internal.util.atomic.LinkedQueueNode producerNode;
      }
      -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
      rx.internal.util.atomic.LinkedQueueNode consumerNode;
      }
    
  • Gson

      -keepattributes Signature-keepattributes *Annotation*
      -keep class sun.misc.Unsafe { *; }
      -keep class com.google.gson.stream.** { *; }
      # Application classes that will be serialized/deserialized over Gson 下面替换成自己的实体类
      -keep class com.example.bean.** { *; }
    
  • OkHttp3

      -dontwarn com.squareup.okhttp3.**
      -keep class com.squareup.okhttp3.** { *;}
      -dontwarn okio.**
    
  • Glide

      -keep public class * implements com.bumptech.glide.module.GlideModule
      -keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
      **[] $VALUES;
      public *;
      }
    
  • 友盟统计

      -keepclassmembers class * {
      public <init> (org.json.JSONObject);
      }
      -keep public class [您的应用包名].R$*{
      public static final int *;
      }
      -keepclassmembers enum * {
      public static **[] values(); public static ** valueOf(java.lang.String);
      }