Android 混淆与反编译的简单记录

-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中可以查看目录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值