Android的混淆主要分如下几个步骤:

一. 打开project.properties文件的如下代码(在比较新的版本中适用,低版本需要另外方式)

# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt//主要是放开这句话#Project target.target=android-19

二 .然后可以去proguard-project.txt文件去定义一些不需要混淆的文件

主要是分为三类

1.系统的一些方法等

2.是引入的三方jar包

3.是引入的依赖库

下面直接上我项目的代码

//这部分是一个常规的设置
-optimizationpasses 7  -dontusemixedcaseclassnames  -dontskipnonpubliclibraryclasses  -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 <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);  }    -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*(...);  }    -keepclassmembers enum * {      public static **[] values();      public static ** valueOf(java.lang.String);  }    -keep class * implements android.os.Parcelable {      public static final android.os.Parcelable$Creator *;  }    -keepnames class * implements java.io.Serializable    -keepclassmembers class * implements java.io.Serializable {      static final long serialVersionUID;      private static final java.io.ObjectStreamField[] serialPersistentFields;      !static !transient <fields>;      private void writeObject(java.io.ObjectOutputStream);      private void readObject(java.io.ObjectInputStream);      java.lang.Object writeReplace();      java.lang.Object readResolve();  }    -keepattributes *Annotation*  -keepattributes Exceptions,InnerClasses,Signature  -keepattributes SourceFile,LineNumberTable     //这是不混淆我自己项目中的包下的所有文件-keep class com.stateunion.goldencloud.Entity** {*;}  //指定类不进行混淆(包括里面的方法等)#-keepclasseswithmembers class MyBean {  #    <fields>;  #   <methods>;  #}  //v4包和他的子类的设置,继承自fragment的类-keep class **.R$* { *; }  -libraryjars  libs/android-support-v4.jar  -dontwarn android.support.v4.**      -keep class android.support.v4.** { *; }    -keep interface android.support.v4.** { *; }  -keep public class * extends android.support.v4.**   -keep public class * extends android.app.Fragment  //这部分为三方依赖的库的声明-libraryjars ..\\xutillibrary-dontwarn com.lidroid.xutils.**-keep class com.lidroid.xutils.** {*;}-libraryjars ../SystemBarTint-master-dontwarn com.readystatesoftware.systembartint.**-keep class com.readystatesoftware.systembartint.**{*;}-libraryjars ../android-support-v7-appcompat-dontwarn com.android-support-v7-appcompat.**-keep class com.android-support-v7-appcompat.**{*;}//这是libs下的jar包声明-libraryjars libs/fastjson-1.1.40.jar -dontwarn com.alibaba.fastjson.** -keep class com.alibaba.fastjson.**{*;}-libraryjars libs/gson-2.2.4.jar -dontwarn com.google.gson.** -keep class com.google.gson.**{*;}

基本上就是上面这些步骤,这个是记录我自己的混淆的过程

目前也有三方加密的方式,通过应用加壳的方式进行加密,有兴趣的同学可以去网上看看 例如爱加密等。

下面是我反编译后的结果图

1. 这是没有混淆的xutils

关于Android 混淆的内容总结_第1张图片

2.这是保留后的实体类

关于Android 混淆的内容总结_第2张图片

3.这是混淆后的文件

关于Android 混淆的内容总结_第3张图片


更多相关文章

  1. android 9.0 SD卡权限问题 文件管理器没有权限
  2. android 读取文件内容操作
  3. Android文件浏览器的开发
  4. android 使用gdb调试的方式
  5. android布局文件中的include
  6. Android上传文件到Web服务器,PHP接收文件(二)

随机推荐

  1. Android(安卓)源码查看
  2. android:launchMode="singleTask" 与 onN
  3. Android(安卓)消息处理机制1(从源码分析)
  4. Android设置透明、半透明等效果
  5. Android(安卓)studio 插件安装
  6. Mac配置Android环境变量
  7. android avd配置路径
  8. Android参数传递总结
  9. android TextView的字体颜色设置的多种方
  10. Android(安卓)Layout机制研究