2014-01-09 6 views
5

My Original-Code ist:Abnormes Verhalten während proguard mit

private String hello; 
private int i = 0; 

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

Nach Verschleiern mit proguard:

private String a; 
private int c = 0; 

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

In Projekteigenschaften:

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

Meine proguard-project.txt Datei ist leer, also denke ich, dass es die Standardkonfigurationsdatei verwenden sollte: proguard-android.txt.

Warum verhält es sich so? Wie kann ich diese Art der Code-Optimierung verhindern? Bitte helfen Sie.

+0

Sind diese 'this.a' oder' this.c'? –

+0

@RohitJain: es ist this.a selbst ... Bitte finden Sie den aktualisierten Code. –

+1

@EldhoseMBabu Vielleicht vermisse ich hier etwas, aber tut es nicht, was es tun soll? – Navin

Antwort

2

Da Ihr Code ist nur das Fragment Sie eingegeben haben, nehme ich an, wird Ihr Code leicht in diese optimiert werden:

private String hello; 

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

Die Proguard einfach nicht Ihre ursprüngliche aber nicht erreichbar Source-Leitungen entfernen, bringt sie nur in unerreichbare Orte. Es konvertiert Ihren Code in ein gleichwertiges, aber nicht so benutzerfreundliches Format.

Also funktioniert der generierte Code wie Ihr, es ist nur verschleiert. Wenn Sie es nicht mögen, verwenden Sie keine Obfuscatoren.