Поддержка различных версий платформы

Хотя последние версии Android часто предоставляют отличные API для вашего приложения, вам следует продолжать поддерживать более старые версии Android до тех пор, пока не будут обновлены новые устройства. В этом уроке показано, как воспользоваться преимуществами новейших API-интерфейсов, продолжая при этом поддерживать и старые версии.

Используйте мастер создания новых проектов Android Studio, чтобы найти распределение активных устройств, работающих под управлением каждой версии Android. Это распределение основано на количестве устройств, посещающих Google Play Store. Как правило, мы рекомендуем поддерживать около 90 % активных устройств, ориентируя приложение на последнюю версию.

Совет: Чтобы обеспечить лучшие функции и возможности в нескольких версиях Android, вам следует использовать в своем приложении библиотеку поддержки Android , которая позволяет использовать несколько последних API-интерфейсов платформы в более старых версиях.

Укажите минимальный и целевой уровни API

Файл AndroidManifest.xml описывает подробную информацию о вашем приложении и определяет, какие версии Android оно поддерживает. В частности, атрибуты minSdkVersion и targetSdkVersion для элемента <uses-sdk> определяют самый низкий уровень API, с которым совместимо ваше приложение, и самый высокий уровень API, на основе которого вы разработали и протестировали свое приложение.

Например:

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

По мере выпуска новых версий Android некоторые стили и поведение могут меняться. Чтобы ваше приложение могло воспользоваться этими изменениями и гарантировать, что оно соответствует стилю устройства каждого пользователя, вам следует установить значение targetSdkVersion , соответствующее последней доступной версии Android.

Проверка версии системы во время выполнения

Android предоставляет уникальный код для каждой версии платформы в классе констант Build . Используйте эти коды в своем приложении, чтобы создать условия, гарантирующие, что код, зависящий от более высоких уровней API, будет выполняться только тогда, когда эти API доступны в системе.

Котлин

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)
    }
}

Ява

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);
    }
}

Примечание. При анализе ресурсов XML Android игнорирует атрибуты XML, которые не поддерживаются текущим устройством. Таким образом, вы можете безопасно использовать атрибуты XML, которые поддерживаются только более новыми версиями, не беспокоясь о том, что старые версии сломаются, когда они столкнутся с этим кодом. Например, если вы установите targetSdkVersion="11" , ваше приложение по умолчанию включает ActionBar на Android 3.0 и более поздних версиях. Чтобы затем добавить элементы меню на панель действий, вам необходимо установить android:showAsAction="ifRoom" в XML-ресурсе меню. Это безопасно сделать в XML-файле для разных версий, поскольку более старые версии Android просто игнорируют атрибут showAsAction (то есть вам не нужна отдельная версия в res/menu-v11/ ).

Используйте стили и темы платформы

Android предоставляет темы взаимодействия с пользователем, которые придают приложениям внешний вид базовой операционной системы. Эти темы можно применить к вашему приложению в файле манифеста. Используя эти встроенные стили и темы, ваше приложение естественным образом будет соответствовать новейшему внешнему виду Android с каждой новой версией.

Чтобы ваша деятельность выглядела как диалоговое окно:

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

Чтобы ваша активность имела прозрачный фон:

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

Чтобы применить собственную тему, определенную в /res/values/styles.xml :

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

Чтобы применить тему ко всему приложению (всем действиям), добавьте атрибут android:theme к элементу <application> :

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

Дополнительные сведения о создании и использовании тем см. в руководстве «Стили и темы» .