Страницы

Поиск по вопросам

понедельник, 24 декабря 2018 г.

Различные …SdkVersion в build.gradle файле

Допустим, в build.gradle файле есть следующие строки:
android { compileSdkVersion 25 buildToolsVersion "25.0.2" defaultConfig { applicationId "com.common.app" versionCode 1 versionName "1.0" minSdkVersion 15 targetSdkVersion 18 } }
Что значит minSdkVersion более-менее понятно - минимальная версия уровня API, на устройствах с API ниже которой приложение не будет запускаться. А что значат остальные ...SdkVersion: targetSdkVersion, compileSdkVersion и buildToolsVersion?
Да, я читала, что targetSdkVersion - это версия API, о которой ты думаешь, когда пишешь приложение (типа API целевого устройства), compileSdkVersion - это версия API для компиляции, buildToolsVersion - версия Android SDK build tools, но как-то это не добавляет понимания, зачем их нужно так много... А ещё же есть Android Plugin Version и Gradle Version - как они со всеми этими ...SdkVersion соотносятся?..


Ответ

Gradle version - версия, использумая для обработки gradle скриптов, влияет на процесс сборки (косвенно зависит от Android Gradle Plugin)
Android Gradle Plugin version - версия плагина, для обработки секции android { ... } в build.gradle, влияет на процесс сборки (зависит от необходимой поддержки: например нативная поддержка лямбд из JDK8 требует 2.4.0+)
buildToolsVersion (рекомендуется последняя) - версия утилит (dx, aapt, etc) из sdk/build-tools/, которые будут использоваться для сборки (не зависит)
minSdkVersion - прописывается в AndroidManifest, приложение не установится, если системный SDK меньше. (не зависит)
maxSdkVersion (редко используется) - прописывается в AndroidManifest, приложение не установится, если системный SDK больше. (не зависит)
compileSdkVersion - версия android.jar, которая будет подключаться при компиляции, если будет попытка использовать API из новой версии - не скомпилируется (зависит от java кода)
targetSdkVersion - не влияет на компиляцию, это обещание для системы "приложение должно хорошо работать на версии Х", влияет на то, будут ли включаться legacy-механизмы (например, для разрешений при targetSdkVersion < 23). Так же может влиять на внешний вид приложения
Так же должно выполняться: minSdkVersion <= targetSdkVersion <= compileSdkVersion

Комментариев нет:

Отправить комментарий