Wie zu sagen, Proguard zu verschleiern Klasse Namen
Ich möchte proguard zu verschleiern Klassennamen. Ich habe diese Zeile in Proguard.cfg
-keepclasseswithmembers class * {
public static <fields>;
}
-keepnames class * implements java.io.Serializable
-keep public class com.google.**
Und ich merke, dass was nicht verschleiert ist, die Klassennamen. So läuft jdgui ich sehen
com/test/abcd/ActualClass.java
public class ActualClassName erweitert Aktivitäten, etc
außerdem sehe ich Methoden, die Rückkehr real Klassennamen. wie
ActualClassname aa();
Importe und Aussagen wie
import com.abcd.ActualClassName
Wie bekomme ich Proguard zu verschleiern classname selbst. Es ist nicht nur für die Aktivitäten, die ich sehe, diese meine Adapter sind nicht verschleiert. Auch gibt es die Verschleierung geht aber nicht Klassennamen.
Ist an die oben genannten Regeln, was verhindert, dass die Klassennamen wird verschleiert?
Update: ich habe da entfernt an die oben genannten Regeln und eine Utility-Klasse, erstreckt sich nicht alles von Android ist nicht verschleiert. Ich bin jetzt Fragen, ob es eine implizite Regel über das halten von Klasse, Namen der Klassen, auf die verwiesen wird, die von Klassen, die gehalten werden wie Aktivität derivied Klassen? Die Klassen, deren Namen nicht unkenntlich gemacht, haben ein paar Dinge gemeinsam:
1) Statische Methoden
2) Importieren Sie von anderen Arten, die gehalten werden wie diejenigen, die sich aus der Aktivität oder serialisierbar.
3) Sie haben Methoden mit Parametern von anderen Klassen (von denen Einige vielleicht müssen gehalten werden).
Aber es gibt keine, wo ich bin ausdrücklich verlangt, dass diese utility-Klassen gehalten werden sollte.
- Ich bin mit den gleichen Problem. Hast du eine Lösung für dieses problem ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es mehrere Klassen, die in Ihrem code, müssen weiterhin den gleichen voll qualifizierten Klassennamen, um für proguard waren zu benennen Sie die Klasse dann Android würde nicht mehr in der Lage sein, Sie zu finden.
Den typischen Proguard config beziehen sich auf die Proguard config in das Android-SDK enthält einige wichtige Zeilen wie diese:
proguard.config
improject.properties
, und was ist die Wert?Ich denke dein problem kommt von Ihrer ersten Zeile: '-keepclasseswithmembers' enthält den Namen der Klasse, also in deinem Fall jede Klasse mit einer statischen Feld Ihren Namen behalten wird. Ändern Sie es einfach '-keepclassmembers' wird verschleiern die Klassennamen, wobei die statischen Felder intakt(die ich nehme an, Sie wollen zu tun).
Sagte, ich bin nicht sicher, warum Sie wollen, dies zu tun, obwohl. Wenn Sie versuchen, zu bewahren die statische variable-Namen, sollten Sie nicht erhalten wollen, Klassennamen als gut, zu sehen, wie das ist, wie Sie den Zugriff auf die statischen Felder? Warum sind Sie versuchen zu bewahren alle Ihre statischen Variablen-Namen?