美文网首页
Android 代码混淆模板

Android 代码混淆模板

作者: 快感的感知 | 来源:发表于2018-06-12 15:14 被阅读16次
    # Add project specific ProGuard rules here.
    # By default, the flags in this file are appended to flags specified
    # in /home/jermy/Android/Sdk/tools/proguard/proguard-android.txt
    # You can edit the include path and order by changing the proguardFiles
    # directive in build.gradle.
    #
    # For more details, see
    #   http://developer.android.com/guide/developing/tools/proguard.html
    
    # Add any project specific keep options here:
    
    # If your project uses WebView with JS, uncomment the following
    # and specify the fully qualified class name to the JavaScript interface
    # class:
    #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
    #   public *;
    #}
    
    
    
    
    #---------------------------------基本指令----------------------------------
     # 设置混淆的压缩比率 0 ~ 7
        -optimizationpasses 5
        # 混淆后类名都为小写   Aa aA
        -dontusemixedcaseclassnames
        # 指定不去忽略非公共库的类
        -dontskipnonpubliclibraryclasses
        #不做预校验的操作
        -dontpreverify
        # 混淆时不记录日志
        -verbose
        # 混淆采用的算法.
        -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
        #保留代码行号,方便异常信息的追踪
        -keepattributes SourceFile,LineNumberTable
        #dump文件列出apk包内所有class的内部结构
        -dump class_files.txt
        #seeds.txt文件列出未混淆的类和成员
        -printseeds seeds.txt
        #usage.txt文件列出从apk中删除的代码
        -printusage unused.txt
        #mapping文件列出混淆前后的映射
        -printmapping mapping.txt
        #保护注解
        -keepattributes *Annotation*
    #----------------------------------------------------------------------------
    
    #---------------------------------默认保留区,避免混淆Android基本组件---------------------------------
    -keep public class * extends android.app.Activity
    -keep public class * extends android.app.Fragment
    -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 public class * extends android.support.annotation.**
    -keep public class * extends android.support.v7.**
    
    #不提示V4包下错误警告
    -dontwarn android.support.v4.**
    #保持下面的V4兼容包的类不被混淆
    -keep class android.support.v4.**{*;}
    #避免混淆所有native的方法,涉及到C、C++
    -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);
    }
    #避免混淆自定义控件类的get/set方法和构造函数
    #混淆保护自己项目的部分代码以及引用的第三方jar包library-end##################
    -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 *;
    }
    #不混淆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();
    }
    #使用GSON、fastjson等框架时,所写的JSON对象类不混淆,否则无法将JSON解析成对应的对象
    -keepclassmembers class * {
            public <init>(org.json.JSONObject);
    }
    #不混淆资源类
    -keep class **.R$* {
     *;
    }
    -keepclassmembers class * {
        void *(**On*Event);
    }
    
    #移除log
    -assumenosideeffects class android.util.Log{
        public static int v(...);
        public static int i(...);
        public static int d(...);
        public static int w(...);
        public static int e(...);
    }
    #避免混淆泛型 如果混淆报错建议关掉
    -keepattributes Signature
    
    #----------------------------------------------------------------------------
    
    
    
    #---------------------------------2.第三方包-------------------------------
    #SmartRefreshLayoutS 没有使用到:序列化、反序列化、JNI、反射,所以并不需要添加混淆过滤代码,并且已经混淆测试通过
    #Picasso
    -dontwarn com.squareup.okhttp.**
    
    #eventBus
    -keepattributes *Annotation*
    -keepclassmembers class ** {
        @org.greenrobot.eventbus.Subscribe <methods>;
    }
    -keep enum org.greenrobot.eventbus.ThreadMode { *; }
    
    # Only required if you use AsyncExecutor
    -keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
        <init>(java.lang.Throwable);
    }
    #jpinyin不需要
    
    
    #glide
    -keep public class * implements com.bumptech.glide.module.GlideModule
    -keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
      **[] $VALUES;
      public *;
    }
    #okhttp3
    -dontwarn com.squareup.okhttp3.**
    -keep class com.squareup.okhttp3.** { *;}
    -dontwarn okio.**
    
    #gson
    -dontwarn com.google.**
    -keep class com.google.gson.** {*;}
    
    #newrelic
    -keep class com.newrelic.** { *; }
    -dontwarn com.newrelic.**
    -keepattributes Exceptions, Signature, InnerClasses, LineNumberTable
    
    #MediarGallery不需要
    #android-gif-drawable
    
    #leancloud
    -keepattributes Signature
    -dontwarn com.jcraft.jzlib.**
    -keep class com.jcraft.jzlib.**  { *;}
    -dontwarn sun.misc.**
    -keep class sun.misc.** { *;}
    -dontwarn com.alibaba.fastjson.**
    -keep class com.alibaba.fastjson.** { *;}
    -dontwarn sun.security.**
    -keep class sun.security.** { *; }
    -dontwarn com.google.**
    -keep class com.google.** { *;}
    -dontwarn com.avos.**
    -keep class com.avos.** { *;}
    -keep public class android.net.http.SslError
    -keep public class android.webkit.WebViewClient
    -dontwarn android.webkit.WebView
    -dontwarn android.net.http.SslError
    -dontwarn android.webkit.WebViewClient
    -dontwarn android.support.**
    -dontwarn org.apache.**
    -keep class org.apache.** { *;}
    -dontwarn org.jivesoftware.smack.**
    -keep class org.jivesoftware.smack.** { *;}
    -dontwarn com.loopj.**
    -keep class com.loopj.** { *;}
    -dontwarn com.squareup.okhttp.**
    -keep class com.squareup.okhttp.** { *;}
    -keep interface com.squareup.okhttp.** { *; }
    -dontwarn okio.**
    -dontwarn org.xbill.**
    -keep class org.xbill.** { *;}
    
    
    -dontwarn com.baidu.**
    -dontwarn com.tencent.**
    
    #谷歌广告目前没用上
    #-dontwarn com.google.ads.**
    #-keep public class com.google.ads.**{
    #    public protected *;
    #}
    
    #vlayout
    -keepattributes InnerClasses
    -keep class com.alibaba.android.vlayout.ExposeLinearLayoutManagerEx { *; }
    -keep class android.support.v7.widget.RecyclerView$LayoutParams { *; }
    -keep class android.support.v7.widget.RecyclerView$ViewHolder { *; }
    -keep class android.support.v7.widget.ChildHelper { *; }
    -keep class android.support.v7.widget.ChildHelper$Bucket { *; }
    -keep class android.support.v7.widget.RecyclerView$LayoutManager { *; }
    
    #腾讯IM
    -keep class com.tencent.**{*;}
    -dontwarn com.tencent.**
    -keep class tencent.**{*;}
    -dontwarn tencent.**
    -keep class qalsdk.**{*;}
    -dontwarn qalsdk.**
    
    #华为推送
    -keep class com.huawei.** {*;}
    -keep class com.huawei.android.pushagent.**{*;}
    -keep class com.huawei.android. pushselfshow.**{*;}
    -keep class com.huawei.android. microkernel.**{*;}
    -keep class com.baidu.mapapi.**{*;}
    #官方文档上的,目前好像我们没有使用华为推送
    #-ignorewarning
    #-keepattributes *Annotation*
    #-keepattributes Exceptions
    #-keepattributes InnerClasses
    #-keepattributes Signature
    #-keepattributes SourceFile,LineNumberTable
    #-keep class com.hianalytics.android.**{*;}
    #-keep class com.huawei.updatesdk.**{*;}
    #-keep class com.huawei.hms.**{*;}
    #
    #-keep class com.huawei.gamebox.plugin.gameservice.**{*;}
    #
    #-keep public class com.huawei.android.hms.agent.** extends android.app.Activity { public *; protected *; }
    #-keep interface com.huawei.android.hms.agent.common.INoProguard {*;}
    #-keep class * extends com.huawei.android.hms.agent.common.INoProguard {*;}
    
    
    #小米推送
    #这里com.xiaomi.mipushdemo.DemoMessageRreceiver改成app中定义的完整类名
    -keep class com.xiaomi.mipush.sdk.PushMessageReceiver {*;}
    #可以防止一个误报的 warning 导致无法成功编译,如果编译使用的 Android 版本是 23。
    -dontwarn com.xiaomi.push.**
    
    
    #sharesdk
    -keep class cn.sharesdk.**{*;}
    -keep class com.sina.**{*;}
    -keep class **.R$* {*;}
    -keep class **.R{*;}
    -keep class com.mob.**{*;}
    -keep class m.framework.**{*;}
    -dontwarn cn.sharesdk.**
    -dontwarn com.sina.**
    -dontwarn com.mob.**
    -dontwarn **.R$*
    
    #与js互相调用的类
    -keepclasseswithmembers class com.demo.login.bean.ui.MainActivity$JSInterface {
          <methods>;
    }
    
    # 源文件和行号的信息不混淆
    -keepattributes SourceFile,LineNumberTable
    
    #---------------------------------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);
    }
    #----------------------------------------------------------------------------
    
    

    相关文章

      网友评论

          本文标题:Android 代码混淆模板

          本文链接:https://www.haomeiwen.com/subject/uzzleftx.html