как узнать api android
Программно получить уровень API Android на устройстве?
Как узнать, какой уровень API используется моим устройством?
ОТВЕТЫ
Ответ 1
Уровень API можно получить программно с помощью системной константы ( Build.VERSION.SDK_INT ). Например, вы можете запустить какой-то фрагмент кода, для которого требуется более новый API, следующим образом (он будет выполнен, если текущий уровень API устройства не меньше 4)
Чтобы получить видимую для пользователя версию Android, используйте:
Ответ 2
Ответ 3
Для API Level> = 4 вы можете использовать Build.VERSION.SDK_INT
Usage
Ответ 4
Чтобы получить текущее API вашего устройства:
Ответ 5
Очень просто:
Выход:
Ответ 6
в первых версиях был использован Build.VERSION.SDK
, но теперь он устарел!
SDK Это поле было устарело в уровне API 4. С помощью SDK_INT легко получите это как целое число.
теперь вы должны использовать: SDK_INT. Добавлен в уровень API 4:
SDK_INT Отображаемая пользователем SDK-версия фреймворка; возможно значения определены в Build.VERSION_CODES.
Ответ 7
Вы можете получить информацию об устройстве, как показано ниже.
и может получить историю версий версии Android из ОС.
В этом говорится, что код версии API25 является N_MR1.
Узнаём версию Android API в приложении
В некоторых случаях требуется узнать версию Android API непосредственно во время работы программы.
Пример подобной ситуации мы уже рассматривали ранее, когда речь шла о работе с событием onScrollChange для элементов управления ScrollView и HorizontalScrollView (напомним, что оно, доступно только начиная с API 23 (Android 6.0 или Marshmallow)).
В вышеупомянутом примере мы обращались к свойству SDK_INT, класса VERSION, которое возвращает номер версии API.
Номер версии API возвращается в виде целого числа. Поэтому с ним можно работать непосредственно:
Либо сравнивать его с один из значений перечисления VERSION_CODES (как в первом примере). Нижеприведены значения перечисления VERSION_CODES в соответствии с номерами версий API и Android.
Версия API | Значение перечисления VERSION_CODES | Версия Android |
1 | BASE | 1.0 |
2 | BASE_1_1 | 1.1 |
3 | CUPCAKE | 1.5 |
4 | DONUT | 2.0 |
5 | ECLAIR | 2.0. |
6 | ECLAIR_0_1 | 2.0.1 |
7 | ECLAIR_0_1 | 2.1 |
8 | FROYO | 2.2 |
9 | GINGERBREAD | 2.3 |
10 | GINGERBREAD_MR1 | 2.3.3 |
11 | HONEYCOMB | 3.0 |
12 | HONEYCOMB_MR1 | 3.1 |
13 | HONEYCOMB_MR1 | 3.2 |
14 | ICE_CREAM_SANDWICH | 4.0 |
15 | ICE_CREAM_SANDWICH_MR1 | 4.0.3 |
16 | JELLY_BEAN | 4.1 |
17 | JELLY_BEAN_MR1 | 4.2 |
18 | JELLY_BEAN_MR2 | 4.3 |
19 | KITKAT | 4.4 |
20 | KITKAT_WATCH | 4.4W |
21 | L | 5.0 |
21 | LOLLIPOP | 5.0 |
22 | LOLLIPOP_MR1 | 5.1 |
23 | M | 6.0 |
24 | N | 7.0 |
25 | N_MR1 | 7.1 |
26 | O | 8.0 |
27 | O_MR1 | 8.1 |
28 | P | 9.0 |
29 | Q | 10.0 |
Это позволяет оперировать с номером версии API даже зная только версию Android.
Примечание
По просьбе одного из читателей 29.02.2020 таблица в статье была дополнена до Android 10.
Уровень Android API, обратная и прямая совместимость
Добрый вечер, друзья. Мы подготовили полезный перевод для будущих студентов курса «Android-разработчик. Продвинутый курс». С радостью делимся с вами данным материалом.
Если вы читаете эту статью, значит вас могут интересовать такие вещи, как:
Все эти понятия связаны друг с другом, и я постараюсь объяснить их вам в этой статье простым, но эффективным способом.
Для этого необходимо понимать разницу между SDK и API и знать что такое уровень API в экосистеме Android.
Это правда, что в Android между SDK и API существует отношение 1:1, и часто эти два термина используются как синонимы, но важно понимать, что это не одно и то же.
Правильнее говорить, что для каждой версии Android есть SDK и эквивалентный API, а также уровень этого API.
Расшифровывается как Software Development Kit (комплект для разработки программного обеспечения). Обратите внимание на слово «kit» (комплект)… он как раз представляет из себя набор различных инструментов, библиотек, документации, примеров, помогающих разработчикам создавать, отлаживать и запускать приложения для Android. API предоставляется вместе с SDK.
Если открыть SDK Manager в Android Studio, можно будет яснее увидеть, из чего состоит Android SDK.
На первой вкладке SDK Platform перечислены SDK каждой версии Android.
Как показано на рисунке ниже, Android 9.0 SDK (также известный как Pie) содержит:
На второй вкладке SDK Tools показаны другие инструменты, которые также являются частью SDK, но не зависят от версии платформы. Это означает, что они могут быть выпущены или обновлены отдельно.
Расшифровывается как Application Programming Interface (программный интерфейс приложения). Это просто интерфейс, уровень абстракции, который обеспечивает связь между двумя разными «частями» программного обеспечения. Он работает как договор между поставщиком (например, библиотекой) и потребителем (например, приложением).
Это набор формальных определений, таких как классы, методы, функции, модули, константы, которые могут использоваться другими разработчиками для написания своего кода. При этом API не включает в себя реализацию.
Уровень API
Уровень API — это целочисленное значение, однозначно идентифицирующее версию API фреймворка, предлагаемую платформой Android.
Обычно обновления API фреймворка платформы разрабатываются таким образом, чтобы новая версия API оставалась совместимой с более ранними версиями, поэтому большинство изменений в новом API являются аддитивными, а старые части API становятся устаревшими, но не удаляются.
И теперь кто-то может задаться вопросом…
если API Android не предоставляет реализацию, а SDK Manager предлагает необязательный загружаемый исходный код API в составе SDK, то где находится соответствующая реализация?
Ответ прост. На устройстве.
Давайте разберемся с этим…
От исходного кода к APK-файлу
Как правило, проект под Android состоит из кода, написанного разработчиками с использованием Android API (модуль приложения), а также некоторых других библиотек/зависимостей (.jar-файлов, AAR, модулей и т.д.) и ресурсов.
Процесс компиляции преобразует код, написанный на Java или Kotlin, включая зависимости (одна из причин уменьшить ваш код!), в байт-код DEX, а затем сжимает все в файл APK вместе с ресурсами. На данном этапе реализация API не включена в итоговый APK!
Процесс сборки — Android Developers
DEX файлы и Android Runtime
Архитектура Android — Android Developers
Android Runtime — это место, где делается вся грязная работа и где выполняются DEX-файлы. Оно состоит из двух основных компонентов:
Версия API, доступная на этом уровне, соответствует версии платформы Android, на которой запущено приложение.
Например, если на фактическом устройстве установлен Android 9 (Pie), доступны все API до 28 уровня.
compileSdkVersion
Настоятельно рекомендуется выполнить компиляцию с последней версией SDK:
Это же приложение может работать на устройстве с Android 9 Pie (API 28 уровня), поскольку метод API xyz() все еще доступен на API 28 уровня.
minSdkVersion
Это значение обозначает минимальный уровень API, на котором приложение может работать. Это минимальное требование. Если не указан, значением по умолчанию является 1.
Разработчики обязаны установить корректное значение и обеспечить правильную работу приложения до этого уровня API. Это называется обратной совместимостью.
Чтобы обеспечить обратную совместимость, разработчики могут во время выполнения проверять версию платформы и использовать новый API в более новых версиях платформы и старый API в более старых версиях или, в зависимости от случая, использовать некоторые статические библиотеки, которые обеспечивают обратную совместимость.
Также важно упомянуть, что Google Play Store использует это значение, чтобы определить, можно ли установить приложение на определенное устройство, сопоставив версию платформы устройства с minSdkVersion приложения.
Разработчики должны быть очень осторожны при выборе этого значения, поскольку обратная совместимость не гарантируется платформой.
Выбор «правильного» значения для проекта также является бизнес-решением, поскольку оно влияет на то, насколько большой будет аудитория приложения. Посмотрите на распределение платформ.
targetSdkVersion
Это значение указывает уровень API, на котором приложение было разработано.
Иногда могут быть некоторые изменения API в базовой системе, которые могут повлиять на поведение приложения при работе в новой среде выполнения.
Целевой уровень приложения включает поведение среды выполнения, которое зависит от конкретной версии платформы. Если приложение не готово к поддержке этих изменений поведения среды выполнения, оно, вероятно, завершится сбоем.
Простым примером является Runtime Permission, которое было представлено в Android 6 Marshmallow (API 23 уровня).
Приложение может быть скомпилировано с использованием API 23 уровня, но иметь целевым API 22 уровня, если оно еще не готово поддержать новую модель разрешений времени выполнения.
Таким образом, приложение может по-прежнему быть совместимым без включения нового поведения среды выполнения.
В любом случае, как уже упоминалось, Google требует, чтобы приложения удовлетворяли новым требованиям целевого уровня API, поэтому всегда следует иметь высокий приоритет для обновления этого значения.
Теперь соединяя все это вместе, мы видим четкое отношение
minSdkVersion ≤ targetSdkVersion ≤ compileSdkVersion
Имейте в виду, что настоятельно рекомендуется выполнить компиляцию в соответствии с последним уровнем API и стараться использовать targetSdkVersion == compileSdkVersion.
Общие сведения об уровнях API Android Understanding Android API levels
Xamarin. Android имеет несколько параметров уровня API Android, которые определяют совместимость приложения с несколькими версиями Android. В этом руководство объясняется, что означают эти параметры, как их настроить и как они влияют на приложение во время выполнения. Xamarin.Android has several Android API level settings that determine your app’s compatibility with multiple versions of Android. This guide explains what these settings mean, how to configure them, and what effect they have on your app at run time.
Быстрый запуск Quick start
Xamarin. Android предоставляет три параметра проекта уровня API Android: Xamarin.Android exposes three Android API level project settings:
Целевая платформа – Указывает, какая платформа будет использоваться при сборке приложения. Target Framework – Specifies which framework to use in building your application. Этот уровень API используется на этапе компиляции Xamarin. Android. This API level is used at compile time by Xamarin.Android.
Прежде чем можно будет настроить уровень API для проекта, необходимо установить компоненты платформы SDK для этого уровня API. Before you can configure an API level for your project, you must install the SDK platform components for that API level. Дополнительные сведения о загрузке и установке компонентов пакет SDK для Android см. в разделе пакет SDK для Android Setup. For more information about downloading and installing Android SDK components, see Android SDK Setup.
Начиная с августа 2020, для консоли Google Play требуется, чтобы новые приложения были нацелены на уровень API 29 (Android 10,0) или более поздней версии. Beginning in August 2020, the Google Play Console requires that new apps target API level 29 (Android 10.0) or higher. Существующие приложения должны быть нацелены на уровень API 29 или выше, начиная с ноября 2020. Existing apps are required to target API level 29 or higher beginning in November 2020. Дополнительные сведения см. в разделе требования к целевому уровню API для консоли воспроизведения раздела «Создание и настройка приложения» в документации по консоли воспроизведения. For more information, see Target API level requirements for the Play Console in «Create and set up your app» in the Play Console documentation.
Если вы хотите обеспечить обратную совместимость с более ранней версией Android, задайте для минимальной версии Android целевую версию Android, которая будет поддерживаться вашим приложением. If you want to maintain backward compatibility with an earlier version of Android, set Minimum Android version to target to the oldest version of Android that you want your app to support. (Обратите внимание, что уровень API 14 — это минимальный уровень API, необходимый для Google Play служб и поддержки Firebase.) В следующем примере конфигурация поддерживает версии Android из API уровня 14 через уровень API 25. (Note that API Level 14 is the minimum API level required for Google Play services and Firebase support.) The following example configuration supports Android versions from API Level 14 through API level 25:
Как правило, для всех трех уровней API Xamarin. Android задано одно и то же значение. Normally, all three Xamarin.Android API levels are set to the same value. Задайте для целевой платформы последнюю стабильную версию API (или, как минимум, до версии Android, которая содержит все необходимые компоненты). Set Target framework to the latest stable API version (or, at a minimum, to the Android version that has all of the features you need). чтобы задать целевую платформу, перейдите к разделу сборка > общие в параметрах Project. To set the Target framework, navigate to Build > General in the Project Options. На следующем снимке экрана Целевая платформа настроена для использования последней установленной платформы (8,0): In the following screenshot, the Target Framework is set to Use the latest installed platform (8.0):
Если вы хотите обеспечить обратную совместимость с более ранней версией Android, измените минимальную версию Android на самую старую версию Android, которую должно поддерживать ваше приложение. If you want to maintain backward compatibility with an earlier version of Android, change Minimum Android version to the oldest version of Android that you want your app to support. Обратите внимание, что уровень API 14 — это минимальный уровень API, необходимый для Google Play служб и поддержки Firebase. Note that API Level 14 is the minimum API level required for Google Play services and Firebase support. Например, следующая конфигурация поддерживает версии Android как раньше, чем API уровня 14: For example, the following configuration supports Android versions as early as API Level 14:
Если приложение поддерживает несколько версий Android, в коде должны содержаться проверки среды выполнения, чтобы обеспечить работу приложения с минимальной версией Android (Дополнительные сведения см. в разделе проверки среды выполнения для версий Android ниже). If your app supports multiple Android versions, your code must include runtime checks to ensure that your app works with the Minimum Android version setting (see Runtime Checks for Android Versions below for details). Если вы используете или создаете библиотеку, ознакомьтесь со статьей уровни API и библиотеки ниже, чтобы получить рекомендации по настройке параметров уровня API для библиотек. If you are consuming or creating a library, see API Levels and Libraries below for best practices in configuring API level settings for libraries.
Версии Android и уровни API Android versions and API levels
По мере развития платформы Android и выпуска новых версий Android каждой версии Android назначается уникальный целочисленный идентификатор, называемый уровнем API. As the Android platform evolves and new Android versions are released, each Android version is assigned a unique integer identifier, called the API Level. Таким образом, каждая версия Android соответствует одному уровню API Android. Therefore, each Android version corresponds to a single Android API Level. Так как пользователи устанавливают приложения на более ранних версий, а также в самых последних версиях Android, приложения для работы в реальном времени для Android должны быть разработаны с несколькими уровнями API Android. Because users install apps on older as well as the most recent versions of Android, real-world Android apps must be designed to work with multiple Android API levels.
Версии Android Android versions
Каждый выпуск Android проходит несколько имен: Each release of Android goes by multiple names:
Имя кода Android может соответствовать нескольким версиям и уровням API (как показано в таблице ниже), но каждая версия Android соответствует ровно одному уровню API. An Android code name may correspond to multiple versions and API levels (as seen in the table below), but each Android version corresponds to exactly one API level.
Имя Name | Версия Version | Уровень API API Level | Выпущено Released | Код версии сборки Build Version Code |
---|---|---|---|---|
Q Q | 10.0 10.0 | 29 29 | Авг 2020 Aug 2020 | BuildVersionCodes.Q |
Pie Pie | 9.0 9.0 | 28 28 | Авг 2018 Aug 2018 | BuildVersionCodes.P |
Oreo Oreo | 8.1 8.1 | 27 27 | Dec 2017 Dec 2017 | BuildVersionCodes.OMr1 |
Oreo Oreo | 8.0 8.0 | 26 26 | Авг 2017 Aug 2017 | BuildVersionCodes.O |
Nougat Nougat | 7.1 7.1 | 25 25 | Dec 2016 Dec 2016 | BuildVersionCodes.NMr1 |
Nougat Nougat | 7.0 7.0 | 24 24 | Авг 2016 Aug 2016 | BuildVersionCodes.N |
Marshmallow Marshmallow | 6.0 6.0 | 23 23 | Авг 2015 Aug 2015 | BuildVersionCodes.M |
Lollipop Lollipop | 5.1 5.1 | 22 22 | Мар 2015 Mar 2015 | BuildVersionCodes.LollipopMr1 |
Lollipop Lollipop | 5.0 5.0 | 21 21 | Ноя 2014 Nov 2014 | BuildVersionCodes.Lollipop |
KitKat Watch Kitkat Watch | 4.4 w 4.4W | 20 20 | Июнь 2014 Jun 2014 | BuildVersionCodes.KitKatWatch |
KitKat Kitkat | 4.4. 4.4 | 19 19 | Окт 2013 Oct 2013 | BuildVersionCodes.KitKat |
Jelly Bean Jelly Bean | 4.3 4.3 | 18 18 | Июл 2013 Jul 2013 | BuildVersionCodes.JellyBeanMr2 |
Jelly Bean Jelly Bean | 4.2 — 4.2.2 4.2-4.2.2 | 17 17 | 2012 ноября Nov 2012 | BuildVersionCodes.JellyBeanMr1 |
Jelly Bean Jelly Bean | 4.1 — 4.1.1 4.1-4.1.1 | 16 16 | Июнь 2012 Jun 2012 | BuildVersionCodes.JellyBean |
Южные Сандвичевы Ice Cream Sandwich | 4.0.3 — 4.0.4 4.0.3-4.0.4 | 15 15 | Dec 2011 Dec 2011 | BuildVersionCodes.IceCreamSandwichMr1 |
Южные Сандвичевы Ice Cream Sandwich | 4.0 — 4.0.2 4.0-4.0.2 | 14 14 | Октябрь 2011 Oct 2011 | BuildVersionCodes.IceCreamSandwich |
хонэйкомб Honeycomb | 3.2 3.2 | 13 13 | Июнь 2011 Jun 2011 | BuildVersionCodes.HoneyCombMr2 |
хонэйкомб Honeycomb | 3.1. x 3.1.x | 12 12 | Май 2011 May 2011 | BuildVersionCodes.HoneyCombMr1 |
хонэйкомб Honeycomb | 3.0. x 3.0.x | 11 11 | Фев 2011 Feb 2011 | BuildVersionCodes.HoneyComb |
Gingerbread Gingerbread | 2.3.3 — 2.3.4 2.3.3-2.3.4 | 10 10 | Фев 2011 Feb 2011 | BuildVersionCodes.GingerBreadMr1 |
Gingerbread Gingerbread | 2.3 — 2.3.2 2.3-2.3.2 | 9 9 | 2010 ноября Nov 2010 | BuildVersionCodes.GingerBread |
фройо Froyo | 2.2. x 2.2.x | 8 8 | Июнь 2010 Jun 2010 | BuildVersionCodes.Froyo |
еклаир Eclair | 2.1.x 2.1.x | 7 7 | янв 2010 Jan 2010 | BuildVersionCodes.EclairMr1 |
еклаир Eclair | 2.0.1 2.0.1 | 6 6 | Dec 2009 Dec 2009 | BuildVersionCodes.Eclair01 |
еклаир Eclair | 2.0 2.0 | 5 5 | 2009 ноября Nov 2009 | BuildVersionCodes.Eclair |
кольцевой график; Donut | 1.6 1.6 | 4 4 | Sep 2009 Sep 2009 | BuildVersionCodes.Donut |
купкаке Cupcake | 1.5 1.5 | 3 3 | Май 2009 May 2009 | BuildVersionCodes.Cupcake |
Основной Base | 1.1 1.1 | 2 2 | Фев 2009 Feb 2009 | BuildVersionCodes.Base11 |
Основной Base | 1.0 1.0 | 1 1 | Октябрь 2008 Oct 2008 | BuildVersionCodes.Base |
Как показано в этой таблице, новые версии Android чаще всего выпускаются – более чем в одном выпуске в год. As this table indicates, new Android versions are released frequently – sometimes more than one release per year. В результате среда устройств Android, на которых может работать ваше приложение, включает в себя множество более старых и более новых версий Android. As a result, the universe of Android devices that might run your app includes of a wide variety of older and newer Android versions. Как вы можете гарантировать, что приложение будет выполняться единообразно и надежно на разных версиях Android? How can you guarantee that your app will run consistently and reliably on so many different versions of Android? Уровни API для Android могут помочь в управлении этой проблемой. Android’s API levels can help you manage this problem.
Уровни API Android Android API levels
При сборке приложения он содержит следующие сведения об уровне API: When an application is built, it contains the following API level information:
Целевой уровень API Android, на котором построено приложение для запуска. The target API level of Android that the app is built to run on.
Минимальный уровень API Android, который должен иметь устройство Android для запуска приложения. The minimum Android API level that an Android device must have to run your app.
Эти параметры используются, чтобы убедиться, что функции, необходимые для корректного запуска приложения, доступны на устройстве Android во время установки. These settings are used to ensure that the functionality needed to run the app correctly is available on the Android device at installation time. В противном случае приложение блокируется на этом устройстве. If not, the app is blocked from running on that device. Например, если уровень API устройства Android ниже минимального уровня API, указанного для приложения, устройство Android не позволит пользователю установить приложение. For example, if the API level of an Android device is lower than the minimum API level that you specify for your app, the Android device will prevent the user from installing your app.
Project Параметры уровня API Project API level settings
В следующих разделах объясняется, как с помощью диспетчера пакетов SDK подготовить среду разработки для уровней API, которые вы хотите ориентировать, а затем подробно объяснить, как настроить целевую платформу, минимальную версию Android и целевые параметры версии Android в Xamarin. Android. The following sections explain how to use the SDK Manager to prepare your development environment for the API levels you want to target, followed by detailed explanations of how to configure Target Framework, Minimum Android version, and Target Android version settings in Xamarin.Android.
Платформы пакет SDK для Android Android SDK platforms
Прежде чем можно будет выбрать целевой или минимальный уровень API в Xamarin. Android, необходимо установить пакет SDK для Android версию платформы, соответствующую этому уровню API. Before you can select a Target or Minimum API level in Xamarin.Android, you must install the Android SDK platform version that corresponds to that API level. Диапазон доступных вариантов для целевой платформы, минимальной версии Android и целевой версии Android ограничен диапазоном установленных версий пакет SDK для Android. The range of available choices for Target Framework, Minimum Android version, and Target Android version is limited to the range of Android SDK versions that you have installed. С помощью диспетчера пакетов SDK можно проверить, установлены ли требуемые версии пакет SDK для Android, и можно использовать ее для добавления новых уровней API, необходимых для приложения. You can use the SDK Manager to verify that the required Android SDK versions are installed, and you can use it to add any new API levels that you need for your app. Если вы не знакомы с установкой уровней API, см. раздел пакет SDK для Android Setup. If you are not familiar with how to install API levels, see Android SDK Setup.
Целевая платформа (также известная как compileSdkVersion ) — это конкретная версия платформы Android (уровень API), для которой компилируется приложение во время сборки. The Target Framework (also known as compileSdkVersion ) is the specific Android framework version (API level) that your app is compiled for at build time. Этот параметр указывает, какие API- интерфейсы будет использовать приложение при его запуске, но не влияет на то, какие API фактически доступны для приложения при его установке. This setting specifies what APIs your app expects to use when it runs, but it has no effect on which APIs are actually available to your app when it is installed. В результате изменение параметра целевой платформы не приводит к изменению поведения среды выполнения. As a result, changing the Target Framework setting does not change runtime behavior.
чтобы получить доступ к параметру целевой платформы в Visual Studio, откройте свойства проекта в обозреватель решений и выберите страницу приложения : To access the Target Framework setting in Visual Studio, open the project properties in Solution Explorer and select the Application page:
Минимальная версия Android Minimum Android Version
Минимальная версия Android (также известная как minSdkVersion ) — это самая старая версия ОС Android (то есть самый низкий уровень API), которая может установить и запустить приложение. The Minimum Android version (also known as minSdkVersion ) is the oldest version of the Android OS (i.e., the lowest API level) that can install and run your application. По умолчанию приложение может быть установлено только на устройствах, соответствующих параметру целевой платформы или выше. Если минимальная версия Android меньше, чем Целевая платформа, приложение также может работать в более ранних версиях Android. By default, an app can only be installed on devices matching the Target Framework setting or higher; if the Minimum Android version setting is lower than the Target Framework setting, your app can also run on earlier versions of Android. Например, если задать в качестве целевой платформы android 7,1 (Nougat) и установить для минимальной версии Android значение Android 4.0.3 (Ice-Южные Сандвичевы), приложение можно установить на любой платформе с уровня API 15 на уровень API 25 включительно. For example, if you set the Target Framework to Android 7.1 (Nougat) and set the Minimum Android version to Android 4.0.3 (Ice Cream Sandwich), your app can be installed on any platform from API level 15 to API level 25, inclusive.
Если выбрать параметр использовать компиляцию с использованием версии пакета SDK, минимальная версия Android будет совпадать с целевой платформой. If you select Use Compile using SDK version, the Minimum Android version will be the same as the Target Framework setting.
При выборе параметра автоматически – использовать целевую версию платформы минимальная версия Android будет совпадать с целевой платформой. If you select Automatic – use target framework version, the Minimum Android version will be the same as the Target Framework setting.
Целевая версия Android Target Android Version
Целевая платформа и Целевая версия Android с очень похожими именами не совпадают. The Target Framework and the Target Android version, while having very similar names, are not the same thing. Параметр целевой платформы передает сведения о целевом уровне API в Xamarin. Android для использования во время компиляции, а Целевая версия Android передает сведения о ЦЕЛЕВом интерфейсе API в Android для использования во время выполнения (если приложение установлено и выполняется на устройстве). The Target Framework setting communicates target API level information to Xamarin.Android for use at compile time, while the Target Android version communicates target API level information to Android for use at run time (when the app is installed and running on a device).
В общем случае целевая версия Android должна быть ограничена минимальной версией Android и целевой платформой. In general, the Target Android Version should be bounded by the Minimum Android Version and the Target Framework. Это означает следующее: That is:
Минимальная версия Android Minimum Android Version
Проверки среды выполнения для версий Android Runtime checks for Android versions
После выпуска каждой новой версии Android API платформы обновляется для предоставления новых или замещающих функций. As each new version of Android is released, the framework API is updated to provide new or replacement functionality. За некоторыми исключениями, функциональные возможности API из предыдущих версий Android переносятся в более новые версии Android без изменений. With few exceptions, API functionality from earlier Android versions is carried forward into newer Android versions without modifications. В результате, если приложение работает на определенном уровне API Android, оно, как правило, будет работать на более позднем уровне API Android без изменений. As a result, if your app runs on a particular Android API level, it will typically be able to run on a later Android API level without modifications. Но что делать, если вы также хотите запустить приложение в более ранних версиях Android? But what if you also want to run your app on earlier versions of Android?
При выборе минимальной версии Android, которая ниже целевой платформы, некоторые API могут быть недоступны приложению во время выполнения. If you select a Minimum Android version that is lower than your Target Framework setting, some APIs may not be available to your app at runtime. Однако приложение по-прежнему может работать на более раннем устройстве, но с ограниченной функциональностью. However, your app can still run on an earlier device, but with reduced functionality. Для каждого API, который недоступен на платформах Android, соответствующих параметру минимальной версии Android, код должен явно проверить значение свойства, Android.OS.Build.VERSION.SdkInt чтобы определить уровень API платформы, в которой работает приложение. For each API that is not available on Android platforms corresponding to your Minimum Android version setting, your code must explicitly check the value of the Android.OS.Build.VERSION.SdkInt property to determine the API level of the platform the app is running on. Если уровень API меньше, чем минимальная версия Android, поддерживающая API, которую нужно вызвать, то код должен найти способ правильной работы без выполнения этого вызова API. If the API level is lower than the Minimum Android version that supports the API you want to call, then your code has to find a way to function properly without making this API call.
Как правило, проверка версии сборки помогает вашему коду принимать во время выполнения действия по сравнению со старым способом. In general, the build version check helps your code decide at runtime between doing something the new way versus the old way. Пример: For example:
Нет быстрого и простого правила, объясняющих, как сократить или изменить функциональность приложения при запуске в более старых версиях Android, в которых отсутствует один или несколько API-интерфейсов. There’s no fast and simple rule that explains how to reduce or modify your app’s functionality when it runs on older Android versions that are lacking one or more APIs. В некоторых случаях (например, в приведенном SetCategory выше примере) достаточно опустить вызов API, если он недоступен. In some cases (such as in the SetCategory example above), it’s sufficient to omit the API call when it’s not available. Однако в других случаях может потребоваться реализовать альтернативную функциональность, когда Android.OS.Build.VERSION.SdkInt обнаруживается меньше уровня API, необходимого приложению для обеспечения его оптимального взаимодействия. However, in other cases, you may need to implement alternate functionality for when Android.OS.Build.VERSION.SdkInt is detected to be less than the API level that your app needs to present its optimum experience.
Уровни API и библиотеки API levels and libraries
При создании проекта библиотеки Xamarin. Android (например, библиотеки классов или библиотеки привязок) можно настроить только целевую платформу. – параметры минимальной версии Android и целевой версии Android недоступны. When you create a Xamarin.Android library project (such as a class library or a bindings library), you can configure only the Target Framework setting – the Minimum Android version and the Target Android version settings are not available. Это связано с тем, что отсутствует страница манифеста Android : That is because there is no Android Manifest page:
Параметры минимальной версии Android и целевой версии Android недоступны, так как итоговая библиотека не является автономным приложением, – Библиотека может быть запущена в любой версии Android в зависимости от приложения, с которым оно упаковано. The Minimum Android version and Target Android version settings are not available because the resulting library is not a stand-alone app – the library could be run on any Android version, depending on the app that it is packaged with. Можно указать способ компиляции библиотеки, но нельзя предсказать, на каком уровне API платформы будет выполняться библиотека. You can specify how the library is to be compiled, but you can’t predict which platform API level the library will be run on. Учитывая это, при использовании или создании библиотек следует соблюдать следующие рекомендации. With this in mind, the following best practices should be observed when consuming or creating libraries:
При использовании библиотеки Android – Если вы используете библиотеку Android в приложении, не забудьте задать для параметра целевой платформы приложения уровень API, который не меньше максимального значения, чем Целевая платформа библиотеки. When consuming an Android library – If you are consuming an Android library in your application, be sure to set your app’s Target Framework setting to an API level that is at least as high as the Target Framework setting of the library.
При создании библиотеки Android – Если вы создаете библиотеку Android для использования другими приложениями, убедитесь, что для параметра целевой платформы задан минимальный уровень API, необходимый для компиляции. When creating an Android library – If you are creating an Android library for use by other applications, be sure to set its Target Framework setting to the minimum API level that it needs in order to compile.
Эти рекомендации рекомендуется использовать для предотвращения ситуации, когда библиотека пытается вызвать API, который недоступен во время выполнения (что может привести к сбою приложения). These best practices are recommended to help prevent the situation where a library attempts to call an API that is not available at runtime (which can cause the app to crash). Если вы разработчик библиотеки, вам следует ограничить использование вызовов API небольшим и хорошо установленным подмножеством общей контактной зоны API. If you are a library developer, you should strive to restrict your usage of API calls to a small and well-established subset of the total API surface area. Это гарантирует, что библиотеку можно будет использовать в более широком диапазоне версий Android. Doing so helps to ensure that your library can be used safely across a wider range of Android versions.