Sdk 25 какой андроид

от admin

Уровень Android API, обратная и прямая совместимость

Если вы читаете эту статью, значит вас могут интересовать такие вещи, как:

  • Что означает уровень API?
  • Как использовать compileSdkVersion , minSdkVersion или targetSdkVersion ?
  • Как можно гарантировать, что приложение будет работать правильно на устройствах с разными версиями ОС?

Все эти понятия связаны друг с другом, и я постараюсь объяснить их вам в этой статье простым, но эффективным способом.

Для этого необходимо понимать разницу между 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) содержит:

  • Android SDK Platform 28 (это API фреймворка).
  • Исходный код для Android 28 (это реализация API, как вы видите, она не является обязательной… запомните это).
  • и еще куча других вещей… например, различные системные образы для эмулятора Android.

На второй вкладке 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-файлы. Оно состоит из двух основных компонентов:

  • Виртуальная машина, чтобы воспользоваться преимуществами переносимости кода и независимости от платформы. Начиная с Android 5.0 (Lollipop), старая среда выполнения, Dalvik Virtual Machine, была полностью заменена новой средой Android RunTime (ART). Dalvik использовал JIT-компилятор, тогда как ART использует AOT (Ahead of time) компиляцию плюс JIT для профилирования кода во время выполнения.
  • Базовые библиотеки — это стандартные библиотеки Java и Android. Проще говоря, именно здесь находится реализация API.

Например, если на фактическом устройстве установлен Android 9 (Pie), доступны все API до 28 уровня.

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

compileSdkVersion

Это значение используется только для указания Gradle, с какой версией SDK компилировать ваше приложение. Это позволяет разработчикам получить доступ ко всем API, доступным до уровня API, установленного для compileSdkVersion .

Настоятельно рекомендуется выполнить компиляцию с последней версией SDK:

  • высокий уровень API позволяет разработчикам использовать преимущества последнего API и возможностей, предоставляемых новыми платформами.
  • чтобы использовать последнюю версию SupportLibrary , compileSdkVersion должен соответствовать версии SupportLibrary .
  • для перехода на AndroidX или его использования, compileSdkVersion должен быть установлен как минимум равным 28.
  • чтобы быть готовым удовлетворить требования целевого уровня API от Google Play. В Google объявили, что для более быстрого распространения новых версий Android на рынке Google каждый год будет устанавливать минимальный целевой уровень API для новых приложений и обновлений. Больше информации вы можете найти здесь и здесь.

Это означает, что прямая совместимость в основном гарантируется платформой, и при запуске приложения на устройстве с более высоким уровнем API, чем тот, который указан в compileSdkVersion , не возникает никаких проблем во время выполнения, приложение будет работать так же, как и ожидалось, на более новых версиях платформы.

Приложение + compileSdkVersion = 26 и метод API xyz() , представленный в API 26 уровня, могут работать на устройстве с Android 8 Oreo (API 26 уровня).

Это же приложение может работать на устройстве с Android 9 Pie (API 28 уровня), поскольку метод API xyz() все еще доступен на API 28 уровня.

minSdkVersion

Это значение обозначает минимальный уровень API, на котором приложение может работать. Это минимальное требование. Если не указан, значением по умолчанию является 1.

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

Во время разработки Lint также предупредит разработчиков при попытке использовать любой API ниже указанного в minSdkVersion . Очень важно не игнорировать предупреждения и исправить их!

Чтобы обеспечить обратную совместимость, разработчики могут во время выполнения проверять версию платформы и использовать новый API в более новых версиях платформы и старый API в более старых версиях или, в зависимости от случая, использовать некоторые статические библиотеки, которые обеспечивают обратную совместимость.

Также важно упомянуть, что Google Play Store использует это значение, чтобы определить, можно ли установить приложение на определенное устройство, сопоставив версию платформы устройства с minSdkVersion приложения.

Разработчики должны быть очень осторожны при выборе этого значения, поскольку обратная совместимость не гарантируется платформой.

Выбор «правильного» значения для проекта также является бизнес-решением, поскольку оно влияет на то, насколько большой будет аудитория приложения. Посмотрите на распределение платформ.

Приложение + compileSdkVersion = 26 + minSdkVersion = 22 и метод API xyz() , представленный в API 26 уровня, могут работать на устройстве с Android 8 Oreo (API 26 уровня).

