Wydarzenia i programy
Zmniejszanie, optymalizowanie i przyspieszanie aplikacji za pomocą R8
Czas czytania: 5 minut
Zmniejszanie, optymalizowanie i przyspieszanie aplikacji za pomocą R8
Witamy w pierwszym dniu Tygodnia wyróżnień za skuteczność Androida.
Zaczynamy od jednej z najbardziej skutecznych zmian, które możesz wprowadzić, aby poprawić wydajność aplikacji, a która nie wymaga dużego wysiłku. Jest to włączenie optymalizatora R8 w trybie pełnym.
Pewnie znasz już R8 jako narzędzie do zmniejszania rozmiaru aplikacji. Doskonale usuwa ono nieużywany kod i zasoby, zmniejszając rozmiar aplikacji. Jednak jego prawdziwa moc, w której jest naprawdę g-R8, to optymalizacja.
Gdy włączysz tryb pełny i zezwolisz na optymalizacje, R8 przeprowadzi dogłębne optymalizacje całego programu, przepisując kod tak, aby był zasadniczo bardziej wydajny. To nie jest tylko drobna zmiana.
Po przeczytaniu tego artykułu obejrzyj na YouTube wprowadzenie do optymalizatora R8 w ramach Tygodnia wyróżnień za skuteczność.
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 zmniejszaniu rozmiaru aplikacji. W tej fazie optymalizator R8 usuwa nieużywany kod z bibliotek, od których zależy Twoja aplikacja, oraz martwy kod z Twojej bazy kodu.
Wstawianie kodu metody 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. W tym momencie nie mają znaczenia wszystkie Twoje piękne abstrakcje, takie jak interfejsy i hierarchie klas, które 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 mieć klasę o nazwie a. To właśnie powoduje najwięcej zamieszania podczas odczytywania śladów stosu z aplikacji zoptymalizowanej przez R8. (Pamiętaj, że w AGP 9.0 wprowadziliśmy w tym zakresie ulepszenia!).
Zmniejszanie zasobów dodatkowo zmniejsza rozmiar aplikacji przez usuwanie nieużywanych zasobów, takich jak pliki XML i elementy rysunkowe.
Dzięki tym krokom optymalizator R8 skraca czas uruchamiania aplikacji, umożliwia płynniejsze renderowanie interfejsu, zmniejsza liczbę powolnych i zablokowanych klatek oraz poprawia ogólne wykorzystanie zasobów na urządzeniu.
Studium przypadku: zwiększenie wydajności Reddita dzięki R8
Aby pokazać, 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 znacznie zwiększyła wydajność w różnych obszarach.
Podpis: jak R8 zwiększył wydajność aplikacji Reddit
Zespół zaobserwował o 40% szybsze uruchamianie „na zimno”, o 30% mniej błędów typu „Aplikacja nie odpowiada” (ANR), o 25% lepsze renderowanie klatek i o 14% mniejszy rozmiar aplikacji.
Te ulepszenia mają kluczowe znaczenie dla zadowolenia użytkowników. Szybsze uruchamianie oznacza krótsze oczekiwanie i szybszy dostęp do treści. Mniejsza liczba błędów ANR sprawia, że aplikacja jest bardziej stabilna i niezawodna, co zmniejsza frustrację użytkowników. Płynniejsze renderowanie klatek eliminuje zacinanie się interfejsu, dzięki czemu przewijanie i animacje są płynne i responsywne. 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 używania R8
Podczas współpracy z partnerami zauważyliśmy, że te ulepszenia techniczne mają bezpośredni wpływ na zadowolenie użytkowników i mogą się przekładać na utrzymanie użytkowników, ich zaangażowanie i długość sesji. Regularność korzystania przez użytkowników, którą można mierzyć za pomocą liczby aktywnych użytkowników dziennie, tygodniowo lub liczby aktywnych użytkowników miesięcznie, również została pozytywnie wpłynięta przez ulepszenia techniczne. Zauważyliśmy też, że oceny aplikacji w Sklepie Play rosną w korelacji z wdrożeniem R8. Udostępnienie tych informacji właścicielom produktów, dyrektorom ds. technologii i osobom podejmującym decyzje może przyspieszyć zwiększanie wydajności aplikacji.
Nazwijmy to po imieniu: świadoma optymalizacja wydajności to cnota.
Wskazówki dotyczące zwiększania wydajności aplikacji
Dowiedzieliśmy się, że nasze wskazówki dla deweloperów dotyczące R8 wymagają ulepszenia. Wzięliśmy się więc do pracy. Wskazówki dla deweloperów dotyczące optymalizatora R8 są teraz znacznie bardziej praktyczne i zawierają kompleksowe informacje o włączaniu i debugowaniu R8.
Dokumentacja zawiera ogólną strategię wdrożenia, podkreślając znaczenie wyboru bibliotek przyjaznych optymalizacji oraz, co najważniejsze, stopniowego wdrażania funkcji R8, aby zapewnić stabilność. To podejście etapowe pozwala bezpiecznie korzystać z zalet R8, a jednocześnie zapewnia wskazówki dotyczące problemów trudnych do debugowania.
Znacznie rozszerzyliśmy nasze wskazówki dotyczące reguł zachowywania, które są podstawowym mechanizmem sterowania optymalizatorem R8. Teraz udostępniamy sekcję dotyczącą reguł zachowywania, ich stosowania oraz sprawdzonych metod ich pisania i utrzymywania. Podajemy też praktyczne i przydatne przypadki użycia oraz przykłady, które pomagają zrozumieć, jak prawidłowo uniemożliwić R8 usuwanie kodu potrzebnego w czasie działania, np. kodu, do którego uzyskuje się dostęp za pomocą refleksji lub interfejsu natywnego JNI.
Dokumentacja obejmuje teraz też najważniejsze dalsze kroki i zaawansowane scenariusze. Dodaliśmy sekcję dotyczącą testowania i rozwiązywania problemów, dzięki czemu możesz sprawdzić wzrost wydajności i debugować wszelkie potencjalne problemy. Sekcja dotycząca konfiguracji zaawansowanych wyjaśnia, jak kierować reklamy na określone warianty kompilacji, dostosowywać, które zasoby mają być zachowywane lub usuwane, oraz zawiera specjalne instrukcje optymalizacji dla autorów bibliotek, dzięki czemu możesz udostępniać zoptymalizowany i przyjazny dla R8 pakiet do użytku przez innych deweloperów.
Włączanie pełnego potencjału optymalizatora R8
Od wersji 8.0 wtyczki Androida do obsługi Gradle optymalizator R8 domyślnie używa „trybu pełnego”. Jeśli Twój projekt jest rozwijany od wielu lat, może nadal zawierać starszą flagę, która wyłącza tę funkcję. Sprawdź plik gradle.properties pod kątem tej linii i usuń ją.
android.enableR8.fullMode=false // delete this line to enable R8's full potential
Teraz sprawdź, czy włączyłeś R8 w pliku build.gradle.kts aplikacji w przypadku wariantu do publikacji. Włącza się go przez ustawienie wartości true dla 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: zwiększenie wydajności Disney+
Inżynierowie Disney+ inwestują w 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ła ona wprowadzona przez domyślny plik konfiguracyjny, który jest nadal używany w wielu aplikacjach.
Po zastąpieniu pliku proguard-android.txt plikiem proguard-android-optimize.txt zespół Disney+ zauważył znaczne zwiększenie wydajności aplikacji.
Po udostępnieniu użytkownikom nowej wersji aplikacji zawierającej tę zmianę zespół Disney+ zauważył o 30% szybsze uruchamianie aplikacji i o 25% mniej błędów ANR.
Obecnie wiele aplikacji nadal używa pliku proguard-android.txt, który zawiera flagę -dontoptimize. I tu właśnie wkraczają nasze ulepszenia narzędzi.
Obsługa narzędzi
Od wersji Android Studio Narwhal 3 Feature Drop podczas używania pliku proguard-android.txt będzie wyświetlane ostrzeżenie narzędzia lint.
Od wersji AGP 9.0 całkowicie wycofujemy obsługę tego pliku. Oznacza to, że musisz przejść na plik proguard-android-optimize.txt.
Zainwestowaliśmy też w nowe funkcje Android Studio , aby debugowanie kodu zoptymalizowanego przez R8 było łatwiejsze niż kiedykolwiek. Od wersji AGP 9.0 możesz teraz automatycznie usuwać zaciemnianie śladów stosu w logcat Android Studio w przypadku kompilacji przetworzonych przez R8, co pomoże Ci wskazać dokładną linię kodu powodującą problem, nawet w pełni zoptymalizowanej aplikacji. Więcej informacji na ten temat znajdziesz w jutrzejszym poście na blogu w ramach Tygodnia wyróżnień za skuteczność Androida.
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 na własne oczy.
Zachęcamy Cię do włączenia trybu pełnego R8 w swojej aplikacji już dziś.
- Aby zacząć, zapoznaj się z naszymi przewodnikami dla deweloperów: Włączanie optymalizacji aplikacji.
- Sprawdź, czy nadal używasz pliku
proguard-android.txt, i zastąp go plikiemproguard-android-optimize.txt. - Następnie zmierz wpływ. Nie tylko poczuj różnicę, ale też ją sprawdź. Aby zmierzyć wzrost wydajności, dostosuj kod z naszej przykładowej aplikacji Macrobenchmark na GitHubie , aby zmierzyć czas uruchamiania przed i po.
Jesteśmy przekonani, że zauważysz znaczną poprawę wydajności aplikacji. Jeśli masz pytania dotyczące włączania R8 lub rozwiązywania problemów z nim, użyj tagu #optimizationEnabled. Chętnie Ci pomożemy.
Zadaj pytania podczas sesji Ask Android w piątek
Jeśli masz pytania dotyczące skuteczności, użyj tagu #AskAndroid. Przez cały tydzień będziemy śledzić Twoje pytania i odpowiemy na kilka z nich podczas sesji Ask Android dotyczącej wydajności w piątek 21 listopada. Jutro opowiemy więcej o debugowaniu i rozwiązywaniu problemów. Na razie zacznij korzystać z R8 i przyspiesz działanie swojej aplikacji.
Czytaj dalej
-
Wydarzenia i programy
Od podstawowych możliwości optymalizatora R8 i optymalizacji z użyciem profili po zwiększanie wydajności za pomocą Jetpack Compose i nowy przewodnik dotyczący zwiększania wydajności aplikacji – omówiliśmy narzędzia, które wymagają niewielkiego wysiłku, a mają duży wpływ na tworzenie wydajnej aplikacji.
Ben Weiss, Sara Hamilton • Czas czytania: 3 min
-
Wydarzenia i programy
Otwieramy nabór do programu Android XR Developer Catalyst, czyli specjalnej inicjatywy mającej na celu przyspieszenie tworzenia aplikacji na Androida XR, które będą gotowe do uruchomienia w ciągu najbliższego roku.
Czas czytania: 1 min
-
Wydarzenia i programy
Harmonogram Google I/O jest już dostępny.
Czas czytania: 1 min
Bądź na bieżąco
Otrzymuj co tydzień najnowsze informacje o tworzeniu aplikacji na Androida na swoją skrzynkę odbiorczą.