Obsługa różnych wersji platformy

Najnowsze wersje Androida często oferują doskonałe interfejsy API do aplikacji, jednak warto kontynuować , aby obsługiwać starsze wersje Androida do czasu aktualizacji kolejnych urządzeń. Ten lekcja pokazuje, jak korzystać z najnowszych interfejsów API przy jednoczesnej obsłudze starszych jak również różne wersje.

Użyj kreatora Nowy projekt w Android Studio, aby znaleźć dystrybucję aktywnych urządzeń z każdą wersją Androida. Ten rozkład jest oparty na liczbie urządzeń, otwórz Sklep Google Play. Ogólnie zalecamy obsługę około 90% aktywnych urządzeń, kierowanie aplikacji do najnowszej wersji.

Wskazówka: aby umożliwić Ci korzystanie z najlepszych funkcji w kilku wersjach Androida, skorzystaj z Biblioteki pomocy Androida w swojej aplikacji, który umożliwia korzystanie z kilku najnowszych interfejsów API platformy w starszych wersjach.

Określ minimalne i docelowe poziomy interfejsu API

Plik AndroidManifest.xml zawiera szczegółowe informacje o aplikacji wskazuje wersje Androida, które obsługuje. Konkretnie: minSdkVersion i atrybuty targetSdkVersion dla elementu <uses-sdk> Zidentyfikować najniższy poziom API, z którym Twoja aplikacja jest zgodna, oraz najwyższy poziom API z którym zaprojektowaną i przetestowaną aplikację.

Na przykład:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... >
    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
    ...
</manifest>

W miarę pojawiania się nowych wersji Androida niektóre style i działania mogą się zmieniać. Aby umożliwić aplikacji skorzystanie z tych zmian i dostosowanie aplikacji do stylu na urządzeniach poszczególnych użytkowników, ustaw targetSdkVersion aby pasowała do najnowszej wersji Androida i dostępności informacji.

Sprawdzanie wersji systemu w czasie działania

Android udostępnia unikalny kod dla każdej wersji platformy w Build klasy stałych. Za pomocą tych kodów w aplikacji możesz utworzyć warunki, które zagwarantują, że kod zależy od wyższych poziomów API, jest wykonywana tylko wtedy, gdy te interfejsy API są dostępne w systemie.

Kotlin

private fun setUpActionBar() {
    // Make sure we're running on Honeycomb or higher to use ActionBar APIs
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        actionBar.setDisplayHomeAsUpEnabled(true)
    }
}

Java

private void setUpActionBar() {
    // Make sure we're running on Honeycomb or higher to use ActionBar APIs
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        ActionBar actionBar = getActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);
    }
}

Uwaga: podczas analizy zasobów XML Android ignoruje kod XML. Atrybuty, które nie są obsługiwane przez bieżące urządzenie. Można więc bezpiecznie używać atrybutów XML, są obsługiwane tylko przez nowsze wersje. Nie trzeba się przy tym martwić, że starsze na znalezienie tego kodu. Jeśli na przykład ustawisz parametr targetSdkVersion="11", Twoja aplikacja domyślnie zawiera te uprawnienia: ActionBar w Androidzie 3.0 i nowszych. Aby dodać pozycje menu do paska działań, musisz ustawić android:showAsAction="ifRoom" w pliku XML zasobu menu. Jest to bezpieczne w pliku XML z różnymi wersjami, ponieważ starsze wersje Androida po prostu ignorują showAsAction (czyli nie potrzebujesz osobnego atrybutu wersję w systemie res/menu-v11/).

Używaj stylów i motywów platformy

Android zapewnia motywy dla użytkowników, które nadają aplikacjom wygląd i systemu operacyjnego. Motywy te możesz zastosować do swojej aplikacji w manifestu. Jeśli użyjesz tych wbudowanych stylów i motywów, aplikacja będzie w naturalny sposób dostosowują się do wyglądu i stylu Androida w każdej nowej wersji.

Aby aktywność wyglądała jak okno dialogowe:

<activity android:theme="@android:style/Theme.Dialog">

Aby ustawić przezroczyste tło aktywności:

<activity android:theme="@android:style/Theme.Translucent">

Aby zastosować własny motyw niestandardowy zdefiniowany w /res/values/styles.xml:

<activity android:theme="@style/CustomTheme">

Aby zastosować motyw do całej aplikacji (wszystkich aktywności), dodaj android:theme atrybut do elementu <application>:

<application android:theme="@style/CustomTheme">

Więcej informacji o tworzeniu i używaniu motywów znajdziesz w przewodniku Style i motywy.