Omówienie zgodności urządzeń

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:

KotlinJava
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 minSdkVersiontargetSdkVersion:

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:

KotlinJava
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ę.