В чем различия между "min sdk version / target sdk version" и "compile sdk version"? Я знаю, что означает min и target sdk, но что означает версия sdk для компиляции?
В Eclipse у меня есть min / max и целевой SDK, но в Android Studio есть эти три настройки.
android
android-studio
Тобиас
источник
источник
Ответы:
Версия min sdk - это самая ранняя версия Android SDK, на которой может работать ваше приложение. Обычно это происходит из-за проблемы с более ранними API, отсутствия функциональности или из-за других поведенческих проблем.
Версия целевой SDK является версия ваша заявка была направлена работать на. В идеале это из-за каких-то оптимальных условий работы. Если бы вы должны были «сделать ваше приложение для версии 19», это то, где это будет указано. Он может работать на более ранних или более поздних выпусках, но это то, к чему вы стремились. Это в основном указывает на то, насколько актуально ваше приложение для использования на рынке и т. Д.
Версия компиляции SDK является версией андроида ваш IDE (или другие средства компиляции я предполагаю) использует , чтобы сделать ваше приложение , когда вы публикуете
.apk
файл. Это полезно для тестирования вашего приложения, так как это общая необходимость для компиляции вашего приложения по мере его разработки. Так как это будет версия для компиляции в APK, это, естественно, будет версия вашего выпуска. Также желательно, чтобы это соответствовало вашей целевой версии SDK.источник
Формула
minSdkVersion - это маркер, который определяет минимальную версию Android, на которую приложение сможет установить. Также он используется Lint для предотвращения вызова API, который не существует. Также это влияет на время сборки. Таким образом, вы можете использовать варианты сборки, чтобы переопределить minSdkVersion до максимума во время разработки. Это поможет сделать сборку быстрее, используя все улучшения, которые предоставляет нам команда Android. Например, некоторые функции Java 8 доступны только из определенной версии minSdkVersion.
targetSdkVersion - говорит системе Android, чтобы включить определенные изменения поведения.
Например:
Начиная с Android 6.0 (уровень API 23)
Runtime Permissions
были введены. Если вы установилиtargetSdkVersion
22 или ниже, ваше приложение не запрашивает у пользователя разрешения во время выполнения.Начиная с Android 8.0 (уровень API 26), все
notifications
должны быть назначены каналу, иначе он не появится. На устройствах под управлением Android 7.1 (уровень API 25) и ниже пользователи могут управлять уведомлениями только для каждого приложения (фактически каждое приложение имеет только один канал на Android 7.1 и ниже).Начиная с Android 9 (уровень API 28)
Web-based data directories separated by process
. ЕслиtargetSdkVersion
28+ и вы создаете несколькоWebView
в разных процессах, вы получитеjava.lang.RuntimeException
compileSdkVersion - фактически это версия платформы SDK и сообщает Gradle, какой Android SDK использует для компиляции. Если вы хотите использовать новые функции или отлаживать
.java
файлы из Android SDK, вам следует позаботиться о compileSdkVersion. Еще один пример - использование AndroidX, которое вынуждает использоватьcompileSdkVersion
- уровень 28.compileSdkVersion
не включен в ваш APK : он используется исключительно наcompile time
. Изменение вашего compileSdkVersion не меняет поведение во время выполнения. Он может генерировать, например, новые предупреждения / ошибки компилятора. Поэтому настоятельно рекомендуется всегда компилировать с последним SDK. Вы получите все преимущества новых проверок компиляции в существующем коде, избежите новых устаревших API и будете готовы использовать новые API. Еще один фактcompileSdkVersion >= Support Library version
Вы можете прочитать больше об этом здесь . Также я бы порекомендовал вам взглянуть на пример перехода на Android 8.0.
источник
Версия min sdk - это минимальная версия операционной системы Android, необходимая для запуска вашего приложения.
Версия целевого SDK является версией Android , что ваше приложение было создано , чтобы работать дальше.
Версия компиляции SDK является версией Android , что инструменты для сборки использует для компиляции и сборка приложения, чтобы освободить, выполнение или отладку.
Обычно версия SDK для компиляции и целевая версия SDK совпадают.
источник
compileSdkVersion : compileSdkVersion - это версия API, для которой компилируется приложение. Это означает, что вы можете использовать функции Android API, включенные в эту версию API (очевидно, как и все предыдущие версии). Если вы попробуете использовать функции API 16, но установите для compileSdkVersion значение 15, вы получите ошибку компиляции. Если вы установите compileSdkVersion в 16, вы все равно сможете запустить приложение на устройстве API 15.
minSdkVersion : версия min sdk - это минимальная версия операционной системы Android, необходимая для запуска вашего приложения.
targetSdkVersion : целевая версия sdk - это версия, на которую нацелено ваше приложение.
источник