Używanie R8 do zmniejszania, optymalizowania i przyspieszania działania aplikacji
5 minut czytania
Używanie R8 do zmniejszania, optymalizowania i przyspieszania działania aplikacji
Witamy w pierwszym dniu Tygodnia wyróżnień za skuteczność Androida.
Zaczynamy od jednej z najbardziej skutecznych zmian, które możesz wprowadzić, aby zwiększyć wydajność aplikacji. Wymaga ona niewielkiego nakładu pracy: włącz optymalizator R8 w trybie pełnym.
R8 jest prawdopodobnie znany jako narzędzie do zmniejszania rozmiaru aplikacji. Doskonale usuwa nieużywany kod i zasoby, zmniejszając rozmiar aplikacji. Ale jego prawdziwa moc, w której jest naprawdę g-R8, to optymalizacja.
Gdy włączysz tryb pełny i zezwolisz na optymalizacje, R8 przeprowadzi zaawansowane optymalizacje całego programu, przepisując kod w taki sposób, aby był bardziej wydajny. To nie jest tylko drobna zmiana.
Po przeczytaniu tego artykułu obejrzyj na YouTube wprowadzenie do tygodnia poświęconego skuteczności i optymalizatora R8.
Jak R8 zwiększa wydajność aplikacji
Przyjrzyjmy się najważniejszym krokom, które optymalizator R8 podejmuje, aby zwiększyć wydajność aplikacji.
Usuwanie nieużywanego kodu to najważniejszy krok w procesie zmniejszania rozmiaru aplikacji. Na tym etapie optymalizator R8 usuwa nieużywany kod z bibliotek, od których zależy Twoja aplikacja, a także martwy kod z Twojej bazy kodu.
Wstawianie metod zastępuje wywołanie metody rzeczywistym kodem, co zwiększa wydajność w czasie działania.
Scalanie klas i inne strategie są stosowane w celu zmniejszenia rozmiaru kodu. Wszystkie piękne abstrakcje, takie jak interfejsy i hierarchie klas, nie mają w tym momencie znaczenia i prawdopodobnie zostaną usunięte.
Minifikacja kodu służy do zmiany nazw klas, pól i metod na krótsze, bez znaczenia. Zamiast MyDataModel możesz więc mieć zajęcia o nazwie a. To właśnie powoduje największe zamieszanie podczas odczytywania śladów stosu z aplikacji zoptymalizowanej za pomocą R8. (Pamiętaj, że w AGP 9.0 to ulepszyliśmy).
Zmniejszanie zasobów dodatkowo zmniejsza rozmiar aplikacji przez usuwanie nieużywanych zasobów, takich jak pliki XML i elementy rysunkowe.
Dzięki tym działaniom optymalizator R8 skraca czas uruchamiania aplikacji, umożliwia płynniejsze renderowanie interfejsu z mniejszą liczbą spowolnionych i zamrożonych klatek oraz poprawia ogólne wykorzystanie zasobów na urządzeniu.
Studium przypadku: wzrost wydajności Reddita dzięki R8
Aby zilustrować, jak R8 może zwiększyć wydajność, przyjrzyjmy się przykładowi z Reddita. Po włączeniu R8 w trybie pełnym aplikacja Reddit na Androida odnotowała znaczną poprawę wydajności w różnych obszarach.
Podpis: Jak R8 zwiększył wydajność aplikacji Reddit
Zespół zaobserwował 40% szybsze uruchamianie „na zimno”, 30% mniej błędów typu „Aplikacja nie odpowiada” (ANR), 25% lepsze renderowanie klatek i 14% mniejszy rozmiar aplikacji.
Te ulepszenia są kluczowe dla zadowolenia użytkowników. Szybsze uruchamianie oznacza krótsze oczekiwanie i szybszy dostęp do treści. Mniejsza liczba błędów ANR oznacza bardziej stabilną i niezawodną aplikację, co zmniejsza frustrację użytkowników. Płynniejsze renderowanie klatek eliminuje zacinanie się interfejsu, dzięki czemu przewijanie i animacje są płynne i szybkie. Ten pozytywny wpływ techniczny był też wyraźnie widoczny w opiniach użytkowników.
Więcej informacji o tych ulepszeniach znajdziesz na naszym blogu.
Nietechniczne skutki uboczne korzystania z R8
Współpracując z partnerami, zauważyliśmy, że te ulepszenia techniczne mają bezpośredni wpływ na zadowolenie użytkowników i mogą się przełożyć na utrzymanie użytkowników, zaangażowanie i długość sesji. Na zaangażowanie użytkowników, które można mierzyć za pomocą liczby aktywnych użytkowników dziennie, tygodniowo lub miesięcznie, pozytywnie wpłynęły też ulepszenia techniczne. Widzimy, że oceny aplikacji w Sklepie Play rosną wraz z wdrażaniem R8. Udostępnienie tych informacji właścicielom produktów, dyrektorom ds. technicznych i osobom decyzyjnym może przyspieszyć działanie aplikacji.
Nazwijmy to po imieniu: świadoma optymalizacja skuteczności to zaleta.
Wskazówki dotyczące aplikacji o większej skuteczności
Zauważyliśmy, że nasze wskazówki dla deweloperów dotyczące R8 wymagają ulepszenia. Zaczęliśmy więc działać. Wskazówki dla deweloperów dotyczące optymalizatora R8 są teraz bardziej praktyczne i zawierają kompleksowe informacje o tym, jak włączyć i debugować R8.
Dokumentacja zawiera ogólną strategię wdrażania, podkreślając znaczenie wyboru bibliotek przyjaznych optymalizacji i stopniowego wdrażania funkcji R8 w celu zapewnienia stabilności. Takie podejście etapowe pozwala bezpiecznie korzystać z zalet R8, a jednocześnie zapewnia wskazówki dotyczące problemów, które trudno debugować.
Znacznie rozszerzyliśmy wskazówki dotyczące reguł Keep, które są głównym mechanizmem sterowania optymalizatorem R8. Dodaliśmy sekcję, w której wyjaśniamy, czym są reguły przechowywania, jak je stosować oraz jak je tworzyć i utrzymywać zgodnie ze sprawdzonymi metodami. Podajemy też praktyczne przykłady użycia, które pomogą Ci zrozumieć, jak prawidłowo zapobiegać usuwaniu przez R8 kodu potrzebnego w czasie działania, np. kodu, do którego dostęp uzyskuje się za pomocą odbicia lub interfejsu natywnego JNI.
Dokumentacja obejmuje teraz również najważniejsze dalsze kroki i zaawansowane scenariusze. Dodaliśmy sekcję testowania i rozwiązywania problemów, aby umożliwić Ci weryfikowanie wzrostu wydajności i usuwanie potencjalnych problemów. W sekcji Zaawansowane konfiguracje znajdziesz informacje o kierowaniu na konkretne warianty kompilacji, dostosowywaniu zasobów, które mają zostać zachowane lub usunięte, oraz specjalne instrukcje optymalizacji dla autorów bibliotek. Dzięki temu możesz udostępniać innym deweloperom zoptymalizowane i kompatybilne z R8 pakiety.
Wykorzystaj pełen potencjał optymalizatora R8
Od wersji 8.0 wtyczki Androida do obsługi Gradle optymalizator R8 domyślnie używa „trybu pełnego”. Jeśli projekt jest rozwijany od wielu lat, może nadal zawierać starszą flagę, która wyłącza tę funkcję. Sprawdź, czy w pliku gradle.properties nie ma tego wiersza, i usuń go.
android.enableR8.fullMode=false // delete this line to enable R8's full potential
Teraz sprawdź, czy w pliku build.gradle.kts aplikacji w przypadku wersji do publikacji masz włączony kompilator R8. Włącza się je przez ustawienie wartości true w polach isMinifyEnabled i isShrinkResources. Na tym etapie możesz też przekazać domyślne i niestandardowe pliki konfiguracyjne.
release {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"keep-rules.pro"
)
}Studium przypadku: ulepszenia wydajności Disney+
Inżynierowie z Disney+ dbają o wydajność aplikacji i optymalizują wrażenia użytkowników. Czasami nawet pozornie niewielkie zmiany mogą mieć ogromny wpływ. Podczas sprawdzania konfiguracji R8 zespół zauważył, że używana jest flaga -dontoptimize. Został on wprowadzony przez domyślny plik konfiguracji, który jest nadal używany w wielu aplikacjach.
Po zastąpieniu proguard-android.txt elementem proguard-android-optimize.txt zespół Disney+ zaobserwował znaczną poprawę wydajności aplikacji.
Po wdrożeniu nowej wersji aplikacji zawierającej tę zmianę Disney+ odnotował o 30% szybsze uruchamianie aplikacji i o 25% mniej błędów ANR widocznych dla użytkowników.
Obecnie wiele aplikacji nadal używa pliku proguard-android.txt, który zawiera flagę -dontoptimize. Dlatego wprowadzamy ulepszenia w naszych narzędziach.
Pomoc dotycząca narzędzi
Począwszy od Androida Studio Narwhal 3 z pakietem nowych funkcji, podczas korzystania z proguard-android.txt będziesz widzieć ostrzeżenie lintowania.
Od AGP 9.0 całkowicie wycofujemy obsługę tego pliku. Oznacza to, że musisz przejść na proguard-android-optimize.txt.
Zainwestowaliśmy też w nowe funkcje Android Studio, aby debugowanie kodu zoptymalizowanego przez R8 było łatwiejsze niż kiedykolwiek wcześniej. Od wersji AGP 9.0 możesz automatycznie odszyfrowywać ślady stosu w logcat w Android Studio w przypadku kompilacji przetwarzanych przez R8. Pomaga to wskazać dokładną linię kodu, która powoduje problem, nawet w w pełni zoptymalizowanej aplikacji. Więcej informacji na ten temat znajdziesz w jutrzejszym poście na blogu w ramach Tygodnia Android Performance Spotlight.
Następne kroki
Obejrzyj na YouTube wprowadzenie do optymalizatora R8 w ramach Tygodnia wyróżnień za skuteczność.
📣 Podejmij wyzwanie dotyczące skuteczności!
Czas przekonać się o korzyściach.
Zachęcamy do włączenia w swojej aplikacji trybu pełnego R8 już dziś.
- Aby rozpocząć, zapoznaj się z naszymi przewodnikami dla deweloperów: włącz optymalizację aplikacji.
- Sprawdź, czy nadal używasz znaku
proguard-android.txt, i zastąp go znakiemproguard-android-optimize.txt. - Następnie zmierzyć wpływ. Nie tylko poczuj różnicę, ale też ją sprawdź. Aby zmierzyć wzrost wydajności, dostosuj kod z naszej przykładowej aplikacji do testów porównawczych na GitHubie i zmierz czasy uruchamiania przed i po zmianach.
Jesteśmy przekonani, że zauważysz znaczną poprawę wyników aplikacji. W przypadku pytań dotyczących włączania R8 lub rozwiązywania problemów z nim używaj hashtagu #optimizationEnabled. Chętnie Ci pomożemy.
Przygotuj pytania na sesję „Ask Android” w piątek
Jeśli masz pytania dotyczące wydajności, użyj tagu społecznościowego #AskAndroid. Przez cały tydzień będziemy śledzić Twoje pytania i odpowiemy na kilka z nich podczas sesji „Zapytaj Androida” w piątek 21 listopada. Jutro przyjrzymy się dokładniej debugowaniu i rozwiązywaniu problemów. Na razie jednak zacznij od R8 i przyspiesz rozwój swojej aplikacji.
-
Wydarzenia i programyOd podstawowych funkcji optymalizatora R8 i optymalizacji opartej na profilu po zwiększenie wydajności za pomocą Jetpack Compose i nowy przewodnik po ulepszaniu wydajności aplikacji – omówiliśmy narzędzia, które wymagają niewielkiego nakładu pracy, a przynoszą duże korzyści w zakresie tworzenia wydajnych aplikacji.
Ben Weiss, Sara Hamilton • Czas czytania: 3 minuty -
Wydarzenia i programyTwórz aplikacje na przyszłość w ramach programu Android XR Developer Catalyst – zgłoś się już teraz!
Otwieramy nabór do programu Android XR Developer Catalyst Program, czyli specjalnej inicjatywy, która ma przyspieszyć tworzenie aplikacji na Androida XR gotowych do wprowadzenia na rynek w ciągu najbliższego roku.
Czas czytania: 1 minuta -
Wydarzenia i programyHarmonogram Google I/O jest już dostępny.
Czas czytania: 1 minuta
Otrzymuj co tydzień najnowsze informacje o tworzeniu aplikacji na Androida na swoją skrzynkę odbiorczą.