使用proguard时出现异常行为

时间:2014-01-09 15:32:17

标签: java android obfuscation proguard

我的原始代码是:

private String hello;
private int i = 0;

public void test() {
    if (i == 0) {
        hello = "asdas";
    } else {
        hello = "asasvfasfas";
    }
}

使用proguard进行模糊处理后:

private String a;
private int c = 0;

public void a()
  {
    if (this.c == 0);
    for (this.a = "asdas"; ; this.a = "asasvfasfas")
      return;
  }

在项目属性中:

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

我的proguard-project.txt文件为空,所以我猜它应该使用默认的配置文件:proguard-android.txt。

为什么表现得像这样?如何防止这种代码优化?请帮忙。

1 个答案:

答案 0 :(得分:2)

因为您的代码只是您输入的代码,我认为,您的代码将很容易优化到此:

private String hello;

public void test() {
        hello = "asdas";
}

Proguard只是不删除原始但无法访问的源代码行,只是将它们放入无法访问的地方。它将您的代码转换为等效但不那么人性化的格式。

因此,生成的代码与您的代码一样,只是混淆了。如果您不喜欢它,请不要使用混淆器。