Допустим, в 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
Комментариев нет:
Отправить комментарий