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 wymagają niewielkiego wysiłku, a mogą poprawić skuteczność aplikacji – włączenia optymalizatora R8 w trybie pełnym.
Pewnie znasz już R8 jako narzędzie do zmniejszania rozmiaru aplikacji. Świetnie usuwa 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ł 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 skuteczność aplikacji
Przyjrzyjmy się najważniejszym krokom, które optymalizator R8 wykonuje, aby zwiększyć wydajność aplikacji.
Usuwanie nieużywanego kodu to najważniejszy krok w celu zmniejszenia 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 skuteczność 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 skuteczności Reddita dzięki R8
Aby pokazać, jak R8 może zwiększyć skuteczność aplikacji, przyjrzyjmy się przykładowi z Reddita. Po włączeniu R8 w trybie pełnym aplikacja Reddit na Androida znacznie zwiększyła skuteczność 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. Ulepszenia techniczne pozytywnie wpłynęły też na 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. 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 decyzyjnym może przyspieszyć zwiększanie skuteczności aplikacji.
Nazwijmy to po imieniu: świadoma optymalizacja skuteczności to cnota.
Wskazówki dotyczące zwiększania skutecznoś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 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, które trudno debugować.
Znacznie rozszerzyliśmy nasze wskazówki dotyczące reguł zachowywania, które są głównym mechanizmem sterowania optymalizatorem R8. Teraz udostępniamy sekcję dotyczącą reguł zachowywania, sposobu 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 skutecznoś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 ten tryb. 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, ustawiając wartości isMinifyEnabled i isShrinkResources na true. 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 skutecznoś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 skutecznoś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. Dlatego wprowadzamy ulepszenia w naszych narzędziach.
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ąć, postępuj zgodnie 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 zbadaj wpływ. Nie tylko poczuj różnicę, ale też ją sprawdź. Aby zmierzyć wzrost skuteczności, dostosuj kod z naszej przykładowej aplikacji Macrobenchmark na GitHubie , aby zmierzyć czas uruchamiania przed i po zmianie.
Jesteśmy przekonani, że zauważysz znaczną poprawę skutecznoś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 monitorować Twoje pytania i odpowiemy na kilka z nich podczas sesji Ask Android na temat skuteczności w piątek 21 listopada. Bądź na bieżąco, bo jutro jeszcze bardziej zagłębimy się w debugowanie i rozwiązywanie problemów. Na razie jednak 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ększenie skuteczności dzięki Jetpack Compose i nowy przewodnik dotyczący zwiększania skuteczności aplikacji – omówiliśmy narzędzia, które wymagają niewielkiego wysiłku, a mogą znacznie zwiększyć skuteczność aplikacji.
Ben Weiss, Sara Hamilton • Czas czytania: 3 minuty
-
Wydarzenia i programy
Otwieramy nabór do programu Android XR Developer Catalyst, czyli 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 minuta
-
Wydarzenia i programy
Harmonogram Google I/O jest już dostępny.
Czas czytania: 1 minuta
Bądź na bieżąco
Otrzymuj co tydzień najnowsze informacje o tworzeniu aplikacji na Androida na swoją skrzynkę odbiorczą.