Если вы хотите использовать какую-то новую необычную функцию, но также хотите поддерживать обратную совместимость, вот где вступают в игру targetSdkVersion и minSdkVersion.
Чтобы поддерживать обратную совместимость, вам нужно бережно относиться к каждому новому API сверху minSdkVersion. Т.е. дважды проверьте, что у вас есть доступ к ним, используя отражение или Build.VERSION.SDK_INT . Если вы этого не сделаете, ваше приложение упадет и сгорит, потому что не может найти API, который вы пытаетесь использовать.
Вы также хотите прочитать каждую строку документации, касающуюся измененных API (т. Е. Service .onStartCommand (..)), чтобы вы могли обрабатывать каждый фрагмент данных, который он получает правильно и обратно совместимым способом. .
Что касается констант, они, скорее всего, скомпилированы в ваш код как строки / целые числа, и когда более старая версия получает неизвестное, она просто игнорирует ее. Однако это теория, поэтому вы должны проверить ее, прежде чем широко ее использовать.
Кроме того, насколько я знаю, система не проверяет ни minSdkVersion, ни targetSdkVersion. Это делает только Android Market. Так что, если вы заполучили некоторые приложения, которые не должны работать на вашем устройстве, и вы все еще пытаетесь их использовать, снова вылетайте и горите.