当前位置: 移动技术网 > 移动技术>移动开发>Android > proguar在Android混淆中的用法

proguar在Android混淆中的用法

2019年07月24日  | 移动技术网移动技术  | 我要评论

混淆器通过删除从未用过的代码和使用晦涩名字重命名类、字段和方法,对代码进行压缩,优化和混淆。结果是一个比較小的.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删除日志代码。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网