-dontusemixedcaseclassnames #混淆时不使用大小写混合类名
-dontskipnonpubliclibraryclasses #不跳过library中的非public的类
-verbose #打印混淆的详细信息
-dontoptimize #不进行优化,建议使用此选项,
-dontpreverify #不进行预校验,Android不需要,可加快混淆速度。
-ignorewarnings #忽略警告
-optimizationpasses 5 #指定代码的压缩级别
# 保护代码中的Annotation不被混淆
# 这在JSON实体映射时非常重要,比如fastJson
-keepattributes *Annotation*
#把混淆类中的方法名也混淆了
-useuniqueclassmembernames
#将文件来源重命名为“SourceFile”字符串
-renamesourcefileattribute SourceFile
# 避免混淆泛型
# 这在JSON实体映射时非常重要,比如fastJson
-keepattributes Signature
#-repackageclasses'a'
-flattenpackagehierarchy
# keep住源文件以及行号
-keepattributes SourceFile,LineNumberTable
#------------------ android基本项 ----------------
# 保留所有的本地native方法不被混淆
-keepclasseswithmembernames class * {
native <methods>;
}
# 保留了继承自Activity、Application这些类的子类
# 因为这些子类有可能被外部调用
# 比如第一行就保证了所有Activity的子类不要被混淆
-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
# 枚举类不能被混淆
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
# 保留自定义控件(继承自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*(***);
*** get* ();
}
# 保留Parcelable序列化的类不能被混淆
-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;
!static !transient <fields>;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
# 对R文件下的所有类及其方法,都不能被混淆
-keepclassmembers class **.R$* {
*;
}
# 对于带有回调函数onXXEvent的,不能混淆
-keepclassmembers class * {
void *(**On*Event);
}
# --------------------------------------------------------------------------
# 项目代码
-keep class **.R{*;}
-keep class com.xvzoom.wallet.model.** { *; }
# ------------------------------lib-------------------------------------
# --------------------------------------------------------------------------
# eventbus
-keep class de.greenrobot.event.** {*;}
-keep public class *{
public void onEvent*(...);
}
# --------------------------------------------------------------------------
#glide
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
**[] $VALUES;
public *;
}
# --------------------------------------------------------------------------
# butterknife
-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewBinder { *; }
-keepclasseswithmembernames class * {
@butterknife.* <fields>;
}
-keepclasseswithmembernames class * {
@butterknife.* <methods>;
}
# --------------------------------------------------------------------------
# Bugly
-dontwarn com.tencent.bugly.**
-keep public class com.tencent.bugly.**{*;}
# --------------------------------------------------------------------------
# ImageLoader
-keep class com.squareup.otto.** {*;}
-dontwarn com.squareup.picasso.OkHttpDownloader
# --------------------------------------------------------------------------
# PickerView
-keep class com.bigkoo.** {*;}
-dontwarn com.bigkoo.**
# --------------------------------------------------------------------------
# fastjson
-dontwarn com.alibaba.fastjson.**
-keep class com.alibaba.fastjson.**{*; }
# --------------------------------------------------------------------------
# NoHttp
-dontwarn com.yolanda.nohttp.**
-keep class com.yolanda.nohttp.**{*;}
-keep class com.xvzoom.wallet.network.** { *; }
# --------------------------------------------------------------------------
# tencent
-dontwarn com.tencent.mm.**
-keep class com.tencent.mm.**{*;}
# --------------------------------------------------------------------------
# zxing
-dontwarn com.google.zxing.**
-keep class com.google.zxing.**{*;}
# --------------------------------------------------------------------------
# nineoldandroids
-dontwarn com.nineoldandroids.**
-keep class com.nineoldandroids.** { *;}
# --------------------------------------------------------------------------
# okhttp
-keep class com.squareup.okhttp.** { *; }
-keep interface com.squareup.okhttp.** { *; }
-dontwarn com.squareup.okhttp.*
#如果引用了v4或者v7包
-dontwarn android.support.**
-dontwarn android.support.v4.**
-keep class android.support.v4.** { *; }
-keep public class * extends android.support.v4.**
-keep public class * extends android.app.Fragment
-dontwarn android.support.v7.**
-keep class android.support.v7.** { *; }
-keep public class * extends android.support.v7.**
混淆简单记录,虽然没用到 哈哈哈
反编译
1.下载dex2jar和gui。
dex2jar 这个工具用于将dex文件转换成jar文件
jd-gui 这个工具用于将jar文件转换成java代码
2.将apk解压,将classes.dex复制进dex2jar。
3.cmd进入dex2jar目录下,使用d2j-dex2jar classes.dex,生成jar包。
4.jar包在jd-gui中可以查看目录。