Android
Co to jest ProGuard? Do czego służy system Android?
Szukaj…
Wprowadzenie
Proguard to darmowy program do zmniejszania plików klasy Java, optymalizator, obfuscator i preverifier. Wykrywa i usuwa nieużywane klasy, pola, metody i atrybuty. Optymalizuje kod bajtowy i usuwa nieużywane instrukcje. Zmienia nazwy pozostałych klas, pól i metod, używając krótkich, pozbawionych znaczenia nazw.
Zmniejsz swój kod i zasoby za pomocą proguard
Aby plik APK był tak mały, jak to możliwe, należy włączyć zmniejszanie, aby usunąć nieużywany kod i zasoby z kompilacji wydania. Na tej stronie opisano, jak to zrobić i jak określić kod i zasoby, które należy zachować lub odrzucić podczas kompilacji.
Zmniejszanie kodu jest dostępne w ProGuard, który wykrywa i usuwa nieużywane klasy, pola, metody i atrybuty z twojej spakowanej aplikacji, w tym również z dołączonych bibliotek kodów (co czyni ją cennym narzędziem do pracy wokół limitu odniesienia 64k). ProGuard optymalizuje również kod bajtowy, usuwa nieużywane instrukcje kodu i zaciemnia pozostałe klasy, pola i metody krótkimi nazwami. Zaciemniony kod utrudnia APK inżynierii wstecznej, co jest szczególnie cenne, gdy aplikacja korzysta z funkcji istotnych dla bezpieczeństwa, takich jak weryfikacja licencji.
Zmniejszanie zasobów jest dostępne we wtyczce dla systemu Android Gradle, która usuwa nieużywane zasoby ze spakowanej aplikacji, w tym nieużywane zasoby w bibliotekach kodów. Działa w połączeniu ze zmniejszaniem kodu, dzięki czemu po usunięciu nieużywanego kodu można bezpiecznie usunąć wszelkie zasoby, do których nie ma już odwołania.
Zmniejsz swój kod
Aby włączyć zmniejszanie kodu za pomocą ProGuard
, dodaj minifyEnabled
true do odpowiedniego typu kompilacji w pliku build.gradle
.
Należy pamiętać, że zmniejszanie się kodu spowalnia czas kompilacji, dlatego w miarę możliwości należy unikać używania go w kompilacji debugowania. Ważne jest jednak, aby włączyć zmniejszanie kodu w końcowym pliku APK używanym do testowania, ponieważ może to powodować błędy, jeśli nie dostosujesz wystarczająco kodu, który chcesz zachować.
Na przykład następujący fragment kodu z pliku build.gradle
umożliwia zmniejszenie kodu dla kompilacji wersji:
android {
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
...
}
Oprócz minifyEnabled
nieruchomości, proguardFiles
właściwość określa ProGuard rules
:
Metoda getDefaultProguardFile („proguard-android.txt”) pobiera domyślne ustawienia ProGuard z tools/proguard/ folder
SDK systemu Android. Wskazówka: Aby jeszcze bardziej zmniejszyć kod, wypróbuj proguard-android-optimize.txt
, który znajduje się w tej samej lokalizacji. Zawiera te same reguły ProGuard, ale z innymi optymalizacjami, które przeprowadzają analizę na poziomie kodu bajtowego - wewnątrz i pomiędzy metodami - w celu dalszego zmniejszenia rozmiaru pliku APK i przyspieszenia jego działania. W pliku proguard-rules.pro
możesz dodać niestandardowe reguły ProGuard. Domyślnie ten plik znajduje się w katalogu głównym modułu (obok pliku build.gradle). Aby dodać więcej reguł ProGuard, które są specyficzne dla każdego wariantu kompilacji, dodaj kolejną właściwość proguardFiles w odpowiednim bloku produktu productFlavor
. Na przykład poniższy plik Gradle dodaje flav2-rules.pro do smaku produktu flav2. Teraz flav2 wykorzystuje wszystkie trzy reguły ProGuard, ponieważ są również stosowane zasady z bloku wydania.
android {
...
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
productFlavors {
flavor1 {
}
flavor2 {
proguardFile 'flavor2-rules.pro'
}
}
}