как узнать api телефона
Программно получить уровень 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
Xamarin. Android имеет несколько параметров уровня API Android, которые определяют совместимость приложения с несколькими версиями Android. В этом руководство объясняется, что означают эти параметры, как их настроить и как они влияют на приложение во время выполнения.
Быстрый запуск
Xamarin. Android предоставляет три параметра проекта уровня API Android:
Целевая платформа – Указывает, какая платформа будет использоваться при сборке приложения. Этот уровень API используется на этапе компиляции Xamarin. Android.
Прежде чем можно будет настроить уровень API для проекта, необходимо установить компоненты платформы SDK для этого уровня API. Дополнительные сведения о загрузке и установке компонентов пакет SDK для Android см. в разделе пакет SDK для Android Setup.
Начиная с августа 2020, для консоли Google Play требуется, чтобы новые приложения были нацелены на уровень API 29 (Android 10,0) или более поздней версии. Существующие приложения должны быть нацелены на уровень API 29 или выше, начиная с ноября 2020. Дополнительные сведения см. в разделе требования к целевому уровню API для консоли воспроизведения раздела «Создание и настройка приложения» в документации по консоли воспроизведения.
Как правило, для всех трех уровней API Xamarin. Android задано одно и то же значение. На странице приложение задайте для параметра компилировать с помощью версии Android (Целевая платформа) последнюю стабильную версию API (или, как минимум, до версии Android, которая содержит все необходимые компоненты). На следующем снимке экрана для целевой платформы задано значение Android 7,1 (API уровня 25-Nougat):
Если вы хотите обеспечить обратную совместимость с более ранней версией Android, задайте для минимальной версии Android целевую версию Android, которая будет поддерживаться вашим приложением. (Обратите внимание, что уровень API 14 — это минимальный уровень API, необходимый для Google Play служб и поддержки Firebase.) В следующем примере конфигурация поддерживает версии Android из API уровня 14 через уровень API 25.
Как правило, для всех трех уровней API Xamarin. Android задано одно и то же значение. Задайте для целевой платформы последнюю стабильную версию API (или, как минимум, до версии Android, которая содержит все необходимые компоненты). чтобы задать целевую платформу, перейдите к разделу сборка > общие в параметрах Project. На следующем снимке экрана Целевая платформа настроена для использования последней установленной платформы (8,0):
Если вы хотите обеспечить обратную совместимость с более ранней версией Android, измените минимальную версию Android на самую старую версию Android, которую должно поддерживать ваше приложение. Обратите внимание, что уровень API 14 — это минимальный уровень API, необходимый для Google Play служб и поддержки Firebase. Например, следующая конфигурация поддерживает версии Android как раньше, чем API уровня 14:
Если приложение поддерживает несколько версий Android, в коде должны содержаться проверки среды выполнения, чтобы обеспечить работу приложения с минимальной версией Android (Дополнительные сведения см. в разделе проверки среды выполнения для версий Android ниже). Если вы используете или создаете библиотеку, ознакомьтесь со статьей уровни API и библиотеки ниже, чтобы получить рекомендации по настройке параметров уровня API для библиотек.
Версии Android и уровни API
По мере развития платформы Android и выпуска новых версий Android каждой версии Android назначается уникальный целочисленный идентификатор, называемый уровнем API. Таким образом, каждая версия Android соответствует одному уровню API Android. Так как пользователи устанавливают приложения на более ранних версий, а также в самых последних версиях Android, приложения для работы в реальном времени для Android должны быть разработаны с несколькими уровнями API Android.
Версии Android
Каждый выпуск Android проходит несколько имен:
Имя кода Android может соответствовать нескольким версиям и уровням API (как показано в таблице ниже), но каждая версия Android соответствует ровно одному уровню API.
| Имя | Версия | Уровень API | Выпущено | Код версии сборки |
|---|---|---|---|---|
| Q | 10.0 | 29 | Авг 2020 | BuildVersionCodes.Q |
| Pie | 9.0 | 28 | Авг 2018 | BuildVersionCodes.P |
| Oreo | 8.1 | 27 | Dec 2017 | BuildVersionCodes.OMr1 |
| Oreo | 8.0 | 26 | Авг 2017 | BuildVersionCodes.O |
| Nougat | 7.1 | 25 | Dec 2016 | BuildVersionCodes.NMr1 |
| Nougat | 7.0 | 24 | Авг 2016 | BuildVersionCodes.N |
| Marshmallow | 6.0 | 23 | Авг 2015 | BuildVersionCodes.M |
| Lollipop | 5.1 | 22 | Мар 2015 | BuildVersionCodes.LollipopMr1 |
| Lollipop | 5.0 | 21 | Ноя 2014 | BuildVersionCodes.Lollipop |
| KitKat Watch | 4.4 w | 20 | Июнь 2014 | BuildVersionCodes.KitKatWatch |
| KitKat | 4.4. | 19 | Окт 2013 | BuildVersionCodes.KitKat |
| Jelly Bean | 4.3 | 18 | Июл 2013 | BuildVersionCodes.JellyBeanMr2 |
| Jelly Bean | 4.2 — 4.2.2 | 17 | 2012 ноября | BuildVersionCodes.JellyBeanMr1 |
| Jelly Bean | 4.1 — 4.1.1 | 16 | Июнь 2012 | BuildVersionCodes.JellyBean |
| Южные Сандвичевы | 4.0.3 — 4.0.4 | 15 | Dec 2011 | BuildVersionCodes.IceCreamSandwichMr1 |
| Южные Сандвичевы | 4.0 — 4.0.2 | 14 | Октябрь 2011 | BuildVersionCodes.IceCreamSandwich |
| хонэйкомб | 3.2 | 13 | Июнь 2011 | BuildVersionCodes.HoneyCombMr2 |
| хонэйкомб | 3.1. x | 12 | Май 2011 | BuildVersionCodes.HoneyCombMr1 |
| хонэйкомб | 3.0. x | 11 | Фев 2011 | BuildVersionCodes.HoneyComb |
| Gingerbread | 2.3.3 — 2.3.4 | 10 | Фев 2011 | BuildVersionCodes.GingerBreadMr1 |
| Gingerbread | 2.3 — 2.3.2 | 9 | 2010 ноября | BuildVersionCodes.GingerBread |
| фройо | 2.2. x | 8 | Июнь 2010 | BuildVersionCodes.Froyo |
| еклаир | 2.1.x | 7 | янв 2010 | BuildVersionCodes.EclairMr1 |
| еклаир | 2.0.1 | 6 | Dec 2009 | BuildVersionCodes.Eclair01 |
| еклаир | 2.0 | 5 | 2009 ноября | BuildVersionCodes.Eclair |
| кольцевой график; | 1.6 | 4 | Sep 2009 | BuildVersionCodes.Donut |
| купкаке | 1.5 | 3 | Май 2009 | BuildVersionCodes.Cupcake |
| Основной | 1.1 | 2 | Фев 2009 | BuildVersionCodes.Base11 |
| Основной | 1.0 | 1 | Октябрь 2008 | BuildVersionCodes.Base |
Как показано в этой таблице, новые версии Android чаще всего выпускаются – более чем в одном выпуске в год. В результате среда устройств Android, на которых может работать ваше приложение, включает в себя множество более старых и более новых версий Android. Как вы можете гарантировать, что приложение будет выполняться единообразно и надежно на разных версиях Android? Уровни API для Android могут помочь в управлении этой проблемой.
Уровни API Android
При сборке приложения он содержит следующие сведения об уровне API:
Целевой уровень API Android, на котором построено приложение для запуска.
Минимальный уровень API Android, который должен иметь устройство Android для запуска приложения.
Эти параметры используются, чтобы убедиться, что функции, необходимые для корректного запуска приложения, доступны на устройстве Android во время установки. В противном случае приложение блокируется на этом устройстве. Например, если уровень API устройства Android ниже минимального уровня API, указанного для приложения, устройство Android не позволит пользователю установить приложение.
Project Параметры уровня API
В следующих разделах объясняется, как с помощью диспетчера пакетов SDK подготовить среду разработки для уровней API, которые вы хотите ориентировать, а затем подробно объяснить, как настроить целевую платформу, минимальную версию Android и целевые параметры версии Android в Xamarin. Android.
Платформы пакет SDK для Android
Прежде чем можно будет выбрать целевой или минимальный уровень API в Xamarin. Android, необходимо установить пакет SDK для Android версию платформы, соответствующую этому уровню API. Диапазон доступных вариантов для целевой платформы, минимальной версии Android и целевой версии Android ограничен диапазоном установленных версий пакет SDK для Android. С помощью диспетчера пакетов SDK можно проверить, установлены ли требуемые версии пакет SDK для Android, и можно использовать ее для добавления новых уровней API, необходимых для приложения. Если вы не знакомы с установкой уровней API, см. раздел пакет SDK для Android Setup.
Целевая платформа (также известная как compileSdkVersion ) — это конкретная версия платформы Android (уровень API), для которой компилируется приложение во время сборки. Этот параметр указывает, какие API- интерфейсы будет использовать приложение при его запуске, но не влияет на то, какие API фактически доступны для приложения при его установке. В результате изменение параметра целевой платформы не приводит к изменению поведения среды выполнения.
чтобы получить доступ к параметру целевой платформы в Visual Studio, откройте свойства проекта в обозреватель решений и выберите страницу приложения :
Минимальная версия Android
Минимальная версия Android (также известная как minSdkVersion ) — это самая старая версия ОС Android (то есть самый низкий уровень API), которая может установить и запустить приложение. По умолчанию приложение может быть установлено только на устройствах, соответствующих параметру целевой платформы или выше. Если минимальная версия Android меньше, чем Целевая платформа, приложение также может работать в более ранних версиях Android. Например, если задать в качестве целевой платформы android 7,1 (Nougat) и установить для минимальной версии Android значение Android 4.0.3 (Ice-Южные Сандвичевы), приложение можно установить на любой платформе с уровня API 15 на уровень API 25 включительно.
Если выбрать параметр использовать компиляцию с использованием версии пакета SDK, минимальная версия Android будет совпадать с целевой платформой.
При выборе параметра автоматически – использовать целевую версию платформы минимальная версия Android будет совпадать с целевой платформой.
Целевая версия Android
Целевая платформа и Целевая версия Android с очень похожими именами не совпадают. Параметр целевой платформы передает сведения о целевом уровне API в Xamarin. Android для использования во время компиляции, а Целевая версия Android передает сведения о ЦЕЛЕВом интерфейсе API в Android для использования во время выполнения (если приложение установлено и выполняется на устройстве).
В общем случае целевая версия Android должна быть ограничена минимальной версией Android и целевой платформой. Это означает следующее:
Минимальная версия Android Android.OS.Build.VERSION.SdkInt чтобы определить уровень API платформы, в которой работает приложение. Если уровень API меньше, чем минимальная версия Android, поддерживающая API, которую нужно вызвать, то код должен найти способ правильной работы без выполнения этого вызова API.
Как правило, проверка версии сборки помогает вашему коду принимать во время выполнения действия по сравнению со старым способом. Пример:
Нет быстрого и простого правила, объясняющих, как сократить или изменить функциональность приложения при запуске в более старых версиях Android, в которых отсутствует один или несколько API-интерфейсов. В некоторых случаях (например, в приведенном SetCategory выше примере) достаточно опустить вызов API, если он недоступен. Однако в других случаях может потребоваться реализовать альтернативную функциональность, когда Android.OS.Build.VERSION.SdkInt обнаруживается меньше уровня API, необходимого приложению для обеспечения его оптимального взаимодействия.
Уровни API и библиотеки
При создании проекта библиотеки Xamarin. Android (например, библиотеки классов или библиотеки привязок) можно настроить только целевую платформу. – параметры минимальной версии Android и целевой версии Android недоступны. Это связано с тем, что отсутствует страница манифеста Android :
Параметры минимальной версии Android и целевой версии Android недоступны, так как итоговая библиотека не является автономным приложением, – Библиотека может быть запущена в любой версии Android в зависимости от приложения, с которым оно упаковано. Можно указать способ компиляции библиотеки, но нельзя предсказать, на каком уровне API платформы будет выполняться библиотека. Учитывая это, при использовании или создании библиотек следует соблюдать следующие рекомендации.
При использовании библиотеки Android – Если вы используете библиотеку Android в приложении, не забудьте задать для параметра целевой платформы приложения уровень API, который не меньше максимального значения, чем Целевая платформа библиотеки.
При создании библиотеки Android – Если вы создаете библиотеку Android для использования другими приложениями, убедитесь, что для параметра целевой платформы задан минимальный уровень API, необходимый для компиляции.
Эти рекомендации рекомендуется использовать для предотвращения ситуации, когда библиотека пытается вызвать API, который недоступен во время выполнения (что может привести к сбою приложения). Если вы разработчик библиотеки, вам следует ограничить использование вызовов API небольшим и хорошо установленным подмножеством общей контактной зоны API. Это гарантирует, что библиотеку можно будет использовать в более широком диапазоне версий Android.













