Docieranie do nowych użytkowników oznacza obsługę coraz większej liczby wersji platformy Android i specyfikacji urządzeń. Aby zapewnić użytkownikom lepsze wrażenia, zoptymalizuj aplikację pod kątem typowych konfiguracji pamięci RAM oraz rozmiarów i rozdzielczości ekranu.
Obsługa różnych rozmiarów ekranu
Jeśli Twoja aplikacja obsługuje ekrany o różnych rozmiarach i rozdzielczościach, może zapewnić lepsze wrażenia miliardom użytkowników. W tej sekcji opisujemy kilka sposobów, w jakie możesz to zrobić.
Używaj pikseli niezależnych od gęstości (dp)
- Określanie wymiarów układu w pikselach nie sprawdza się, ponieważ różne ekrany mają różną gęstość pikseli. Ta sama liczba pikseli może więc odpowiadać różnym rozmiarom fizycznym na różnych urządzeniach.
- Aby temu zapobiec, Android obsługuje piksele niezależne od gęstości (dp), które odpowiadają fizycznemu rozmiarowi piksela przy 160 punktach na cal (gęstość mdpi).
- Definiowanie układów za pomocą jednostki dp zapewnia, że fizyczny rozmiar interfejsu użytkownika jest spójny niezależnie od urządzenia. Więcej informacji o sprawdzonych metodach korzystania z pikseli niezależnych od gęstości znajdziesz w przewodniku po Androidzie na temat obsługi wielu ekranów.
Testowanie tekstu i grafiki przy gęstościach ekranu ldpi i mdpi
- Sprawdź, czy tekst i grafika dobrze działają na ekranach o niskiej i średniej gęstości pikseli (ldpi i mdpi), ponieważ są to popularne gęstości pikseli, zwłaszcza na tańszych urządzeniach. Zwróć uwagę na tekst, który może być nieczytelny na ekranach o mniejszej gęstości pikseli, na których nie widać drobnych szczegółów.
- Urządzenia z ekranami o mniejszej gęstości pikseli mają zwykle niższą specyfikację sprzętową. Aby zapewnić dobrą wydajność aplikacji na tych urządzeniach, rozważ zmniejszenie lub wyeliminowanie dużych obciążeń związanych z przetwarzaniem grafiki, takich jak animacje i przejścia.
- Więcej informacji o obsłudze różnych gęstości znajdziesz w szkoleniu na temat Androida Obsługa różnych gęstości.
Testowanie układów na małych i średnich ekranach
- Sprawdź, czy układy skalują się w dół, testując je na mniejszych ekranach. W przypadku mniejszych ekranów należy bardzo starannie dobierać widoczne elementy interfejsu, ponieważ jest na nie mało miejsca.
- Wytyczne Material Design opisują dane i linie pomocnicze, aby zapewnić skalowanie układów na ekranach o różnej gęstości pikseli.
- Więcej informacji o obsłudze różnych rozmiarów ekranu znajdziesz w szkoleniu na Androida Obsługa różnych rozmiarów ekranu.
Zapewnianie zgodności wstecznej
Nie wszyscy użytkownicy mogą korzystać z urządzeń z najnowszą wersją platformy Android. Oto kilka sposobów na zwiększenie zgodności wstecznej, dzięki czemu Twoja aplikacja będzie dostępna dla jak największej liczby osób.
Odpowiednio ustaw targetSdkVersion i minSdkVersion.
-
Aplikacje powinny być tworzone i dostosowywane do najnowszej wersji Androida, aby zapewniać najnowsze funkcje na wielu urządzeniach. Zapewnia to też zgodność wsteczną ze starszymi wersjami.
Oto sprawdzone metody prawidłowego kierowania na poziomy interfejsu API:
-
targetSdkVersionpowinna być najnowszą wersją Androida. Kierowanie na najnowszą wersję zapewnia, że aplikacja będzie dziedziczyć nowsze zachowania środowiska wykonawczego podczas działania w nowszych wersjach Androida. Podczas aktualizowaniatargetSdkVersionkoniecznie przetestuj aplikację na nowszych wersjach Androida, ponieważ może to wpłynąć na jej działanie. -
minSdkVersionUstawia minimalną obsługiwaną wersję Androida. UstawienieminSdkVersionpowoduje też, że narzędzia do kompilacji Androida zgłaszają nieprawidłowe użycie nowych interfejsów API, które mogą nie być dostępne w starszych wersjach platformy. Dzięki temu unikniesz przypadkowego naruszenia zgodności wstecznej.
-
- Sprawdź panele Androida, Konsolę Google Play dla deweloperów w przypadku swojej aplikacji oraz badania branżowe na rynkach docelowych, aby na podstawie informacji o użytkownikach docelowych określić, na których wersjach Androida chcesz się skupić.
Korzystanie z bibliotek pomocy Androida
-
Zadbaj o to, aby aplikacja działała spójnie na różnych wersjach systemu operacyjnego, korzystając z biblioteki pomocy Androida.
Ta biblioteka udostępnia zgodne wstecznie wersje interfejsów API platformy Android, a także funkcje dostępne tylko za pomocą interfejsów API biblioteki, takie jak
AppCompatActivityi biblioteka pomocy Material Design. - Najważniejsze z nich to:
- Biblioteka pomocy v4 i v7: wiele interfejsów API platformy dla starszych wersji Androida, takich jak
ViewPager,ActionBar,RecyclerViewiPalette. - Biblioteka pomocy Material Design: interfejsy API, które umożliwiają dodawanie do aplikacji komponentów i wzorców Material Design.
- Biblioteka obsługi multidexu: zapewnia obsługę dużych aplikacji, które mają ponad 65 tys. metod. Może się tak zdarzyć, jeśli Twoja aplikacja korzysta z wielu bibliotek.
- Biblioteka pomocy v4 i v7: wiele interfejsów API platformy dla starszych wersji Androida, takich jak
- Więcej informacji o dostępnych bibliotekach pomocy znajdziesz w sekcji Funkcje bibliotek pomocy na stronie dla deweloperów aplikacji na Androida.
Korzystanie z Usług Google Play
- Usługi Google Play udostępniają najlepsze interfejsy API Google niezależnie od wersji platformy Android. Rozważ użycie funkcji z usług Google Play, aby zapewnić użytkownikom urządzeń z Androidem jak najlepsze wrażenia z korzystania z usług Google.
- Usługi Google Play obejmują też przydatne interfejsy API, takie jak
GcmNetworkManager, który udostępnia większość interfejsów API Androida 5.0JobSchedulerw starszych wersjach Androida. - Aktualizacje Usług Google Play są automatycznie rozpowszechniane przez Sklep Google Play, a nowe wersje biblioteki klienta są dostarczane przez Menedżera pakietu SDK Androida.
Efektywne wykorzystanie pamięci
Pamięć jest niedocenianym elementem wpływającym na wrażenia użytkownika. Dobre zarządzanie pamięcią może zwiększyć stabilność i wydajność aplikacji. W niektórych przypadkach może to być jedyny sposób na to, aby aplikacja była w ogóle użyteczna. Oto kilka sposobów, dzięki którym aplikacja będzie efektywnie korzystać z pamięci.
Zmniejsz wykorzystanie pamięci na tanich urządzeniach
- Dynamicznie dostosuj wykorzystanie pamięci, aby zapewnić zgodność z urządzeniami o różnych konfiguracjach pamięci RAM.
- Metody takie jak
isLowRamDevice()igetMemoryClass()pomagają określić ograniczenia pamięci w czasie działania programu. Na podstawie tych informacji możesz skalować w dół wykorzystanie pamięci. Możesz na przykład używać obrazów o niższej rozdzielczości na urządzeniach z małą ilością pamięci. - Więcej informacji o zarządzaniu pamięcią aplikacji znajdziesz w szkoleniu na temat Androida Zarządzanie pamięcią aplikacji.
Unikaj długotrwałych procesów
- Długotrwałe procesy pozostają w pamięci i mogą spowalniać działanie urządzenia. W większości przypadków aplikacja powinna się włączyć w odpowiedzi na dane zdarzenie, przetworzyć dane i wyłączyć się. Aby uniknąć długotrwałych usług działających w tle i zmniejszyć obciążenie pamięci na urządzeniu użytkownika, używaj Komunikacji w chmurze Firebase (FCM) i
GcmNetworkManager.
Wykorzystanie pamięci w teście porównawczym
Android Studio udostępnia narzędzia do testowania wydajności i profilowania pamięci, które umożliwiają pomiar wykorzystania pamięci w czasie działania. Testowanie wykorzystania pamięci przez aplikację umożliwia monitorowanie wykorzystania pamięci w wielu wersjach aplikacji. Może to pomóc w wykryciu niezamierzonego wzrostu wykorzystania pamięci. Za pomocą narzędzia Memory Profiler możesz:
- Sprawdź, czy niepożądane wzorce zdarzeń odśmiecania pamięci (GC) mogą powodować problemy z wydajnością.
- Identyfikuj typy obiektów, które są przydzielane lub pozostają przydzielone w nieoczekiwany lub niepotrzebny sposób.
- Określ, w którym miejscu kodu może występować problem.
Więcej informacji o testowaniu porównawczym wykorzystania pamięci znajdziesz w artykule Wyświetlanie sterty i alokacji za pomocą narzędzia Memory Profiler.
Optymalizacja pod kątem urządzeń z Androidem (wersja Go)
Android (wersja Go) to zoptymalizowana wersja systemu na urządzenia podstawowe z pamięcią RAM ≤1 GB, począwszy od Androida Oreo (wersja Go). Aby mieć pewność, że aplikacja działa prawidłowo na urządzeniach z Androidem (Go edition), weź pod uwagę te wytyczne:
- targetSdkVersion powinna być najnowszą wersją Androida. Urządzenia z Androidem (wersja Go) działają tylko na Androidzie Oreo (interfejs API na poziomie 27 lub nowszym).
- Aplikacja powinna działać płynnie na urządzeniach z pamięcią RAM o wielkości ≤1 GB. Pamiętaj o optymalizacjach pamięci wymienionych w sekcji Efektywne wykorzystanie pamięci powyżej i używaj Android Vitals, aby identyfikować i naprawiać nieprawidłowe zachowania, takie jak powolne renderowanie i zamrożone klatki.
- Obraz w obrazie (PIP) może być wyłączony na urządzeniach. Zanim aplikacja zacznie korzystać z trybu obraz w obrazie, sprawdź, czy jest on dostępny, wywołując funkcję
hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE). - Rozmiar aplikacji na urządzeniu powinien być mniejszy niż 40 MB.
- Proporcjonalny rozmiar zbioru (PSS) wykorzystania pamięci RAM przez aplikację nie powinien przekraczać 90 MB. W przypadku gier PSS wykorzystania pamięci RAM nie powinien przekraczać 150 MB. Więcej informacji o PSS znajdziesz w przewodniku Analizowanie wykorzystania pamięci RAM.
- Czas uruchamiania aplikacji powinien być minimalny i nie przekraczać 5 sekund.
-
SYSTEM_ALERT_WINDOW(które umożliwia aplikacjom rysowanie okna na wierzchu innych aplikacji) może być wyłączone na urządzeniach z Androidem Go, które mają mało pamięci RAM. Przed rysowaniem na innych aplikacjach sprawdź, czy Twoja aplikacja ma to uprawnienie, wywołując funkcję Settings.canDrawOverlays(). Jeśli aplikacja nie może uzyskać uprawnień, przeprowadź łagodną degradację aplikacji, aby użytkownik mógł nadal z niej korzystać, być może przez wyłączenie funkcji, która wymaga uprawnieniaSYSTEM_ALERT_WINDOW.
Zalecamy, aby większość deweloperów zoptymalizowała istniejącą aplikację, która będzie dostępna na wszystkich urządzeniach z Androidem (wersja Go), ponieważ szybsze i lżejsze działanie aplikacji przyniesie korzyści wszystkim użytkownikom.
Aby rozpowszechniać konkretny plik APK na urządzenia z Androidem (wersja Go), możesz użyć funkcji wielu plików APK w Konsoli Play.Powinieneś jednak robić to tylko wtedy, gdy nie pogorszy to jakości działania aplikacji (np. nie usuwaj funkcji).
Plik APK kierowany na urządzenia z Androidem (Go edition) musi deklarować <uses-feature android:name="android.hardware.ram.low" android:required="true">, być kierowany co najmniej na interfejs API na poziomie 26 i mieć wyższy kod wersji niż plik APK w wersji innej niż Go.
Powiązane
Dodatkowe materiały
Więcej informacji o obsłudze różnych urządzeń znajdziesz w tym materiale: