Хотя последние версии 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">
Подробнее о создании и использовании тем читайте в руководстве «Стили и темы» .