Хотя в последних версиях Android часто предоставляются отличные API для вашего приложения, вы должны продолжать поддерживать более старые версии Android, пока не будет обновлено больше устройств. В этом уроке рассказывается, как использовать преимущества последних версий API, сохраняя при этом поддержку более старых версий.
Чтобы узнать, как распределены активные устройства по версиям Android, воспользуйтесь мастером Новый проект в Android Studio. Распределение основано на количестве устройств, с которых пользователи заходят в Google Play. Как правило, мы рекомендуем поддерживать около 90% активных устройств и оптимизировать приложение для последней версии Android.
Совет. Чтобы обеспечить оптимальную работу приложения в разных версиях 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 доступны в системе.
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); } }
Чтобы проверить наличие основной или дополнительной версии SDK, используйте Build.VERSION.SDK_INT_FULL.
Kotlin
if (SDK_INT_FULL >= VERSION_CODES_FULL.[MAJOR or MINOR RELEASE]) { // Use APIs introduced in a major or minor SDK release }
Java
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">Чтобы применить тему ко всему приложению (всем объектам activity), добавьте атрибут android:theme в элемент <application>:
<application android:theme="@style/CustomTheme">Подробнее о создании и использовании тем читайте в руководстве Стили и темы.