Это же приложение можно установить и запустить на более старом устройстве с Android 5.1 Lollipop (API 22 уровня), где метода API xyz() не существует. Если разработчики не обеспечили обратную совместимость ни с помощью проверок времени выполнения, ни с помощью каких-либо библиотек, то приложение будет аварийно завершать работу, как только оно попытается получить доступ к методу API xyz() .

targetSdkVersion

Это значение указывает уровень API, на котором приложение было разработано.

Не путайте его с compileSdkVersion . Последний используется только во время компиляции и делает новые API доступными для разработчиков. Первый, напротив, является частью APK (также как и minSdkVersion ) и изменяет поведение среды выполнения. Это способ, которым разработчики могут контролировать прямую совместимость.

Читать:
Как создать сайт агрегатор услуг

Иногда могут быть некоторые изменения API в базовой системе, которые могут повлиять на поведение приложения при работе в новой среде выполнения.

Целевой уровень приложения включает поведение среды выполнения, которое зависит от конкретной версии платформы. Если приложение не готово к поддержке этих изменений поведения среды выполнения, оно, вероятно, завершится сбоем.

Простым примером является Runtime Permission, которое было представлено в Android 6 Marshmallow (API 23 уровня).

Приложение может быть скомпилировано с использованием API 23 уровня, но иметь целевым API 22 уровня, если оно еще не готово поддержать новую модель разрешений времени выполнения.

Таким образом, приложение может по-прежнему быть совместимым без включения нового поведения среды выполнения.

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

Теперь соединяя все это вместе, мы видим четкое отношение

minSdkVersion ≤ targetSdkVersion ≤ compileSdkVersion

Имейте в виду, что настоятельно рекомендуется выполнить компиляцию в соответствии с последним уровнем API и стараться использовать targetSdkVersion == compileSdkVersion.

Android API Levels

This is an overview of all Android versions and their corresponding identifiers for Android developers. Anyone is welcome to open an issue or pull request. Happy developing!

  • targetSdk must be 31+ for new apps and app updates.
  • targetSdk will need to be 31+ for app updates by Nov 2022 and all existing apps by Nov 2023. 3
  • targetSdk must be 30+ for app updates, and new WearOS apps.
  • targetSdk will need to be 30+ for all existing apps by November 2022. 3
  • targetSdk must be 28+ for Wear OS app updates.
    requires a minSdk of 21 or higher.
  • Google Play services do not support Android versions below API level 19.
    /AndroidX libraries require a minSdk of 14 or higher.

Definitions

Gradle files
Kotlin variable Groovy variable Definition
minSdk minSdkVersion The minimum SDK version your app will support, defined in build.gradle . For example, if your minSdk is 26, this SDK version corresponse to API Level 26 and Android 8, so your app will only run on devices with Android 8 or higher.
targetSdk targetSdkVersion The SDK version that your app targets, defined in build.gradle . This should always be the same as compileSdk .
compileSdk compileSdkVersion The SDK version that your app compiles against, defined in build.gradle . Android Studio uses this SDK version to build your AABs and APKs. This should always be the same as targetSdk .
Code files
Variable Definition
Build.VERSION.SDK_INT The SDK version of the Android OS currently running on the user’s device. For example, on a device running Android 11, this value will be 30 (aka Build.VERSION_CODES.R ), even if the target and compile SDK of the app is different.

Footnotes

Cumulative usage distribution figures were last updated on March 11, 2023 using data from Statcounter GlobalStats and this script. These figures may have changed significantly since the last update. You may update the figures yourself with a pull request. ↩

The codenames for Android 10 and above in the table are the internal codenames. Beginning with Android 10, Google dropped the usage of codenames publicly. ↩

In 2022, Google began imposing minimum targetSdk requirements for existing apps, in addition new apps and app updates. Existing apps that are not updated to meet targetSdk requirements by their deadlines will be subject to restrictions. This requirement excludes Wear OS apps. ↩

Русские Блоги

Поскольку часто бывает необходимо адаптировать версию SDK по-другому, необходимо знать номер версии SDK. Здесь для удобства дальнейшего просмотра запишите его в виде стол. Просто запишите4.0В конце концов, указанная выше версия Android4.0Вышеуказанный уровень проникновения достиг97.4%

1. Таблица версий SDK

На основе Android 6.0 (уровень API 23)

