Что изменится в поведении если поменять compileSdkVersion, а targetSdkVersion оставить прежним

«Что изменится в поведении если поменять compileSdkVersion, а targetSdkVersion оставить прежним» — вопрос из категории Gradle и сборка, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Изменение compileSdkVersion влияет только на компиляцию - позволяет использовать новые API и проверять код на соответствие выбранной версии SDK. Поведение приложения на устройстве не изменится, так как оно определяется targetSdkVersion.

Пример:

android {
    compileSdkVersion 34 // можно использовать API Android 14
    targetSdkVersion 33 // поведение как в Android 13
}

Нюансы:

  • Новые API будут доступны только если compileSdkVersion повышен
  • Линтер может выдавать предупреждения о новых требованиях
  • Совместимость с библиотеками - они могут требовать определенный compileSdkVersion