Какова цель и целевого API и minSDK

Кто-то может объяснить мне различие между целью проекта и минимальным SDK? Я хочу, чтобы мое приложение работало на устройствах Пончика, и APK, который я создал с целью 7, работал просто великолепно. Когда я установил явный минимальный SDK в декларации Android 4 (1.6) компилятор, испорченный во мне, что цель превысила минимум. Я сбросил цель к 4 только для наблюдения то, что произойдет, и теперь у меня есть ошибки компилятора. Примером является константа START_NOT_STICKY в android.app. Сервис. Это не существует на уровне API 4, но действительно существует на уровне API 7. Это также имеет место с Service.onStartCommand (). На уровне API 7 Вы должны к explicity переопределить этот метод, тогда как на уровне API 4 Вы не делаете.

Итак, почему приложение работает в 1,6 несмотря на все это? Как 1.6 мог знать, как использовать SERVICE_NOT_STICKY, когда связанный уровень API не знает об этом?

5
задан Scott Ferguson 3 May 2010 в 00:28
поделиться

1 ответ

Если вы хотите использовать какую-то новую модную функцию, но при этом хотите сохранить обратную совместимость, то здесь вам пригодятся targetSdkVersion и minSdkVersion.

Для обеспечения обратной совместимости вам необходимо осторожно относиться к каждому новому API, начиная с minSdkVersion. То есть дважды проверьте, что у вас есть доступ к ним, используя отражение или Build.VERSION.SDK_INT . Если вы этого не сделаете, ваше приложение выйдет из строя и сгорит, потому что не сможет найти API, которые вы пытаетесь использовать.

Вы также хотите прочитать каждую строку документации, касающуюся измененных API (например, Service .onStartCommand (..)), чтобы вы могли правильно обрабатывать каждый фрагмент данных, который он получает, с обратной совместимостью. .

Что касается констант, они, скорее всего, скомпилированы в ваш код как строки / целые числа, и когда более старая версия получает неизвестное значение, она просто игнорирует его. Однако это теория, поэтому вам следует проверить ее, прежде чем широко использовать.

Кроме того, насколько мне известно, система не проверяет minSdkVersion и targetSdkVersion. Только Android Market делает это. Поэтому, если у вас есть некоторые приложения, которые не должны работать на вашем устройстве, и вы все еще пытаетесь их использовать, снова вылетает и сгорает.

4
ответ дан 15 December 2019 в 00:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: