Какое отличие между параметрами compileSdkVersion и targetSdkVersion?
Немного дополню исходный ответ (по ссылке из комментария @dubok79) + попытаюсь объяснить на пальцах.
compileSdkVersion — та версия SDK, с которой будут собираться билды. По большому счету, влияет на всевозможные сообщения отладки. В финальный билд само SDK, конечно же, никак не «зашивается», более того, даже упоминания об этой настройке в нем не будет.
Лично я стараюсь держать ее равной targetSdkVersion . В теории возможна, например, следующая ситуация (чисто выдуманная, но логика должна быть понятна). С новой версией SDK несколько методов стали deprecated. Если повысить значение параметра, будем получать предупреждения при сборке проекта. Однако в данный момент команде надо срочно делать новый функционал, избавлением от устаревшего получится заняться только по завершении. Тогда лучше не повышать, чтобы среди игнорируемых пока предупреждений не пропустить важные.
targetSdkVersion — максимальная версия, под которую вы проверяли свое приложение. Это нужно Android, чтобы понимать — можно ли использовать свежий функционал в приложении или оно может оказаться к нему не готово. Помогает избегать ситуаций, когда с обновлением версии оси поменялись какие-то значения / поведения по-умолчанию, от чего ваше приложение может начать работать хуже. Пример, приходящий в голову: когда обязательность кнопки меню убрали и заменили на ActionBar.
Опять же, в моем случае стараюсь держать этот параметр всегда актуальным последней версии оси. Но переход — это всегда необходимость проверить, не сломалось ли чего, комплексно пробежать по приложению. Потому не всегда он делается сразу и быстро.
Общие сведения об уровнях API Android
В Xamarin.Android есть несколько параметров уровня API Android, которые определяют совместимость приложения с несколькими версиями Android. В этом руководстве объясняется, что означают эти параметры, как их настроить и какое влияние они оказывают на приложение во время выполнения.
Быстрый запуск
Xamarin.Android предоставляет три параметра проекта уровня API Android:
- Целевая платформа — указывает, какую платформу использовать при сборке приложения. Этот уровень API используется во время компиляции в Xamarin.Android.
- Минимальная версия Android — указывает старую версию Android, которую приложение должно поддерживать. Этот уровень API используется во время выполнения Android.
- Целевая версия Android — указывает версию Android, в котором предназначено ваше приложение. Этот уровень API используется во время выполнения Android.
Перед настройкой уровня API для проекта необходимо установить компоненты платформы SDK для этого уровня API. Дополнительные сведения о скачивании и установке компонентов пакета SDK для Android см. в статье Установка пакета SDK для Android.
Начиная с августа 2021 г. консоль Google Play требует, чтобы новые приложения были нацелены на API уровня 30 (Android 11.0) или выше. Существующие приложения должны быть ориентированы на API уровня 30 или выше, начиная с ноября 2021 г. Дополнительные сведения см. в разделе Требования к уровню целевого API для play Console статьи «Создание и настройка приложения» документации по консоли Воспроизведения.
- Visual Studio
- Visual Studio для Mac
Как правило, для всех трех уровней API Xamarin.Android задано одно и то же значение. На странице Приложение задайте для параметра Компиляция с помощью версии Android (целевая платформа) последнюю стабильную версию API (или, как минимум, версию Android со всеми нужными функциями). На следующем снимке экрана для целевой платформы задано значение Android 7.1 (УРОВЕНЬ API 25 — Nougat):

На странице Манифест Android задайте для параметра Минимальная версия Android значение Использовать компиляцию с помощью версии пакета SDK , а для целевой версии Android задайте то же значение, что и для версии Целевой платформы (на следующем снимке экрана для целевой платформы Android задано значение Android 7.1 (Nougat)):

Если вы хотите поддерживать обратную совместимость с более ранней версией Android, установите минимальную версию Android, чтобы выбрать старую версию Android, которую приложение должно поддерживать. (Обратите внимание, что уровень API 14 — это минимальный уровень API, необходимый для служб Google Play и поддержки Firebase.) В следующем примере конфигурации поддерживаются версии Android от API уровня 14 до УРОВНЯ API 25:

Как правило, для всех трех уровней API Xamarin.Android задано одно и то же значение. Задайте для целевой платформы последнюю стабильную версию API (или, как минимум, версию Android со всеми нужными функциями). Чтобы задать целевую платформу, перейдите в раздел Общие сборки > в разделе Параметры проекта. На следующем снимке экрана для целевой платформы задано значение Использовать последнюю установленную платформу (8.0):

Параметры минимальной и целевой версии Android можно найти в разделе Сборка > приложения Android в параметрах проекта. Задайте для параметра Минимальная версия Android значение Автоматически — используйте версию целевой платформы и задайте для параметра Целевая версия Android то же значение, что и версия Целевой платформы. На следующем снимке экрана для целевой платформы Android framework задано значение Android 8.0 (уровень API 26) в соответствии с приведенным выше параметром Target Framework:

Если вы хотите поддерживать обратную совместимость с более ранней версией 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, например Android 9.0
- Имя кода (или десерта), например Pie
- Соответствующий уровень API, например УРОВЕНЬ API 28
Кодовое имя Android может соответствовать нескольким версиям и уровням API (как показано в таблице ниже), но каждая версия Android соответствует ровно одному уровню API.
Кроме того, Xamarin.Android определяет коды версий сборки , которые соответствуют известным в настоящее время уровням API Android. Следующая таблица поможет вам выполнить преобразование между уровнем API, версией Android, именем кода и кодом версии сборки Xamarin.Android (коды версий сборки определяются в Android.OS пространстве имен):
| Имя | Версия | Уровень API | Выпущено | Код версии сборки |
|---|---|---|---|---|
| Q | 10.0 | 29 | Август 2020 г. | BuildVersionCodes.Q |
| Pie | 9.0 | 28 | Август 2018 г. | BuildVersionCodes.P |
| Oreo | 8.1 | 27 | Декабрь 2017 г. | BuildVersionCodes.OMr1 |
| Oreo | 8.0 | 26 | Авг 2017 | BuildVersionCodes.O |
| Nougat | 7.1 | 25 | Декабрь 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 Вт | 20 | Июнь 2014 г. | BuildVersionCodes.KitKatWatch |
| Kitkat | 4.4. | 19 | Окт 2013 | BuildVersionCodes.KitKat |
| Желе Боб | 4.3 | 18 | Июль 2013 г. | BuildVersionCodes.JellyBeanMr2 |
| Желе Боб | 4.2-4.2.2 | 17 | Ноябрь 2012 г. | BuildVersionCodes.JellyBeanMr1 |
| Желе Боб | 4.1-4.1.1 | 16 | Июнь 2012 г. | BuildVersionCodes.JellyBean |
| Мороженое Бутерброд | 4.0.3-4.0.4 | 15 | Декабрь 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 |
| Пряник | 2.3.3-2.3.4 | 10 | Февраль 2011 г. | BuildVersionCodes.GingerBreadMr1 |
| Пряник | 2.3-2.3.2 | 9 | Ноябрь 2010 г. | BuildVersionCodes.GingerBread |
| Froyo | 2.2.x | 8 | Июнь 2010 г. | BuildVersionCodes.Froyo |
| Экклер | 2.1.x | 7 | янв 2010 | BuildVersionCodes.EclairMr1 |
| Экклер | 2.0.1 | 6 | Декабрь 2009 г. | BuildVersionCodes.Eclair01 |
| Экклер | 2,0 | 5 | Ноябрь 2009 г. | BuildVersionCodes.Eclair |
| кольцевой график; | 1.6 | 4 | Сентябрь 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
Каждое устройство Android работает на одном уровне API. Этот уровень API гарантированно уникален для каждой версии платформы Android. Уровень API точно определяет версию набора API, к которому может вызывать приложение; определяет сочетание элементов манифеста, разрешений и т. д. для кода в качестве разработчика. Система уровней API Android помогает Android определить, совместимо ли приложение с образом системы Android перед установкой приложения на устройство.
При построении приложения оно содержит следующие сведения об уровне API:
- Целевой уровень API Android, на который создано приложение для запуска.
- Минимальный уровень API Android, необходимый устройству Android для запуска приложения.
Эти параметры используются для обеспечения доступности функций, необходимых для правильного запуска приложения на устройстве Android во время установки. В противном случае приложение будет заблокировано на этом устройстве. Например, если уровень API устройства Android ниже минимального уровня API, указанного для приложения, устройство Android не позволит пользователю установить приложение.
Параметры уровня 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.
Требуемая версия .NET Framework
Целевая платформа (также известная как compileSdkVersion ) — это конкретная версия платформы Android (уровень API), для которую компилируется приложение во время сборки. Этот параметр указывает, какие API-интерфейсы приложение ожидает использовать при его запуске, но он не влияет на то, какие API фактически доступны вашему приложению при его установке. В результате изменение параметра Target Framework не приводит к изменению поведения среды выполнения.
Целевая платформа определяет, с какими версиями библиотеки связано ваше приложение. Этот параметр определяет, какие API-интерфейсы можно использовать в приложении. Например, если вы хотите использовать метод NotificationBuilder.SetCategory, представленный в Android 5.0 Lollipop, необходимо задать для целевой платформы значение API уровня 21 (Lollipop) или более поздней версии. Если задать для целевой платформы проекта уровень API, например УРОВЕНЬ API 19 (KitKat), и попытаться вызвать SetCategory метод в коде, вы получите ошибку компиляции.
Рекомендуется всегда компилировать с использованием последней доступной версии Target Framework. Это позволяет получить полезные предупреждения для всех устаревших API, которые могут вызываться вашим кодом. Использование последней версии Целевой платформы особенно важно при использовании последних выпусков библиотек поддержки. Каждая библиотека ожидает, что ваше приложение будет компилироваться на минимальном уровне API этой библиотеки поддержки или выше.
- Visual Studio
- Visual Studio для Mac
Чтобы получить доступ к параметру Target Framework в Visual Studio, откройте свойства проекта в Обозреватель решений и выберите страницу Приложение:

