2014-01-09 3 views
5

Мой Оригинальный код:Аномальное поведение при использовании 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.

Почему это так? Как я могу предотвратить такую ​​оптимизацию кода? Пожалуйста помоги.

+0

Это те 'this.a' или' this.c'? –

+0

@RohitJain: его this.a сам ... Пожалуйста, найдите обновленный код. –

+1

@EldhoseMBabu Может быть, я что-то упустил, но разве он не делает то, что он должен делать? – Navin

ответ

2

Поскольку ваш код только что фрагмент вы вошли, я полагаю, ваш код будет легко оптимизировать в этом:

private String hello; 

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

Proguard просто не удаляет исходные но недостижимые исходные линии, просто помещает их в недосягаемые места. Он преобразует ваш код в эквивалентный, но не очень удобный для пользователя формат.

Итак, сгенерированный код работает как ваш, он просто запутан. Если вам это не нравится, не используйте обфускаторы.

Смежные вопросы