Ich möchte einige Dateipfade von ProGuard ausschließen. Beispielcom.myapp.customcomponents
Wie kann ich das machen? Ich hasse es, -keep-Flags für jede einzelne benutzerdefinierte Komponentendatei zu platzieren, die ich in diesem Verzeichnis habe.
Ich habe Folgendes versucht, aber es funktioniert nicht:
-keep public class com.myapp.customcomponents.*
Fügen Sie die folgende Zeile am Ende Ihrer ProGuard-Konfiguration hinzu:
Ersetzen Sie den Paketnamen entsprechend, hier wird das Paket
com.facebook
von ProGuard ausgeschlossen.quelle
{ *; }
bedeutet dasViele Leute scheinen zu empfehlen
-keep class com.myapp.customcomponents.** { *; }
, einen Pfad von der Verarbeitung auszuschließen. Siehe hier:Das Problem bei dieser Lösung ist, dass immer noch ein gewisses Maß an Verschleierung auftritt, das Ihren Code beschädigen kann. Sie können das Mapping im Mapping-Ausdruck sehen:
Die Lösung, für die ich mich entschieden habe, ist ein zweistufiger Prozess. Verwenden Sie zunächst
injars
einen Filter, um den Paketpfad auszuwählen, den ich verarbeiten möchte. Es ist möglich, die anderen Paketpfade als Bibliotheken hinzuzufügen.Zweitens führen Sie das verarbeitete Glas mit dem ursprünglichen Glas zusammen, aber nur die Pfade, die übersprungen wurden.
Das Ergebnis ist ein zusammengeführtes Glas, das die Kombination aus dem verarbeiteten Paketpfad und den übersprungenen Pfaden darstellt. Diese Übung ist ungültig, wenn jemand die Möglichkeit bietet, die Verarbeitung bestimmter Pfade vollständig zu überspringen (was ich nicht gefunden habe).
quelle
Was für mich mit Android Studio 4.0 funktioniert hat, ist:
Doppelte Sternchen (**) in anderen Antworten haben bei mir nicht funktioniert. Ich habe auch die obige Konfiguration mit R8 ausprobiert, funktioniert einwandfrei.
quelle