Задайте целевую платформу, выбрав уровень API в раскрывающемся меню в разделе Компиляция с помощью версии Android , как показано выше.
Чтобы получить доступ к параметру Целевая платформа в Visual Studio для Mac, щелкните правой кнопкой мыши имя проекта и выберите Параметры. Откроется диалоговое окно Параметры проекта. В этом диалоговом окне перейдите к разделу Общие сборки>, как показано ниже:

Задайте целевую платформу, выбрав уровень API в раскрывающемся меню справа от целевой платформы , как показано выше.
Минимальная версия Android
Минимальная версия Android (также известная как minSdkVersion ) — это самая старая версия ОС Android (т. е. самый низкий уровень API), которая может устанавливать и запускать приложение. По умолчанию приложение можно установить только на устройствах, соответствующих параметру Target Framework или более поздней версии. Если параметр Минимальная версия Android ниже параметра Целевая платформа, приложение также может работать в более ранних версиях Android. Например, если для целевой платформы задано значение Android 7.1 (Nougat), а для параметра Минимальная версия Android — Android 4.0.3 (Ice Cream Sandwich), приложение можно установить на любой платформе от уровня API 15 до уровня API 25 включительно.
Хотя ваше приложение может успешно выполнять сборку и установку на этих платформах, это не гарантирует, что оно будет успешно запущено на всех этих платформах. Например, если приложение установлено в Android 5.0 (Lollipop), а код вызывает API, доступный только в Android 7.1 (Nougat) и более поздней версии, приложение получит ошибку среды выполнения и, возможно, завершится сбоем. Таким образом, ваш код должен убедиться в том, что во время выполнения он вызывает только те API, которые поддерживаются устройством Android, на котором он работает. Другими словами, код должен включать явные проверки среды выполнения, чтобы убедиться, что приложение использует новые API только на устройствах, которые достаточно последние для их поддержки. В разделе Проверки среды выполнения для версий Android далее в этом руководстве объясняется, как добавить эти проверки среды выполнения в код.
- Visual Studio
- Visual Studio для Mac
Чтобы получить доступ к параметру Минимальная версия Android в Visual Studio, откройте свойства проекта в Обозреватель решений и выберите страницу Манифест Android. В раскрывающемся меню в разделе Минимальная версия Android можно выбрать минимальную версию Android для приложения:

Если выбрать команду Использовать компиляцию с помощью версии пакета SDK, минимальная версия Android будет совпадать с параметром Target Framework.
Чтобы получить доступ к минимальной версии Android в Visual Studio для Mac, щелкните правой кнопкой мыши имя проекта и выберите Параметры. Откроется диалоговое окно Параметры проекта. Перейдите к разделу Сборка > приложения Android. В раскрывающемся меню справа от минимальной версии Android можно задать минимальную версию Android для приложения:

Если выбран параметр Автоматически — использовать версию целевой платформы, минимальная версия Android будет совпадать с параметром Целевая платформа.
Целевая версия Android
Целевая версия Android (также известная как targetSdkVersion ) — это уровень API устройства Android, на котором ожидается запуск приложения. Android использует этот параметр, чтобы определить, следует ли включить какие-либо режимы совместимости. Это гарантирует, что приложение будет работать так, как вы ожидаете. Android использует параметр Целевая версия Android для вашего приложения, чтобы выяснить, какие изменения в поведении могут быть применены к приложению, не нарушая его (так Android обеспечивает прямую совместимость).
Целевая платформа и целевая версия Android, хотя и имеют очень похожие имена, это не одно и то же. Параметр Target Framework передает сведения о целевом уровне API в Xamarin.Android для использования во время компиляции, а целевая версия Android передает сведения о целевом уровне API в Android для использования во время выполнения (когда приложение установлено и запущено на устройстве).
- Visual Studio
- Visual Studio для Mac
Чтобы получить доступ к этому параметру в Visual Studio, откройте свойства проекта в Обозреватель решений и выберите страницу Манифест Android. В раскрывающемся меню в разделе Целевая версия Android можно выбрать целевую версию Android для приложения:

Рекомендуется явно задать для целевой версии Android последнюю версию Android, которая используется для тестирования приложения. В идеале для него должна быть установлена последняя версия пакета SDK для Android. Это позволяет использовать новые API-интерфейсы, прежде чем выполнять изменения в поведении. Для большинства разработчиков не рекомендуется устанавливать для целевой версии Android значение Использовать компиляцию с помощью версии пакета SDK.
Чтобы получить доступ к этому параметру в Visual Studio для Mac, щелкните правой кнопкой мыши имя проекта и выберите Параметры. Откроется диалоговое окно Параметры проекта. Перейдите к разделу Сборка > приложения Android. В раскрывающемся меню справа от целевой версии Android можно задать целевую версию Android для приложения:

Рекомендуется явно задать для целевой версии Android последнюю версию Android, которая используется для тестирования приложения. В идеале для него должна быть установлена последняя доступная версия пакета SDK для Android. Это позволит вам использовать новые API-интерфейсы, прежде чем выполнять изменения в поведении. Для большинства разработчиков не рекомендуется устанавливать для целевой версии Android значение Автоматически — использовать целевую версию платформы.
Как правило, целевая версия Android должна быть ограничена минимальной версией Android и целевой платформой. Это означает следующее:
Дополнительные сведения об уровнях пакета SDK см. в документации по Android Developer uses-sdk .
Среда выполнения проверяет наличие версий Android
По мере выпуска каждой новой версии Android API платформы обновляется для предоставления новых или заменяемых функций. За некоторыми исключениями функции API из более ранних версий Android переносятся в новые версии Android без изменений. В результате, если приложение выполняется на определенном уровне API Android, оно обычно может выполняться на более позднем уровне API Android без изменений. Но что делать, если вы также хотите запустить приложение в более ранних версиях Android?
Если выбрать минимальную версию Android, которая ниже параметра Target Framework, некоторые API-интерфейсы могут быть недоступны вашему приложению во время выполнения. Однако приложение по-прежнему может работать на более раннем устройстве, но с ограниченными функциональными возможностями. Для каждого API, недоступного Android.OS.Build.VERSION.SdkInt на платформах Android, соответствующего параметру минимальная версия Android, код должен явно проверка значение свойства , чтобы определить уровень API платформы, на котором выполняется приложение. Если уровень API ниже минимальной версии Android, поддерживающей api, который требуется вызвать, код должен найти способ правильной работы, не вызывая этот API.
Например, предположим, что мы хотим использовать метод NotificationBuilder.SetCategory для классификации уведомлений при запуске в Android 5.0 Lollipop (и более поздних версиях), но мы по-прежнему хотим, чтобы наше приложение работало в более ранних версиях Android, таких как Android 4.1 Jelly Bean (где SetCategory недоступно). Ссылаясь на таблицу версий Android в начале этого руководства, мы видим, что код версии сборки для Android 5.0 Lollipop — . Android.OS.BuildVersionCodes.Lollipop Для поддержки более старых версий Android, которые SetCategory недоступны, наш код может обнаруживать уровень API в среде выполнения и условно вызывать SetCategory только в том случае, если уровень API больше или равен коду версии сборки Lollipop:
if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Lollipop)
В этом примере целевая платформа нашего приложения имеет значение Android 5.0 (уровень API 21), а минимальная версия Android — Android 4.1 (уровень API 16). Так как SetCategory доступен на уровне Android.OS.BuildVersionCodes.Lollipop API и более поздних версий, этот пример кода вызывается SetCategory только тогда, когда он действительно доступен. Он не будет пытаться вызвать SetCategory , если уровень API равен 16, 17, 18, 19 или 20. Функциональность в этих более ранних версиях Android сокращается только в той степени, что уведомления не отсортированы должным образом (так как они не классифицируются по типу), но уведомления по-прежнему публикуются для оповещения пользователя. Наше приложение по-прежнему работает, но его функциональность немного уменьшается.
Как правило, версия сборки проверка помогает вашему коду во время выполнения решить, что делать что-то новым и старым способом. Пример:
if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Lollipop) < // Do things the Lollipop way >else < // Do things the pre-Lollipop way >
Нет быстрого и простого правила, объясняющего, как уменьшить или изменить функциональность приложения, если оно выполняется в более старых версиях Android, в которых не хватает одного или нескольких API. В некоторых случаях (например, в приведенном SetCategory выше примере) достаточно пропустить вызов API, если он недоступен. Однако в других случаях может потребоваться реализовать альтернативные функциональные возможности, Android.OS.Build.VERSION.SdkInt если обнаруживается, что уровень API меньше, чем уровень API, необходимый приложению для обеспечения оптимальной работы.
Уровни и библиотеки API
- Visual Studio
- Visual Studio для Mac
При создании проекта библиотеки Xamarin.Android (например, библиотеки классов или библиотеки привязок) можно настроить только параметр Целевая платформа — параметры Минимальная версия Android и Целевая версия Android недоступны. Это связано с отсутствием страницы манифеста Android :