Дата выхода API Level Версия Android VERSION_CODES английское имя китайское имя
2011.10 14 4.0 ICE_CREAM_SANDWICH IceCreamSandwich Сэндвич с мороженым
2011.12 15 4.0.3 ICE_CREAM_SANDWICH_MR1 IceCreamSandwich Сэндвич с мороженым
2012.06 16 4.1 JELLY_BEAN Jelly Bean жевательные конфеты
2012.11 17 4.2 JELLY_BEAN_MR1 Jelly Bean жевательные конфеты
2013.07 18 4.3 JELLY_BEAN_MR2 Jelly Bean жевательные конфеты
2014.06 19 4.4 KITKAT KitKat KitKat Шоколад
2014.09 20 4.4W KITKAT_WATCH KitKat Wear Устройство KitKat для ношения шоколада
2014.11 21 5.0 L или LOLLIPOP Lollipop Леденец
2015.03 22 5.1 LOLLIPOP_MR1 Lollipop Леденец
2015.10 23 6.0 M Marshmallow сахарная вата
Не опубликовано 24 6.X N Nougat Нуга

Если вам нужна более подробная версия NDK, см. Здесь:Форма SDK с версией NDK

2. Назначение номера версии SDK
2.1. Получите номер версии
  • Зачем нужен номер версии
    Иногда в опубликованном приложении бывают исключения. Мы перехватываем исключение и должны загрузить номер версии SDK для устройства, которое передает исключение, на сервер, чтобы разработчик мог проанализировать исключение.
  • Как получить номер версии выпуска и уровень API
2.2. Адаптировать под номер версии
  • Ситуация 1. Система разрешений Android 6.0:

Судите, есть ли разрешение, если версия больше 5.1, ее нужно судить (то есть 6.0 или выше), а другие судить не нужно. Build.VERSION.SDK_INT относится к уровню API текущего устройства.

  • Ситуация 2. Некоторые атрибуты уведомления:

Подзаголовок уведомления требует использования API уровня 16.

3. Постскриптум
  • В связи с обновлением версии, возможно, потребуется своевременно обновить форму.
  • Есть много ситуаций, когда используется номер версии, это лишь небольшая часть только для справки.
  • Конечно, уровень API также можно записать напрямую в виде чисел, но это не рекомендуется делать. Вы можете помнить здесь значение 16 чисел, но вы можете не помнить числа, используемые в других местах, поэтому пишите VERSION_CODES ради спецификации.В конце концов, это так убедительно.Также выше!

Интеллектуальная рекомендация

Реализация JavaScript Hashtable

причина Недавно я смотрю на «Структуру данных и алгоритм — JavaScript», затем перейдите в NPMJS.ORG для поиска, я хочу найти подходящую ссылку на библиотеку и записывать его, я могу исполь.

MySQL общие операции

jdbc Транзакция: транзакция, truncate SQL заявление Transaction 100 000 хранимая процедура mysql msyql> -определить новый терминатор,Пробелов нет mysql>delimiter // mysql> -создание хранимой .

Используйте Ansible для установки и развертывания TiDB

жизненный опыт TiDB — это распределенная база данных. Настраивать и устанавливать службы на нескольких узлах по отдельности довольно сложно. Чтобы упростить работу и облегчить управление, рекомендуетс.

Последняя версия в 2019 году: использование nvm под Windows для переключения между несколькими версиями Node.js.

С использованием различных интерфейсных сред вы можете переключаться между разными версиями в любое время для разработки. Например, развитие 2018 года основано наNode.js 7x версия разработана. Тебе эт.

Шаблон проектирования — Создать тип — Заводской шаблон

Заводская модель фабрикиPattern Решать проблему: Решен вопрос, какой интерфейс использовать принципСоздайте интерфейс объекта, класс фабрики которого реализуется его подклассом, чтобы процесс создания.

Android SDK Packages Latest Versions

This page provides you all latest versions of available Android SDK Packages from SDK Tools, Compilers, NDKs, Extras and System Images.

As we already knew, most packages are OS independent and the rest are OS dependent.So for OS dependent packages please choose the package match your development OS.

Consult «Other Versions+Installation Instruction» on each package for offline installation instruction as wellas other versions in case you need older versions for your purposes.

Last Time Checked

All the packages were last checked on: 2023-1-13 | 2:13:32 PM

All the packages were taken directly from the official Google’s Android host.

Похожие статьи