Chcę wykluczyć niektóre ścieżki plików z ProGuard. Przykładcom.myapp.customcomponents
W jaki sposób mogę to zrobić? Nienawidzę umieszczać flagi -keep dla każdego pliku komponentu niestandardowego, który mam w tym katalogu.
Próbowałem następujących rzeczy, ale to nie działa:
-keep public class com.myapp.customcomponents.*
Dodaj następujący wiersz u dołu konfiguracji ProGuard:
Zmień odpowiednio nazwę pakietu, w tym przypadku pakiet
com.facebook
zostanie wykluczony z ProGuard.źródło
{ *; }
znaczyWiele osób wydaje się polecać
-keep class com.myapp.customcomponents.** { *; }
jako sposób na wykluczenie ścieżki z przetwarzania. Spójrz tutaj:Problem z tym rozwiązaniem polega na tym, że nadal występuje pewien poziom zaciemniania, który może złamać twój kod. Mapowanie można zobaczyć na wydruku mapowania:
Rozwiązanie, które wybrałem, to proces dwuetapowy. Najpierw użyj
injars
z filtrem, aby wybrać ścieżkę pakietu, którą chciałbym przetworzyć. Możliwe jest dodanie innych ścieżek pakietów jako bibliotek.Po drugie, połącz przetworzony słoik z oryginalnym słoikiem, ale tylko te ścieżki, które zostały pominięte.
Rezultatem jest scalony plik jar będący połączeniem ścieżki przetworzonego pakietu i pominiętych ścieżek. To ćwiczenie jest nieważne, jeśli ktoś może zapewnić sposób na całkowite pominięcie przetwarzania niektórych ścieżek (których nie znalazłem).
źródło
To, co zadziałało dla mnie w Android Studio 4.0, to:
Podwójne gwiazdki (**) w innych odpowiedziach nie działały u mnie. Próbowałem też powyższej konfiguracji z R8, działa dobrze.
źródło