Android studio 混淆

-optimizationpasses 5                                                           # 指定代码的压缩级别  
-dontusemixedcaseclassnames                                                     # 是否使用大小写混合  
-dontskipnonpubliclibraryclasses                                                # 是否混淆第三方jar  
-dontpreverify                                                                  # 混淆时是否做预校验  
-verbose                                                                        # 混淆时是否记录日志  
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*        # 混淆时所采用的算法  

-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 com.android.vending.licensing.ILicensingService              # 保持哪些类不被混淆  

-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;                                                            # 保持自己定义的类不被混淆  

我自己项目下的第三方混淆

-keepparameternames
-renamesourcefileattribute SourceFile
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,EnclosingMethod

-optimizations !code/simplification/arithmetic

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.content.ContentProvider


-keepclassmembers class * {
   void *(android.view.View);
   *** *Click(...);
   *** *Event(...);
}
-keep public class * {
    public protected *;
}
-keepclasseswithmembernames class * {
    native <methods>;
}
-keepclassmembers class * implements java.io.Serializable {
    static final long serialVersionUID;
    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 public class * extends android.view.View {
    public <init>(android.content.Context);
    public <init>(android.content.Context, android.util.AttributeSet);
    public <init>(android.content.Context, android.util.AttributeSet, int);
    public void set*(...);
}
-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.content.Context {
   public void *(android.view.View);
   public void *(android.view.MenuItem);
}
-keepclassmembers class * implements android.os.Parcelable {
    static android.os.Parcelable$Creator CREATOR;
}
-keepclassmembers class **.R$* {
  public static <fields>;
}
-keepclassmembers class * {
    @android.webkit.JavascriptInterface <methods>;
}
-keep public interface com.android.vending.licensing.ILicensingService
-dontnote com.android.vending.licensing.ILicensingService


-dontpreverify
-repackageclasses ''
-allowaccessmodification

-dontwarn android.**
-keep interface android.** { *; }
-keep class android.** { *; }
-keep public class * extends android.**

-keepclassmembers class * extends java.lang.Enum {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keep class com.fanglin.fenhong.microbuyer.base.model.** { *;}

#--------------- BEGIN: Gson防混淆 ----------
-keepattributes *Annotation*
-keep class sun.misc.Unsafe { *; }
-keep class com.idea.fifaalarmclock.entity.***
#-keep class com.google.gson.stream.** { *; }
-keep class com.google.gson.** { *; }
#--------------- END ----------

-dontwarn com.daimajia.**
-keep class com.daimajia.** { *;}

#--------------- BEGIN:信鸽防混淆 ----------
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep class com.tencent.android.tpush.**  {* ;}
-keep class com.tencent.mid.**  {* ;}
#--------------- END ----------

#--------------- BEGIN: SafeWebViewBridge  ----------
-keepclassmembers class cn.pedant.SafeWebViewBridge.sample.HostJsScope$RetJavaObj{ *; }
-keepclassmembers class cn.pedant.SafeWebViewBridge.sample.HostJsScope{ *; }
#--------------- END ----------

# -----友盟-------------------
-keepclassmembers class * {
   public <init> (org.json.JSONObject);
}
-keep public class com.fanglin.fenhong.microbuyer.R$*{
   public static final int *;
}
#--------------- END ----------

最后在Builde.gradle中设置

buildTypes {
        release {
            // 不显示Log  
            buildConfigField "boolean", "LOG_DEBUG", "false"  
            minifyEnabled true // 开启混淆
            zipAlignEnabled true // 对齐zip
            shrinkResources false // 删除无用资源
            debuggable false // 是否debug
            versionNameSuffix "_release" // 版本命名后缀
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' // 混淆文件
        }

        debug {
            zipAlignEnabled false
            shrinkResources false
            minifyEnabled false
            versionNameSuffix "_debug"
            signingConfig signingConfigs.debug
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值