时间:2021-05-19
混淆器通过删除从未用过的代码和使用晦涩名字重命名类、字段和方法,对代码进行压缩,优化和混淆。结果是一个比較小的.apk文件,该文件比較难进行逆向project。因此,当你的应用程序对安全敏感(要求高),比如当你授权应用程序的时候,混淆器是一种重要的保护手段。
proguard 基本语法
// 保留native方法的方法的方法名和包含native方法的类的类名不变-keepclasseswithmembernames class { native<methods>;}// 保留继承与View的类中的set*和get*方法-keepclassmembers public class * extends android.view.View { void set*(***); *** get*();}// 保留继承与Activity的类中以View为参数的方法-keepclassmembers class * extends android.app.Activity { public void *(android.view.View);}// 保留实现了Parcelable 接口的类的类名以及实现了 Parcelanle$Creator 的内部类-keep class * implemenets android.os.Parcelable { public static final android.os.Parcelanle$Creator *;}// 保留 R$*类中静态字段的字段名-keep class **.R$* { public static <fields>;}也就是
类名不混淆 用keep
方法名不混淆 用keepclassmembers 或者 keepclasseswithmembernames(后者用于native不混淆)
不混淆的情况:
1 jni 调用java方法
2 四大组件
3 R文件
4 某些通过反射调用的类或方法
5 第三jar包(一般情况下不要混淆)
混淆去掉log
-assumenosideeffects class android.util.Log {public static boolean isLoggable(java.lang.String,int);public static int v(...);public static int i(...);public static int w(...);public static int d(...);public static int e(...);}assumenosideeffects,proguard 配置文件里的参数。assume no side effects;假定无效;该属性也就是标识无效代码。我们就是通过这个参数来让proguard删除日志代码。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
详解Android中TableLayout中stretchColumns、shrinkColumns的用法android:stretchColumns="1"a
关于详解Android应用中DialogFragment的基本用法,大家可以参考下。1、概述DialogFragment在android3.0时被引入。是一种特
本文实例讲述了Android中ExpandableListView的用法,ExpandableListView是android中可以实现下拉list的一个控件,
本文实例讲述了Android编程中Handler用法。分享给大家供大家参考,具体如下:在Android的UI开发中,我们经常会使用Handler来控制主UI程序
本文实例讲述了Android开发中Location用法。分享给大家供大家参考,具体如下:Location在Android开发中还是经常用到的,如通过经纬度获取天