Android代码混淆
2021-04-13 本文已影响0人
ryanxun
嘿,今天的你过的还好吗
代码混淆,此处是为了防止被反编译apk直接知晓你得代码和源文件,可怕不.你想一下,辛辛苦苦几个月的代码,让你一小时就搞到了源码,刺激不
关于怎么反编译,emmm,大把的教程等着你,我这里就不多说了,接下来开始正题!!!
首先找到你项目文件中的proguard-rules.pro文件
image.png他就是需要你编写混淆代码的文件
当然,光知道在哪里写也没用,你还的引用
image.png引用完成后,那你的代码就可以被混淆了,需要配置混淆文件,混淆的参数比较多,我百度贴出来
-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; # 保持自己定义的类不被混淆
简单直接,基本所有项目都需要这些基本混淆的.但是这些一定是不够的.有一些第三方资源会有问题.一般第三方光放都会告诉怎么混淆.照葫芦画瓢就完了
image.png这个要改为true