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

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

Используйте мастер создания нового проекта Android Studio, чтобы определить распределение активных устройств с каждой версией Android. Это распределение основано на количестве устройств, посещающих Google Play. Как правило, мы рекомендуем поддерживать около 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.

Поскольку минорные версии SDK не привязаны к изменениям поведения, невозможно установить targetSdkVersion так, чтобы он отражал минорную версию SDK. Если вы хотите вызвать API в минорной версии SDK, которая новее, чем minSdkVersion , проверьте версию системы во время выполнения .

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

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

Вы можете использовать Build.VERSION.SDK_INT_FULL для проверки наличия основной или дополнительной версии SDK.

Котлин

if (SDK_INT_FULL >= VERSION_CODES_FULL.[MAJOR or MINOR RELEASE]) {
  // Use APIs introduced in a major or minor SDK release
}

Ява

if (SDK_INT_FULL >= VERSION_CODES_FULL.[MAJOR or MINOR RELEASE]) {
  // Use APIs introduced in a major or minor SDK release
}

Примечание: При анализе 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">

Подробнее о создании и использовании тем читайте в руководстве «Стили и темы» .