Страницы

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

вторник, 31 декабря 2019 г.

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

#android #android_studio


Допустим, в 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 соотносятся?..
    


Ответы

Ответ 1



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

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

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