#gradle
Уверен, что каждый из вас хотя бы раз обновлял параметры
compileSdkVersion и targetSdkVersion. Чаще всего, мы обновляем их вместе, иногда ставим одно и то же значение, не задумываясь о том, что они значат, и для чего нужны. Вот вам отличная статья, которая описывает разницу между этими параметрами. Если совсем кратко:
🔹 compileSdkVersion определяет, какая версия Android SDK будет использоваться gradle для компиляции вашего приложения.
Например, в последней версии Android появилось новое API для работы со splash-экранами. Если вы хотите использовать данную фичу, то вам следует поднять ваш
compileSdkVersion до 31 версии. Это не значит, что теперь вы будете использовать только новое API и забудете о пользователях, которые находятся на более старых версия системы. В случае, если
minSdkVersion меньше, чем 31 вам потребуется сделать реализацию splash также и для остальных пользователей.Частенько после изменения compileSdkVersion вы можете увидеть warnings и ошибки в логах, так как некоторые методы могут стать deprecated, а API поменяться.
🔹targetSdkVersion определяет, на какой версии системы ваше приложение было протестировано и создано.
Если запустить приложение на версии Android, которая выше, чем ваша
targetSdkVersion, то система постарается сделать backwards-compatibility для некоторых из фич, добавленных именно в этой системе. Например, в Android 12 поменялся дизайн отображения уведомлений, и они будут выглядеть по-разному, если вы поставите
targetSdkVersion 30 или 31. Кстати, между этими параметрами можно выделить следующее правило:
targetSdkVersion не может быть больше compileSdkVersion, а в идеале они должны быть равны между собой и равны последней версии SDK.