При создании проекта библиотеки Xamarin.Android нет страницы приложения Android , на которой можно настроить минимальную версию Android и целевую версию Android. Параметры Минимальная версия Android и Целевая версия Android недоступны. Это связано с тем, что нет страницы Сборка > приложения Android :

Параметры Минимальная версия Android и Целевая версия Android недоступны, так как результирующая библиотека не является автономным приложением. Библиотека может быть запущена в любой версии Android в зависимости от того, с каким приложением она упакована. Вы можете указать способ компиляции библиотеки, но нельзя предсказать, на каком уровне API платформы будет работать библиотека. Учитывая это, при использовании или создании библиотек следует соблюдать следующие рекомендации:
- При использовании библиотеки Android . Если вы используете библиотеку Android в приложении, обязательно задайте для параметра Целевая платформа приложения уровень API, который по крайней мере не ниже, чем параметр Target Framework библиотеки.
- При создании библиотеки Android — если вы создаете библиотеку Android для использования другими приложениями, обязательно установите для параметра Target Framework минимальный уровень API, необходимый для компиляции.
Эти рекомендации помогут предотвратить ситуацию, когда библиотека пытается вызвать API, который недоступен во время выполнения (что может привести к сбою приложения). Если вы являетесь разработчиком библиотеки, следует стремиться ограничить использование вызовов API небольшим и хорошо установленным подмножеством общей контактной зоны API. Это помогает обеспечить безопасное использование библиотеки в более широком диапазоне версий Android.
Итоги
В этом руководстве объясняется, как уровни API Android используются для управления совместимостью приложений в разных версиях Android. В ней приведены подробные инструкции по настройке параметров проекта Xamarin.Android Target Framework, Минимальная версия Android и Целевая версия Android . В нем приведены инструкции по использованию диспетчера пакетов SDK для Android для установки пакетов SDK, приведены примеры написания кода для работы с различными уровнями API во время выполнения, а также объясняется, как управлять уровнями API при создании или использовании библиотек Android. Он также предоставил полный список, который связывает уровни API с номерами версий Android (например, Android 4.4), именами версий Android (например, Kitkat) и кодами версий сборки Xamarin.Android.
Связанные ссылки
- Установка пакета SDK для Android
- Изменения в инструментарии CLI пакета SDK
- Выбор объекта compileSdkVersion, minSdkVersion и targetSdkVersion
- Что такое уровень API?
- Кодовые имена, теги и номера сборки
В чем разница между «min sdk, target sdk и compile with»? в андроид
В чем разница между «min sdk, target sdk и компиляция с» в android? В чем разница между «минимальным sdk, целевым sdk и компиляцией с», которые появляются, когда я пытаюсь создать новый проект приложения для Android! как это.. Minimun SDK: API 14 Целевой SDK: API 17 Компилировать с помощью API 14 И мой выбор хороший? или какие из них я должен выбрать? Извините, я попытался поставить фотографию, но я не могу.. «Ожидание ваших ответов» plzzz = D!
without name 02 сен. 2014, в 16:33
Поделиться
Я действительно читал, но я не очень хорошо понял ((!!
without name 02 сен. 2014, в 14:52
Поделиться:
android-sdk-2.3
5 ответов
Лучший ответ
Minimun SDK: API 14
означает, что ваше приложение будет работать только на мобильном телефоне с уровнем api 14, то есть (ICS 4.0) или выше. Ваше приложение не сможет работать в предыдущих версиях Android, таких как пряники и фройо.
Target SDK: API 17
относится к версии андроида, для которой вы хотите построить, что является Jellybean на вашем деле. Рекомендуется сохранять как можно более свежую информацию (api 20 Kitkat в настоящем контексте).
Скомпилировать с помощью API 14
относится к версии andriod, которую вы тестируете. Уступка api 14 означает, что вы собираетесь протестировать свое приложение на ICS.
вы также можете посмотреть это видео:
incr3dible noob 02 сен. 2014, в 15:56
Поделиться
thaaaaaanks .. это то, что я хочу :))!
without name 06 сен. 2014, в 04:10
Android: minSdkVersion
Целое число, обозначающее минимальный уровень API, необходимый для запуска приложения. Система Android не позволит пользователю установить приложение, если уровень API системы ниже, чем значение, указанное в этом атрибуте. Вы всегда должны объявлять этот атрибут.
Android: targetSdkVersion
Целое число, обозначающее уровень API, на который нацелено приложение. Если значение не установлено, значение по умолчанию равно значению minSdkVersion. Этот атрибут информирует систему, что вы протестировали против целевой версии, и система не должна включать поведение совместимости для поддержания совместимости приложений с целевой версией. Приложение все еще может работать в более старых версиях (вплоть до minSdkVersion).
Поскольку Android развивается с каждой новой версией, некоторые изменения поведения и даже появление могут измениться. Однако, если уровень API платформы выше версии, объявленной вашим целевым объектом targetSdkVersion, система может включить поведение совместимости, чтобы ваше приложение продолжало работать так, как вы ожидаете. Вы можете отключить такое поведение совместимости, указав targetSdkVersion в соответствии с уровнем API на платформе, на которой он работает. Например, при установке этого значения на «11» или выше система может применять новую тему по умолчанию (Holo) к вашему приложению при работе на Android 3.0 или выше, а также отключает режим совместимости с экраном при работе на больших экранах (поскольку поддержка API уровень 11 неявно поддерживает большие экраны).
Существует много способов совместимости, которые система может включить на основе значения, установленного для этого атрибута. Некоторые из этих типов поведения описываются соответствующими версиями платформы в ссылке Build.VERSION_CODES.
Чтобы поддерживать приложение вместе с каждой версией Android, вы должны увеличить значение этого атрибута в соответствии с последним уровнем API, а затем тщательно протестировать свое приложение на соответствующей версии платформы. Представлено в: API Level 4
Android: maxSdkVersion
Целое число, обозначающее максимальный уровень API, на котором приложение предназначено для запуска. В Android 1.5, 1.6, 2.0 и 2.0.1 система проверяет значение этого атрибута при установке приложения и повторной проверки приложения после обновления системы. В любом случае, если атрибут maxSdkVersion приложения ниже уровня API, используемого самой системой, система не сможет установить приложение. В случае повторной проверки после обновления системы это эффективно удаляет ваше приложение с устройства.
перейдите по этой ссылке для получения более подробной информации
Anil kumar 02 сен. 2014, в 14:47
Поделиться
Вы не ответили о «компиляции с».
Kidburla 13 июль 2015, в 14:30
Попытка максимально упростить его, я могу объяснить три термина следующим образом:
Min Required SDK: показывает устройство с минимальной версией Android, которую вы хотите, чтобы ваше приложение поддерживало. Например, если вы выберете API 11: Honey Comb в раскрывающемся списке. Это покажет, что ваше приложение не будет поддерживать/не будет работать на любом устройстве Android, имеющем версию для Android ниже, чем Honey Comb.
Target SDK: Это всегда должно быть как можно выше, так как оно указывает максимальную версию Android, с которой вы нацеливали или тестировали свое приложение. Итак, если вы сохраните свой minReqSDK → 11 (honey comb) и targetSDK → 21 (Lollipop), это покажет, что ваше приложение будет работать на всех версиях Android от сотовых до Lollipop без проблем совместимости, поскольку вы установили целевой SDK → 21 версия Lollipop.
Скомпилировать с помощью: Это не имеет никакого отношения к андроиду, поддерживающему любые устройства. Вы можете выбрать любую версию Android, которую вы установили, используя менеджер SDK для компиляции и запуска приложения для целей разработки.
В вашем случае: min sdk версия: 14 target sdk: 17 скомпилируйте с помощью: 14
Ваше устройство будет поддерживать все версии Android с 14-ю уровнями аппликации (Ice Cream Sandwich) до уровня 17 api (Jelly Bean 4.2). И вы используете api level 14 (ICS) для компиляции и запуска приложения для разработки.
Надеюсь, что это поможет.
Amir Aslam 14 июль 2015, в 00:04
Поделиться
Вкратце, вот цель объявления другого targetSDK из minSDK: это означает, что вы используете функции с SDK более высокого уровня, чем ваш минимум, но у вас обеспечивается обратная совместимость. Другими словами, представьте, что вы хотите использовать функцию, которая была только недавно введена, но это не критично для вашего приложения. Затем вы установили targetSDK в версию, в которой была введена эта новая функция, а минимальная — на что-то ниже, чтобы все могли использовать ваше приложение.
Чтобы привести пример, скажем, вы пишете приложение, которое широко использует обнаружение жестов. Тем не менее, каждая команда, которая может быть распознана жестом, также может быть выполнена с помощью кнопки или из меню. В этом случае жесты являются «отличными», но не требуются. Поэтому вы должны установить целевой sdk в 7 ( «Eclair», когда была введена библиотека GestureDetection), а минимальная SDK — на уровень 3 ( «Cupcake» ), чтобы даже люди с действительно старыми телефонами могли использовать ваше приложение. Все, что вам нужно сделать, это убедиться, что ваше приложение проверило версию Android, на которой она работала, прежде чем пытаться использовать библиотеку жестов, чтобы не пытаться использовать ее, если она не существует. (По общему признанию, это датированный пример, так как вряд ли у кого по-прежнему есть телефон v1.5, но было время, когда поддержание совместимости с v1.5 было действительно важно.)
Чтобы привести еще один пример, вы можете использовать это, если хотите использовать функцию из Gingerbread или Honeycomb. Некоторые люди скоро получат обновления, но многие другие, в частности со старыми аппаратными средствами, могут оставаться застрявшими с Eclair, пока не приобретут новое устройство. Это позволит вам использовать некоторые из новых интересных функций, но не исключая часть вашего возможного рынка.
Существует действительно хорошая статья из блог разработчиков Android о том, как использовать эту функцию, и, в частности, как разработать «проверьте, существует ли функция, прежде чем использовать ее». Код, упомянутый выше.
К OP: Я написал это в основном для всех, кто случайно наткнется на этот вопрос в будущем, так как я понимаю, что ваш вопрос был задан давно. вот сообщение
Naveed Ahmad 02 сен. 2014, в 16:24
Поделиться
Android: minSdkVersion Целое число, обозначающее минимальный уровень API, необходимый для запуска приложения. Система Android не позволит пользователю установить приложение, если уровень API системы ниже, чем значение, указанное в этом атрибуте. Вы всегда должны объявлять этот атрибут. Предостережение: Если вы не объявляете этот атрибут, система принимает значение по умолчанию «1», что указывает на совместимость вашего приложения со всеми версиями Android. Если ваше приложение несовместимо со всеми версиями (например, оно использует API-интерфейсы, введенные в API-уровень 3), и вы не объявили надлежащую версию minSdkVersion, а затем, когда она установлена в системе с уровнем API менее 3, приложение будет сбой во время при попытке получить доступ к недоступным API. По этой причине обязательно объявите соответствующий уровень API в атрибуте minSdkVersion.
Android: targetSdkVersion Целое число, обозначающее уровень API, на который нацелено приложение. Если значение не установлено, значение по умолчанию равно значению minSdkVersion. Этот атрибут информирует систему, что вы протестировали против целевой версии, и система не должна включать поведение совместимости для поддержания совместимости приложений с целевой версией. Приложение все еще может работать в более старых версиях (вплоть до minSdkVersion).
Поскольку Android развивается с каждой новой версией, некоторые изменения поведения и даже появление могут измениться. Однако, если уровень API платформы выше версии, объявленной вашим целевым объектом targetSdkVersion, система может включить поведение совместимости, чтобы ваше приложение продолжало работать так, как вы ожидаете. Вы можете отключить такое поведение совместимости, указав targetSdkVersion в соответствии с уровнем API на платформе, на которой он работает. Например, при установке этого значения на «11» или выше система может применять новую тему по умолчанию (Holo) к вашему приложению при работе на Android 3.0 или выше, а также отключает режим совместимости с экраном при работе на больших экранах (поскольку поддержка API уровень 11 неявно поддерживает большие экраны).
Существует много способов совместимости, которые система может включить на основе значения, установленного для этого атрибута. Некоторые из этих типов поведения описываются соответствующими версиями платформы в ссылке Build.VERSION_CODES.
Чтобы поддерживать приложение вместе с каждой версией Android, вы должны увеличить значение этого атрибута в соответствии с последним уровнем API, а затем тщательно протестировать свое приложение на соответствующей версии платформы.
Представлено в: Уровень API 4
Android: maxSdkVersion Целое число, обозначающее максимальный уровень API, на котором приложение предназначено для запуска. В Android 1.5, 1.6, 2.0 и 2.0.1 система проверяет значение этого атрибута при установке приложения и повторной проверки приложения после обновления системы. В любом случае, если атрибут maxSdkVersion приложения ниже уровня API, используемого самой системой, система не сможет установить приложение. В случае повторной проверки после обновления системы это эффективно удаляет ваше приложение с устройства.
Чтобы проиллюстрировать, как этот атрибут может повлиять на ваше приложение после обновления системы, рассмотрите следующий пример:
Приложение, объявляющее maxSdkVersion = «5» в своем манифесте, публикуется в Google Play. Пользователь, чье устройство работает под управлением Android 1.6 (API Level 4), загружает и устанавливает приложение. Через несколько недель пользователь получит обновление системы на Android 2.0 (API Level 5). После установки обновления система проверяет приложение maxSdkVersion и успешно повторно проверяет его. Приложение функционирует как обычно. Однако через некоторое время устройство получит еще одно обновление системы, на этот раз до Android 2.0.1 (уровень API 6). После обновления система больше не может повторно проверять приложение, потому что собственный уровень API (6) теперь выше максимального, поддерживаемого приложением (5). Система предотвращает видимость приложения для пользователя, фактически удаляя его с устройства.
Предупреждение. Объявление этого атрибута не рекомендуется. Во-первых, нет необходимости устанавливать атрибут как средство блокировки развертывания вашего приложения на новые версии платформы Android по мере их выпуска. По дизайну новые версии платформы полностью обратно совместимы. Ваше приложение должно работать должным образом в новых версиях, при условии, что оно использует только стандартные API-интерфейсы и следует лучшим методам разработки. Во-вторых, обратите внимание, что в некоторых случаях объявление атрибута может привести к удалению вашего приложения с устройств пользователей после обновления системы до более высокого уровня API. Большинство устройств, на которых ваше приложение, вероятно, будет установлено, будут получать периодические системные обновления по воздуху, поэтому перед установкой этого атрибута вы должны рассмотреть их влияние на ваше приложение.
Представлено в: Уровень API 4
Будущие версии Android (помимо Android 2.0.1) больше не будут проверять или применять атрибут maxSdkVersion во время установки или повторной проверки. Google Play будет продолжать использовать этот атрибут в качестве фильтра, однако при представлении пользователям приложений, доступных для загрузки.
Подробнее об этом можно узнать здесь: использовать sdk
Android API. Как поднять версию и что будет с приложениями 31 августа 2023
31 августа Android поднимает версию API до 33-й. Что это значит?
- Нельзя будет опубликовать новые приложения с уровнем API ниже 33
- Существующие приложения с уровнем API 30 и ниже, то они будут отображаться в поиске на старых версиях Android.
Рубрика «Минимум воды» от канала Bright Startup.
Зачем Android это делает?
Android постоянно поднимает версию своего API для:
- Улучшения системной производительности (улучшение механизмов работы дисплея, процессора, оптимизация энергопотребления и т. д.)
- Улучшения функциональности, предоставления новых возможностей для разработчиков и пользователей
- Улучшения безопасности (исправление уязвимостей и багов, внедрение новых методов защиты и т. п.)
Поднятие версии API позволяет улучшать функциональность и производительность устройств и приложений, а также обеспечивать безопасность в новых условиях рынка.
Как поднять версию?
Краткая справка для разработчиков. Нативно, на Kotlin это делается так:
- Найдите строку с compileSdkVersion и измените значение на необходимую версию API.
- После этого измените значения minSdkVersion и targetSdkVersion (если необходимо). Установите их в ту же версию, которую вы указали в строке compileSdkVersion.
- Сохраните build. gradle.
- Пересоберите проект с очисткой
Моя команда пишет на кроссплатформе Ionic, которая в основе имеет Cordova. Там это делается через поднятие версии Cordova:
- Откройте терминал и перейдите в корневую папку проекта Ionic.
- Затем обновите Cordova Android: ionic cordova platform update android
- После успешной установки последней версии платформы Android, обновите ваш build. gradle файл который находиться в каталоге /platforms/android/app/build. gradle.
- В файле build. gradle, измените значение minSdkVersion на 33 (текущая версия). Вы также можете изменить значение targetSdkVersion на последнюю доступную версию Android.
- Сохраните и закройте build. gradle.
- Повторно скомпилируйте и запустите приложение с последней версией Android, чтобы убедиться, что все функции правильно работают.
Теперь ваш проект Ionic поддерживает более высокие версии API в Android.
9.1K показов
4.8K открытий
5 комментариев
Вообще, расклад будет такой по версиям API и требованиям к Android версиям:
Целевой уровень API 33:
— Android 12 (API level 31) и выше — полная поддержка функций.
— Android 11 (API level 30) и выше — некоторые функции могут быть ограничены или недоступны.
Целевой уровень API 31:
— Android 12 (API level 31) и выше — полная поддержка функций.
— Android 11 (API level 30) и выше — некоторые функции могут быть ограничены или недоступны.
Целевой уровень API 30:
— Android 11 (API level 30) и выше — полная поддержка функций.
— Android 7.0 (API level 24) и выше — некоторые функции могут быть ограничены или недоступны.
Уровень API 29 для Wear OS:
— Android 10 (API level 29) и выше — полная поддержка функций.
— Android 7.0 (API level 24) и выше — некоторые функции могут быть ограничены или недоступны.