android APP进行混淆

昨天第一次在AS做混淆,步骤都是百度出来的。今天记录下。。。

第一步:

在model app里以下这地方改为:

android {
    compileSdkVersion 22
    buildToolsVersion '22.0.1'

    defaultConfig {
        applicationId "c**********"
        minSdkVersion 18
        targetSdkVersion 22
    }

    buildTypes {
        release {
           minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
          
    }

}

以上改为:

android {
    compileSdkVersion 22
    buildToolsVersion '22.0.1'

    defaultConfig {
        applicationId "c********"
        minSdkVersion 18
        targetSdkVersion 22
    }

    buildTypes {
        release {
         
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

}
以上至所以加入debug也混淆,是为了自己混淆后进行调试,这样就可以debug的时候查看log,可以直接看到哪些地方混淆出现错误,以便
快速处理。

第二步:
找到
proguard-rules.pro'
文件,配置混淆。
此文件位置如下图,若地方没有,可以在其它项目复制一份过来放在此地方,然后进行配置混淆就好了



第三步:

配置混淆

附上自己成功混淆的配置


-optimizationpasses 5          # 指定代码的压缩级别
-dontusemixedcaseclassnames   # 是否使用大小写混合
-dontpreverify           # 混淆时是否做预校验
-verbose                # 混淆时是否记录日志




#---------------------------------实体类(此为自己包名,做了打*处理)---------------------------------
-keep class com.********.bean.** { *; }


 #------alipay-------
#alipay
-keep class com.alipay.android.app.IAlixPay{*;}
-keep class com.alipay.android.app.IAlixPay$Stub{*;}
-keep class com.alipay.android.app.IRemoteServiceCallback{*;}
-keep class com.alipay.android.app.IRemoteServiceCallback$Stub{*;}
-keep class com.alipay.sdk.app.PayTask{ public *;}
-keep class com.alipay.sdk.app.AuthTask{ public *;}
-keep class com.alipay.mobilesecuritysdk.*
-keep class com.ut.*

-dontwarn android.net.**
-keep class android.net.** { *; }





#------GSON不混淆-------
#-keep attributes Signature
-keep class com.google.gson.stream.** { *; }
-keep class com.google.gson.examples.android.model.** { *; }
-keep class com.handmark.pulltorefresh{*;}
-keep class com.lidroid.** { *; }

#------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);
}


#------友盟分享部分-------
 -dontwarn com.umeng.**
 -keep class com.umeng.**{*;}
 -keep class u.aly.**{*;}
 -keep class com.google.**{*;}

 #weixin
 -dontwarn com.tencent.mm.**
 -keep class com.tencent.mm.**{*;}

 #Universal Image Loader
 -keep class com.nostra13.universalimageloader.** { *; }
 -keepattributes Signature

################xutils3##################

-keep class org.xutils.** { *; }
-keep public class * extends org.xutils.**
-keepattributes Signature
-keepattributes *Annotation*
-keep public interface org.xutils.** {*;}
-dontwarn org.xutils.**
-keepclasseswithmembers class com.jph.android.entity.** {
    <fields>;
    <methods>;
}




-ignorewarnings
-keep public class * extends android.support.** #如果有引用v4或者v7包,需添加








 #---------------------------------默认保留区---------------------------------
 -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.** {*;}
 -keep public class * extends android.os.IInterface

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

 -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 *;
 }

 #----------------------------------------------------------------------------

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值