| Ocena | Rekomendacja | |
|---|---|---|
|
AGP 7.2 i starsza (0 punktów)
|
Wiele narzędzi dotyczących skuteczności jest niedostępnych lub nieaktualnych.
Wersje AGP do wersji 7.2 nie obsługują profili podstawowych ani profili uruchamiania. Narzędzie do kompresji i optymalizacji jest też nieaktualne i nie zapewnia najnowszych ulepszeń wydajności. Jest to ogromna strata w zakresie wpływu na wydajność uruchamiania i działania aplikacji. |
Natychmiast zaktualizuj do nowszej wersji AGP, aby uzyskać lepszą obsługę narzędzi do pomiaru wydajności.
Przejście na nowszą wersję AGP zapewni Ci dostęp do najnowszych narzędzi do optymalizacji wydajności. Dzięki temu poprawisz wydajność aplikacji i zadowolenie użytkowników. |
|
AGP 7.3 (1 punkt)
|
Bardzo ograniczone wsparcie dla narzędzi do analizy skuteczności o dużym wpływie na działanie usługi.
Wtyczka Android Gradle (AGP) w wersji 7.3 zapewnia podstawową obsługę profili referencyjnych. Chociaż profile bazowe działają, aplikacja nie będzie mogła w pełni wykorzystać ich możliwości. W tej wersji nie są też obsługiwane profile startupów. Narzędzia do kompresji i optymalizacji są też nieaktualne i nie zapewniają najnowszych ulepszeń wydajności. To jest niewykorzystana szansa na poprawę wydajności podczas uruchamiania i działania aplikacji. |
Przejdź na nowszą wersję AGP, aby uzyskać lepszą obsługę narzędzi do optymalizacji wydajności.
Przejście z wersji 7 na 8 może być przytłaczające, ale z perspektywy wydajności warto w nie inwestować. Przejście na nowszą wersję AGP zapewni Ci dostęp do najnowszych narzędzi do optymalizacji wydajności. Dzięki temu możesz spodziewać się znacznej poprawy wydajności podczas uruchamiania i w czasie działania. Dzięki temu poprawisz wydajność aplikacji i zadowolenie użytkowników. |
|
AGP 7,4–8,1 (5 punktów)
|
Ograniczone wsparcie dla narzędzi do analizy skuteczności o dużym wpływie na działanie usługi.
Wtyczka Android Gradle (AGP) w wersjach od 7.4 do 8.1 obsługuje profile podstawowe. Od wersji AGP 8.0 można używać profili podstawowych z dedykowaną wtyczką Gradle. Profile uruchamiania nie są obsługiwane do wersji AGP 8.2. Narzędzie do kompresji i optymalizacji jest też nieaktualne i nie zapewnia najnowszych ulepszeń wydajności. |
Przejdź na nowszą wersję AGP przy najbliższej okazji.
Przejście z wersji 7 na 8 może być przytłaczające, ale z perspektywy wydajności warto w nie inwestować. Przejście na nowszą wersję AGP zapewni Ci dostęp do najnowszych narzędzi do optymalizacji wydajności. Dzięki temu poprawisz działanie aplikacji podczas uruchamiania i w trakcie działania, a także zadowolenie użytkowników. |
|
AGP 8,2–8,5 (15 punktów)
|
Uzyskanie dostępu do narzędzi do optymalizacji o największym wpływie na wydajność.
Profile bazowe i profily uruchamiania są w pełni dostępne w wersji 8.2 lub nowszej wtyczki Androida do obsługi Gradle. Możesz też użyć wtyczki Gradle do obsługi profili referencyjnych. Niedawno wprowadziliśmy też usprawnienia w zakresie optymalizacji R8, które mają duży wpływ na działanie aplikacji. Przejdź na nowszą wersję AGP, aby uzyskać lepszą wydajność podczas uruchamiania i w czasie działania, ponieważ zawiera ona też nowszą wersję R8. |
Bądź na bieżąco z nowymi wersjami AGP.
Nowsze wersje AGP będą aktualizować aplikację zgodnie z najnowszymi narzędziami do optymalizacji wydajności. Pozwoli Ci to poprawić skuteczność aplikacji i zadowolenie użytkowników. Wydajność aplikacji podczas uruchamiania i w czasie działania można poprawić dzięki ulepszeniom R8, profilom bazowym i optymalizacji układu Dex. |
|
AGP 8.6+ (20 punktów)
|
Pełne wsparcie w zakresie narzędzi do zwiększania wydajności
Dzięki najnowszej wersji AGP aplikacja może w pełni korzystać z najnowszych narzędzi do optymalizacji wydajności. Ulepszenia w ramach R8, profili bazowych i optymalizacji układu Dex są w pełni obsługiwane. Używaj tych narzędzi, aby zwiększyć wydajność aplikacji i zadowolenie użytkowników. |
Trzymaj tak dalej.
Bądź na bieżąco z najnowszymi wersjami AGP, aby mieć pewność, że aplikacja zawsze korzysta z najnowszych narzędzi do optymalizacji wydajności. Upewnij się, że profil startowy jest prawidłowo skonfigurowany, a profil bazowy obejmuje najbardziej istotne ścieżki użytkownika. Sprawdź też, czy konfiguracja R8 działa zgodnie z oczekiwaniami. Aby dowiedzieć się, jak poprawić wydajność aplikacji w czasie jej działania, zapoznaj się z ogólnymi wskazówkami dotyczącymi wydajności. |
| Ocena | Rekomendacja | |
|---|---|---|
|
Nie włączono (0 punktów)
|
Ta aplikacja nie ma wielu ulepszeń wydajności.
Nieużywanie skracania i optymalizowania kodu za pomocą R8 to ogromna strata możliwości poprawy wydajności aplikacji. Wiele ulepszeń pod maską jest dostępnych tylko wtedy, gdy włączona jest opcja R8. |
Niezwłocznie włącz R8, aby uzyskać znaczne poprawy wydajności.
Jak najszybciej włącz optymalizacje R8. Pozwoli to na wiele ulepszeń wydajności. Następnie wróć tutaj, aby wykonać kolejny test i uzyskać więcej wskazówek. |
|
Tryb zgodności lub główne wyjątki (-dontoptimize, -dontshrink) (5 punktów)
|
Wyłączenie optymalizacji to ogromna strata możliwości poprawy wydajności aplikacji.
Wydajność tej aplikacji w czasie działania nie jest w pełni zoptymalizowana. To ogromna strata możliwości poprawy wydajności aplikacji. |
Odblokuj potencjał wydajności, włączając optymalizacje R8.
Jak najszybciej włącz optymalizacje R8 i usuń wszystkie wyjątki -dontoptimize i -dontshrink. Umożliwi to też włączenie innych optymalizacji, takich jak optymalizacja układu Dex. Gdy R8 zostanie włączone w trybie pełnym, przeprowadź ponownie ocenę, aby uzyskać więcej wskazówek. |
|
R8 w trybie pełnym, zminimalizowanym, zoptymalizowanym i z zmniejszonymi zasobami (20 punktów)
|
Wysoki potencjał wydajności
Włączenie optymalizacji R8 spowoduje, że Twoja aplikacja będzie w idealnej sytuacji do poprawy wydajności dzięki optymalizacji, zaciemnieniu i skracaniu kodu. Ta aplikacja jest gotowa do dalszego zwiększania wydajności uruchamiania dzięki optymalizacji układu Dex. |
Sprawdź, czy reguły przechowywania są aktualne.
Wraz z rozwojem aplikacji zasady R8 należy aktualizować, aby aplikacja była nadal w pełni zoptymalizowana. skupić się na poprawie skuteczności innych obszarów. Czy zapoznałeś/zapoznałaś się z artykułem Profil startowy i optymalizacja układu Dex? |
Profile bazowe zwiększają szybkość wykonywania kodu od pierwszego uruchomienia, zapewniając ulepszenia wydajności przy każdej nowej instalacji aplikacji i każdej aktualizacji. Optymalizacja na podstawie profilu (PGO) umożliwia aplikacjom optymalizację uruchamiania, ogranicza problemy z renderowaniem i poprawia ogólną wydajność w czasie działania od pierwszego uruchomienia dla użytkowników końcowych. Czy profil podstawowy został utworzony i używany do uruchamiania aplikacji?
| Ocena | Rekomendacja | |
|---|---|---|
|
Brak / Nieznana (0 punktów)
|
Brak profilu bazowego to ogromna strata.
Profile bazowe mogą przyspieszyć wykonywanie kodu podczas pierwszego uruchomienia o około 30%, ponieważ unikają interpretacji i etapów kompilacji just-in-time (JIT) dla uwzględnionych ścieżek kodu. Sprawdź, czy Twoja aplikacja ma profil podstawowy, a jeśli nie, wprowadź tę technologię. |
Należy pilnie wdrożyć profile podstawowe.
Profile bazowe zwiększają szybkość wykonywania kodu podczas pierwszego uruchomienia o około 30%, ponieważ unikają interpretacji i etapów kompilacji just-in-time (JIT) dla uwzględnionych ścieżek kodu. Zapoznaj się z wytycznymi dotyczącymi wdrażania tych zmian i ponownie zmierz swoje umiejętności, aby uzyskać nowy wynik. |
|
Ręcznie, raz lub rzadko (2 punkty)
|
Automatyzacja jest kluczowa dla utrzymywania aktualności profili bazowych.
Ręczne aktualizowanie profili podstawowych może być pomijane. Zwłaszcza jeśli jest to jednorazowe działanie. Profile bazowe powinny być generowane na potrzeby każdej wersji, aby zmaksymalizować potencjał wzrostu wydajności podczas uruchamiania aplikacji i jej działania. |
Zainwestuj w automatyzację tworzenia profilu podstawowego.
Wtyczka Gradle do profilu bazowego to zalecany sposób automatyzacji tworzenia profilu bazowego. Możesz skonfigurować narzędzie tak, aby automatycznie generowało nowy profil dla określonych typów kompilacji, takich jak warianty lub kompilacje wersji. Aby korzystać z optymalizacji układu Dex, musisz zautomatyzować generowanie profili. |
|
Ręcznie w przypadku każdego wydania (5 punktów)
|
Automatyzacja jest kluczowa dla utrzymywania aktualności profili bazowych.
Ręczne aktualizowanie profili podstawowych może być pomijane. Nieaktualny profil podstawowy nie pomaga w poprawie uruchamiania aplikacji ani jej wydajności podczas działania. |
Zainwestuj w automatyzację tworzenia profilu podstawowego.
Wtyczka Gradle do profilu bazowego to zalecany sposób automatyzacji tworzenia profilu bazowego. Możesz skonfigurować narzędzie tak, aby automatycznie generowało nowy profil dla określonych typów kompilacji, takich jak warianty lub kompilacje wersji. |
|
Automatyczne w przypadku każdego wydania (15 punktów)
|
Automatyzacja ułatwia aktualizowanie profili punktów odniesienia.
Aktualizowany profil podstawowy to świetny sposób na poprawę uruchamiania i wydajności aplikacji. Automatyczne wykonywanie tej czynności w przypadku każdej wersji jest niemal idealnym sposobem na zapewnienie wysokiej jakości profili podstawowych. |
Zadbaj o wysoki poziom pokrycia profilu podstawowego. Rozważ generowanie profili co noc.
Profile bazowe są przydatne tylko wtedy, gdy są aktualne. Możesz je generować co noc, aby wcześnie wykrywać problemy i upewnić się, że generowanie profili działa prawidłowo, gdy potrzebne jest wydanie. Aby dowiedzieć się więcej o automatyzacji tworzenia profilu bazowego, zapoznaj się z wtyczką Gradle do profilu bazowego. |
|
Automatyzacja kompilacji i wersji nocnych (20 punktów)
|
To najlepszy sposób na aktualizowanie profili punktów odniesienia.
Profil podstawowy jest generowany co noc i dla każdej wersji, aby był zawsze aktualny i gotowy do użycia w celu poprawy uruchamiania aplikacji i jej wydajności podczas działania, gdy tylko zostanie opublikowana nowa wersja. Dzięki temu Twoja aplikacja będzie działać lepiej. Brawo! |
Kontynuować ulepszanie zasięgu Profilu Podstawowego.
Udało Ci się zautomatyzować generowanie profilu referencyjnego dla tej aplikacji. Tak trzymaj. Pamiętaj, aby ścieżki użytkownika objęte profilem podstawowym były regularnie aktualizowane i rozszerzane wraz z rozwojem aplikacji. Dzięki temu profil podstawowy będzie zawsze aktualny i gotowy do użycia, aby poprawić uruchamianie aplikacji i jej wydajność podczas działania. |
Profile bazowe eliminują konieczność uruchamiania kompilacji Just-In-Time podczas korzystania z funkcji. Zwiększa to wydajność renderowania w czasie działania. Dodanie profili podstawowych dla kluczowych ścieżek użytkownika może poprawić ogólną skuteczność aplikacji.
Ile ścieżek użytkowników obejmują profile podstawowe?| Ocena | Rekomendacja | |
|---|---|---|
|
Brak / Nieznana (0 punktów)
|
Brak ulepszeń wydajności w czasie wykonywania.
Wydajność aplikacji w czasie działania można zwiększyć, stosując profile referencyjne w przypadku kluczowych ścieżek użytkownika. Stosując profile bazowe tylko podczas uruchamiania aplikacji, tracisz świetną okazję do zwiększenia wydajności w czasie działania i zadowolenia użytkowników. |
Aby poprawić wydajność podczas działania, należy pilnie dodać profile podstawowe.
Stosuj profile podstawowe na potrzeby uruchamiania aplikacji i kluczowych ścieżek użytkowników. Są to ścieżki używane przez dużą liczbę użytkowników i mające kluczowe znaczenie dla funkcjonalności aplikacji. Wróć i ponownie wykonaj test, aby uzyskać nowy wynik i więcej wskazówek. |
|
Uruchomienie aplikacji + 1 ścieżka użytkownika (5 punktów)
|
Brak ulepszeń wydajności w czasie wykonywania.
Wydajność aplikacji w czasie działania można zwiększyć, stosując profile referencyjne w przypadku kluczowych ścieżek użytkownika. Stosując profile bazowe tylko do uruchamiania aplikacji lub do pojedynczej ścieżki użytkownika, tracisz świetną okazję do zwiększenia wydajności w czasie działania i zadowolenia użytkowników. |
Stosuj profile podstawowe na potrzeby różnych ścieżek użytkowników.
Używaj profili podstawowych, aby śledzić więcej ścieżek użytkownika. Dzięki temu aplikacja będzie stale ulepszać wydajność w czasie działania i zadowolenie użytkowników. Wróć i ponownie wykonaj test, aby uzyskać nowy wynik i więcej wskazówek. |
|
Uruchamianie aplikacji + 2 ścieżki użytkownika (10 punktów)
|
Profil podstawowy zapewnia większą poprawę wydajności.
Dzięki zastosowaniu profili podstawowych w większej liczbie ścieżek użytkownika aplikacja może poprawić wydajność w czasie działania i zadowolenie użytkowników.Wydajność aplikacji w czasie działania można poprawić, stosując profile podstawowe w przypadku kluczowych ścieżek użytkownika. |
Kontynuuj stosowanie profili podstawowych na kolejnych ścieżkach użytkowników.
Zidentyfikuj więcej ścieżek użytkowników, które są kluczowe dla funkcjonalności aplikacji, i użyj w ich przypadku profili bazowych. Dzięki temu aplikacja będzie stale ulepszać wydajność w czasie działania i zadowolenie użytkowników. Wróć i ponownie wykonaj test, aby uzyskać nowy wynik i więcej wskazówek. |
|
Uruchomienie aplikacji + 3 ścieżki użytkownika (15 punktów)
|
Wyjątkowa skuteczność profilu podstawowego.
Uwzględnienie uruchamiania aplikacji i kilku kluczowych ścieżek użytkownika w profilach podstawowych to świetny sposób na poprawę wydajności i zadowolenia użytkowników. Możliwe, że ścieżki użytkowników, które mogą być objęte profilami podstawowymi, są bardziej zróżnicowane. Ta aplikacja jest już w bardzo dobrej kondycji pod względem pokrycia w ramach profilu podstawowego. Tak trzymaj. |
Zwiększ zasięg profilu podstawowego, aby w pełni wykorzystać potencjał skuteczności.
Kontynuowanie promowania korzystania z profilu podstawowego. Rozważ ulepszenie implementacji R8, aby zmniejszyć rozmiar kodu i poprawić ogólną wydajność aplikacji w czasie jej działania. Rozważ też zastosowanie optymalizacji układu Dex, aby jeszcze bardziej poprawić wydajność uruchamiania aplikacji. |
System kompilacji używa profili uruchamiania, aby optymalizować klasy i metody, które zawierają, poprzez polepszanie układu kodu w plikach DEX pliku APK. Dzięki profilom uruchamiania aplikacja uruchamia się zwykle o 15–30% szybciej niż w przypadku samych profili referencyjnych.
Czy aplikacja korzysta z profili uruchamiania, aby zoptymalizować układ Dex?| Ocena | Rekomendacja | |
|---|---|---|
|
Nieużywane / nieznane (0 punktów)
|
Ogromna szansa na poprawę wydajności uruchamiania aplikacji.
System kompilacji używa profili uruchamiania, aby optymalizować klasy i metody, które zawierają, poprzez polepszanie układu kodu w plikach DEX pliku APK. Dzięki profilom uruchamiania aplikacja uruchamia się zwykle od 15% do 30% szybciej niż w przypadku samych profili referencyjnych. |
Niezwłocznie zacznij stosować Profile Startupów.
Zastosowanie optymalizacji układu Dex za pomocą profili startowych. Pomoże to poprawić wydajność uruchamiania aplikacji i zadowolenie użytkowników. Korzystanie z optymalizacji układu Dex wymaga użycia AGP 8.2 lub nowszej wersji oraz włączenia kompresji/R8. |
|
Główny punkt wejścia (10 punktów)
|
Optymalizowana wydajność uruchamiania w przypadku głównego punktu wejścia.
Korzystanie z profili uruchamiania jako głównego punktu wejścia to świetny sposób na poprawę szybkości uruchamiania aplikacji. Zwiększona wydajność aplikacji pozytywnie wpływa na wrażenia użytkowników. Tak trzymaj. |
Rozważ uwzględnienie większej liczby punktów wejścia.
Główny punkt wejścia do aplikacji jest najważniejszym punktem, który należy uwzględnić w profilu startowym. Jeśli ta aplikacja ma więcej punktów wejścia, rozważ uwzględnienie ich również w profilach uruchamiania. Mogą to być powiadomienia lub dodatkowe ikony w menu. |
|
Większość punktów wejścia (15 punktów)
|
Uwzględnienie najczęściej używanych punktów wejścia to świetny sposób na poprawę wydajności uruchamiania aplikacji.
Optymalizacja uruchamiania aplikacji zwiększa zadowolenie użytkowników. Dzięki zastosowaniu profili uruchamiania w przypadku większości punktów wejścia aplikacja ma świetną wydajność uruchamiania z poziomu narzędzi. Tak trzymaj. |
Sprawdź inne ulepszenia wydajności i zapobiegaj regresji.
Upewnij się, że profil uruchamiania jest generowany automatycznie dla każdej wersji, automatyzując zadanie Dex Layout Optimizations za pomocą wtyczki Gradle do generowania profili referencyjnych. |
| Ocena | Rekomendacja | |
|---|---|---|
|
Nieużywanie funkcji Compose (5 punktów)
|
Zacznij korzystać z edytora wiadomości
Jetpack Compose to nowoczesny zestaw narzędzi Androida do tworzenia natywnych interfejsów użytkownika. Upraszcza i przyspiesza tworzenie interfejsu użytkownika na Androidzie. Szybko twórz aplikacje dzięki mniejszej ilości kodu, zaawansowanym narzędziom i intuicyjnym interfejsom Kotlin API. |
Rozpocznij migrację interfejsu użytkownika do Jetpack Compose
Jetpack Compose umożliwia interoperacyjność z dotychczasowym systemem Views. Istnieje kilka strategii migracji części interfejsu użytkownika do Compose i korzystania z jego zalet. Zapoznaj się z naszą dokumentacją dotyczącą strategii migracji lub skorzystaj z naszego ćwiczenia z programowania, aby przetestować praktyczne zastosowanie. |
|
Skomponuj 2022.10.00 – 2023.10.01 (1 punkt)
|
Brak wielu nowych funkcji i usprawnień w zakresie wydajności.
Jeśli nie zaktualizujesz Jetpack Compose, nie będziesz mieć dostępu do nowych funkcji i ulepszeń. Jetpack Compose został zaprojektowany tak, aby był niezależny od systemu Android, co daje deweloperom możliwość samodzielnego decydowania o przechodzeniu na nowszą wersję. |
Jak najszybciej przejdź na nowszą wersję
Nasze priorytetem jest wydajność, a uaktualnienie pozwoli Ci znacznie ją poprawić. Zauważyliśmy poprawę wydajności przewijania o około 20%, skrócenie czasu uruchamiania o 12% oraz poprawę wydajności komponentów tekstowych o 22%. Więcej informacji o tym, jakie usprawnienia zostały wprowadzone w Jetpack Compose 2024.01.00, znajdziesz w poście na blogu o tej wersji. |
|
Skomponuj 2024.01.00 – 2024.08.00 (2 punkty)
|
Najnowsza wersja Jetpack Compose zapewnia lepszą wydajność i nowe funkcje
Jeśli nie korzystasz z najnowszych wersji Jetpack Compose, nie otrzymujesz wszystkich poprawek błędów, ulepszeń wydajności i nowych funkcji, nad którymi pracujemy, aby ułatwić Ci tworzenie pięknych interfejsów użytkownika. |
Uaktualnij do najnowszej wersji, aby uzyskać większą wydajność
Po przejściu na najnowszą wersję Compose udało nam się uzyskać w naszych testach porównawczych dodatkowe 17-procentowe przyspieszenie czasu do pierwszego piksela. W tej wersji włączyliśmy też domyślnie nowy tryb intensywnego pomijania, który pozwala znacznie ograniczyć liczbę niepotrzebnych kompozycji. Oprócz tego ulepsziliśmy interfejs API indication, aby umożliwić leniwie tworzenie fal, zoptymalizowaliśmy wewnętrzną reprezentację Compose, aby uzyskać bardziej wydajną strukturę danych, i zaczęliśmy generować bardziej wydajny kod. |
|
najnowsza stabilna wersja Compose (5 punktów),
|
Gratulacje! Ta aplikacja jest zaktualizowana do najnowszej stabilnej wersji Compose.
Korzystanie z najnowszej wersji Compose to świetny sposób na korzystanie z ulepszeń skuteczności w każdej nowej wersji. |
Trzymaj tak dalej
Bądź na bieżąco z najnowszymi stabilnymi wersjami Compose, aby nadal korzystać z ulepszeń wydajności i poprawek błędów. W tej chwili nie musisz nic robić. |
reportFullyDrawn() za pomocą FullyDrawnReporter lub ReportDrawn() informuje system, że aplikacja jest gotowa do interakcji z użytkownikiem.
Umożliwia to dostęp do danych TTFD. Te dane można wykorzystać do porównań i tworzenia ulepszonych profili startupów.
| Ocena | Rekomendacja | |
|---|---|---|
|
Nieużywanie funkcji reportFullyDrawn() lub FullyDrawnReporter (0 punktów)
|
Nie wiesz, jakie zmiany i ulepszenia zostały wprowadzone pod maską.
Nieuwzględnianie w raportach momentu, w którym aplikacja jest gotowa do użycia, to zmarnowana szansa na dokładniejsze poznanie czasu jej uruchamiania. Dzięki temu interfejsowi API system Android może udostępniać bardziej szczegółowe dane o wydajności i umożliwia monitorowanie czasu pełnego wyświetlenia. |
Aby uzyskać bardziej szczegółowe dane o skuteczności, użyj metody reportFullyDrawn() lub klasy FullyDrawnReporter.
Użyj interfejsu API FullyDrawnReporter, aby zgłosić, że aplikacja jest gotowa do użycia. Dzięki temu uzyskasz dostęp do bardziej szczegółowych danych o skuteczności i będziesz mieć możliwość monitorowania czasu pełnego wyświetlenia. |
|
Korzystanie z metody reportFullyDrawn() lub klasy FullyDrawnReporter (5 punktów)
|
Dostęp do bardziej szczegółowych danych o skuteczności uruchamiania aplikacji.
Ta aplikacja używa interfejsu API FullyDrawnReporter do zgłaszania, że jest gotowa do użycia. Dzięki temu możesz uzyskać bardziej szczegółowe dane o skuteczności i monitorować czas pełnego wyświetlenia. |
Używaj informacji z TTFD, aby analizować i ulepszać wydajność uruchamiania aplikacji.
Platforma Android oraz Konsola Google Play udostępniają szczegółowe dane o wydajności dotyczące czasu pełnego wyświetlenia. Korzystaj z tych danych, aby lepiej rozumieć i ulepszać wydajność uruchamiania aplikacji. |
(0 z 7 pytań z odpowiedziami)