2021-06-15 15:05:00
compileSdkVersion vs targetSdkVersion#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.
1.3K views12:05