Android został zaprojektowany do działania na wielu różnych urządzeniach, takich jak telefony, tabletów i telewizorów. Różnorodność urządzeń zapewnia Twojej aplikacji ogromną potencjalną grupę odbiorców. Aby aplikacja była skuteczna na wszystkich urządzeniach, musi uwzględniać zmienność funkcji i zapewnić elastyczny interfejs użytkownika, który dostosowuje się do różnych konfiguracji ekranu.
Aby ułatwić zgodność z urządzeniami, Android udostępnia dynamiczną platformę aplikacji, w której możesz udostępniać zasoby aplikacji zależne od konfiguracji w plikach statycznych, takich jak różne układy XML dla różnych rozmiarów ekranu. Następnie Android wczytuje odpowiednie zasoby na podstawie bieżącej konfiguracji urządzenia. Na z uwzględnieniem projektu aplikacji i dodatkowych zasobów możesz opublikować pakietu aplikacji (APK), który optymalizuje wygodę użytkowników na różnych urządzeń.
W razie potrzeby możesz jednak określić wymagania dotyczące funkcji aplikacji i określić, na jakich typach urządzeń można instalować aplikację ze Sklepu Google Play. Z tego dokumentu dowiesz się, jak kontrolować, które urządzenia mają dostęp do Twoich aplikacji, i jak przygotować aplikacje, aby docierały do właściwych odbiorców.
Co oznacza „zgodność”?
Jeśli chodzi o programowanie na Androida, dostępne są 2 typy zgodności: zgodności urządzeń i aplikacji.
Android to projekt open source, dlatego każdy producent sprzętu stworzenie urządzenia z systemem operacyjnym Android. Urządzenie to „Zgodność z Androidem” tylko jeśli może prawidłowo uruchamiać aplikacje napisane dla Środowisko wykonawcze Androida. Dokładne informacje o Androidzie środowisko wykonawcze są definiowane przez Androida programu zgodności. Każde urządzenie musi przejść test zgodności z wymaganiami Compatibility Test Suite (CTS), które są uznawane za zgodne.
Deweloper aplikacji nie musi martwić się o to, czy urządzenie Zgodność z Androidem, ponieważ tylko urządzenia zgodne z Androidem obejmują Sklepu Google Play. Jeśli więc użytkownik zainstaluje aplikację ze Sklepu Google Play, korzystają z urządzenia zgodnego z Androidem.
Musisz jednak wziąć pod uwagę, czy Twoja aplikacja jest zgodna z każdą możliwą konfiguracją urządzenia. Android działa na wielu urządzeniach z różnymi konfiguracjami, dlatego niektóre funkcje są dostępne tylko na niektórych urządzeniach. Na przykład niektóre urządzenia nie mają czujnika kompasu. Jeśli jedna z kluczowych funkcji aplikacji wymaga użycia czujnika kompasu, aplikacja jest zgodna tylko z urządzeniami, które mają tę funkcję.
Kontrolowanie dostępności aplikacji na urządzeniach
Android obsługuje różne funkcje, z których aplikacja może korzystać za pomocą platformy API. Niektóre funkcje są oparte na sprzęcie, na przykład czujnika kompasu. niektóre są oparte na oprogramowaniu (np. widżety aplikacji); a inne zależą od wersji platformy. Nie wszystkie urządzenia obsługują wszystkie funkcje, więc może być konieczne kontrolowanie dostępności aplikacji na urządzeniach na podstawie wymaganych funkcji.
Aby Twoja aplikacja mogła korzystać z największej liczby użytkowników, zapewnij im wsparcie konfiguracji urządzeń przy użyciu jednego pliku APK lub pakietu AAB. W większości przypadków można to zrobić, wyłączając funkcje opcjonalne w czasie działania dostarczanie aplikacji zasobów z alternatywami dla różnych konfiguracji, takich jak różne układy na różne rozmiary ekranów. W razie potrzeby możesz ograniczyć dostępność aplikacji na określonych urządzeniach w Sklepie Google Play na podstawie tych cech urządzenia:
Funkcje urządzenia
Aby umożliwić zarządzanie dostępnością aplikacji na podstawie funkcji urządzenia, Android definiuje identyfikatory funkcji dla funkcji sprzętowych i programowych, które mogą być niedostępne na niektórych urządzeniach. Na przykład identyfikator elementu czujnika kompasu to
FEATURE_SENSOR_COMPASS
,
a identyfikator funkcji widżetów aplikacji to
FEATURE_APP_WIDGETS
W razie potrzeby możesz uniemożliwić użytkownikom instalowanie Twojej aplikacji, jeśli
urządzenia nie zapewniają niezbędnych funkcji przez zadeklarowanie ich za pomocą
<uses-feature>
elementu w swojej aplikacji
plik manifestu.
Jeśli na przykład aplikacja nie ma sensu na urządzeniu, które nie ma czujnika kompasu, możesz zadeklarować ten czujnik jako wymagany za pomocą tego tagu manifestu:
<manifest ... > <uses-feature android:name="android.hardware.sensor.compass" android:required="true" /> ... </manifest>
Sklep Google Play porównuje funkcje wymagane przez Twoją aplikację z funkcjami dostępnymi na urządzeniu każdego użytkownika, aby określić, czy aplikacja jest zgodna z każdym urządzeniem. Jeśli urządzenie nie ma wszystkich funkcji wymaganych przez aplikację, użytkownik nie będzie mógł jej zainstalować.
Jeśli jednak główna funkcja aplikacji nie wymaga
funkcji urządzenia, ustaw
required
na "false"
i sprawdź funkcję urządzenia w czasie działania.
Jeśli funkcja aplikacji jest niedostępna na bieżącym urządzeniu, przeprowadź łagodną degradację odpowiedniej funkcji aplikacji. Możesz na przykład zapytać, czy cecha jest
dostępne przez telefon
hasSystemFeature()
podobny do tego:
if (!packageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) { // This device doesn't have a compass. Turn off the compass feature. disableCompassFeature() }
PackageManager pm = getPackageManager(); if (!pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) { // This device doesn't have a compass. Turn off the compass feature. disableCompassFeature(); }
Informacje o wszystkich filtrach, których możesz używać do kontrolowania dostępności aplikacji w Sklepie Google Play, zobacz Filtry w Google Play dokumentacji.
Wersja platformy
Na różnych urządzeniach mogą działać różne wersje platformy Android, np. Android 12 lub Android 13. Każda kolejna wersja platformy często dodaje interfejsy API niedostępne w poprzedniej wersji. Aby wskazać, które interfejsy API są dostępne, każda wersja platformy określa poziom interfejsu API. Na przykład Android 12 to poziom API 31, a Android 13 to poziom API 33.
W pliku build.gradle
musisz podać wartości minSdkVersion
i targetSdkVersion
:
android { defaultConfig { applicationId = "com.example.myapp" // Defines the minimum API level required to run the app. minSdkVersion(30) // Specifies the API level used to test the app. targetSdkVersion(33) ... } }
android { defaultConfig { applicationId 'com.example.myapp' // Defines the minimum API level required to run the app. minSdkVersion 30 // Specifies the API level used to test the app. targetSdkVersion 33 ... } }
Więcej informacji o pliku build.gradle
znajdziesz w artykule
Skonfiguruj kompilację.
Każda kolejna wersja Androida zapewnia zgodność aplikacji za pomocą interfejsów API z poprzednich wersji platformy, dzięki czemu aplikacja jest zgodna z nowych wersji Androida, korzystając z udokumentowanych interfejsów API.
Jeśli jednak Twoja aplikacja korzysta z interfejsów API dodanych w późniejszej wersji platformy, ale nie są one wymagane do jej podstawowej funkcjonalności, sprawdź poziom interfejsu API w czasie wykonywania i łagodnie zdegraduj odpowiednie funkcje, gdy poziom interfejsu API jest zbyt niski. W tym przypadku ustaw wartość parametru minSdkVersion
na najniższą możliwą wartość dla głównej funkcji aplikacji, a potem porównaj bieżącą wersję systemu SDK_INT
z wartością stałej nazwy kodu w Build.VERSION_CODES
, która odpowiada poziomowi interfejsu API, który chcesz sprawdzić. Oto przykład:
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { // Running on something older than API level 11, so disable // the drag and drop features that use ClipboardManager APIs. disableDragAndDrop() }
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { // Running on something older than API level 11, so disable // the drag and drop features that use ClipboardManager APIs. disableDragAndDrop(); }
Konfiguracja ekranu
Android działa na urządzeniach różnych rozmiarów, takich jak telefony, tablety i telewizory. Aby kategoryzować urządzenia według typu ekranu, Android definiuje dla każdego z nich 2 cechy: rozmiar ekranu (fizyczny rozmiar ekranu) i gęstość ekranu (fizyczna gęstość pikseli na ekranie, czyli DPI). Aby uprościć różne konfiguracje, Android ogólnie łączy te warianty w grupy, które ułatwiają ich kierowanie:
- Cztery uogólnione rozmiary: mały, normalny, duży i bardzo duży
- Kilka uogólnionych gęstości: mdpi (średnia), hdpi (wysoka), xhdpi (dodatkowe) wysoka), xxhdpi (bardzo wysoka) i inne
Aplikacja jest domyślnie zgodna ze wszystkimi rozmiarami i gęstościami ekranów, ponieważ system dostosowuje układ UI i zasoby graficzne, niezbędne na każdym ekranie. Prześlij zoptymalizowane obrazy mapy bitowej dla typowych gęstości ekranu.
Zoptymalizuj wrażenia użytkowników, stosując elastyczne układy. Gdy występują układy wymagające dużych zmian w konfiguracji, takie jak lub w orientacji poziomej czy dużych i małych okien, rozważ układy, które dostosowują się do niewielkich zmian w konfiguracji. Dzięki temu użytkownicy będą mogli lepiej korzystać z urządzeń takich jak tablety, telefony i urządzenia składane. it jest pomocny także wtedy, gdy okna zmieniają rozmiar w trybie wielu okien.
Informacje o tworzeniu zasobów alternatywnych na potrzeby różnych ekranów oraz o ograniczaniu dostępności aplikacji do określonych rozmiarów ekranu znajdziesz w artykule Omówienie zgodności z ekranem i w wytycznych dotyczących jakości aplikacji na duże ekrany.
Kontrolowanie dostępności aplikacji z powodów biznesowych
Oprócz ograniczenia dostępności aplikacji na podstawie właściwości urządzenia możesz też ograniczyć dostępność aplikacji ze względów biznesowych lub prawnych. W takich przypadkach w Konsoli Play dostępne są opcje filtrowania, które umożliwiają kontrolowanie dostępności aplikacji z nietechnicznych powodów, takich jak lokalizacja użytkownika czy operator sieci bezprzewodowej.
filtrowanie pod kątem zgodności technicznej, np. wymaganego sprzętu. – zawsze na podstawie informacji zawartych w pakiecie APK lub AAB. . Filtrowanie z powodów nietechnicznych, np. ze względu na język, zawsze odbywa się w Konsoli Google Play.
Dodatkowe zasoby:
- Omówienie zasobów dotyczących aplikacji
- Informacje o strukturze aplikacji na Androida, która umożliwia oddzielenie zasobów aplikacji od kodu aplikacji, w tym o tym, jak udostępniać alternatywne zasoby w przypadku określonych konfiguracji urządzenia.
- Filtry w Google Play
- Informacje o różnych sposobach, w jakie Sklep Google Play może uniemożliwić zainstalowanie aplikacji na różnych urządzeniach.
- Uprawnienia na Androidzie
- Jak Android ogranicza dostęp aplikacji do określonych interfejsów API za pomocą systemu uprawnień które wymagają zgody użytkownika na korzystanie z tych interfejsów API przez aplikację.