2016-03-23 5 views
1

Ich studiere jetzt die Proguard, aber bin mit dem Ausrufezeichen verwechselt! vor dem Klassenpfad in den Einstellungen, wie zum Beispiel:Was bewirkt das Ausrufezeichen vor dem Klassenpfad in ProGuard?

-halte Klasse! android.support.v7.view.menu. {*;} **

Was bedeutet dieses "!" machen? Bedeutet es, dass Proguard diese Klasse nicht behalten wird? Aber wenn das so ist, warum brauchen wir es dann, weil Proguard alle Klassen verschleiern wird?

+0

http://proguard.sourceforge.net/manual/usage.html#keepoptions –

Antwort

2

Es bedeutet das Gleiche! bedeutet in vielen anderen Programmiersprachen. Es negiert die folgende Auswahl. In Ihrem Beispiel wird die keep-Anweisung auf alles angewendet, was nicht in der folgenden Paket-/Klassenauswahl ist.

+0

Dank Doug, so bedeutet es, dass, wenn nicht irgendwelche in meiner Konfigurationsdatei halten Proguard wird alle Klassen verschleiern? – Qing

+0

ProGuard wird versuchen, so viel wie möglich zu verschleiern, ja. Sie sollten jedoch mindestens die Standard-Android-Regeln in Ihrem Projekt haben, oder es wird wahrscheinlich nach der Verschleierung nicht funktionieren. –

+0

Dank Kumpel, eine letzte Frage für Sie, ich habe diese Linie von Regeln 1.-Klasse zu halten! Android.support.v7.view.menu. ** {*;} und es wird die MenuBuilder-Klasse in diesem Paket zu verschleiern, aber nachdem ich diese Zeile der Regel # -Kostenschnittstelle android.support.v7 hinzugefügt habe. ** {*; }, die MenuBuilder-Klasse ist nicht verschleiert, jedoch sehe ich hier keinen Konflikt. Würde es Ihnen etwas ausmachen, ein bisschen mehr zu erklären? Vielen Dank – Qing