Использование атрибутов уровня API за пределами minSdkVersion

Я новичок в разработке Android, и мне интересно, что произойдет, если вы используете атрибуты на тегах XML с уровня API, превышающего ваш minSdkVersion.

Например, имея:

<uses-sdk
    android:minSdkVersion="9"
    android:targetSdkVersion="20" />

И затем используя это:

<activity android:logo="@drawable/iconwhatever"></activity>

Атрибут "android: logo" относится к уровню API 11.

В Android Studio он дает следующую ошибку, но я хочу знать, что может произойти, если это останется в покое:

Attribute "logo" is only used in API level 11 and higher. (Current min is 9)

Любая помощь в этом отношении будет принята с благодарностью.

Ответы

Ответ 1

Неподдерживаемые атрибуты безопасно игнорируются.

В SDK документации:

При анализе ресурсов XML Android игнорирует атрибуты XML, которые поддерживаются текущим устройством. Таким образом, вы можете безопасно использовать атрибуты XML, которые поддерживаются только более новыми версиями, не беспокоясь о том, что старые версии ломаются, когда они сталкиваются с этим кодом.

Ответ 2

Для атрибутов XML его безопасные использовать атрибуты из новых API (они просто будут проигнорированы, поскольку синтаксический анализатор XML даже не будет искать их в более старых версиях).

Ответ 3

В этом случае манипуляция атрибутами, которые являются разными API, должна выполняться с помощью кода, а не в формате XML.

В коде вы можете его обработать.

Например:

 if(Build.Version.SDK_INT > 10){

     .... use an attribute

   }
else{

    .... use other
}

В вашем конкретном случае используйте "значок"

<activity android:icon="@drawable/iconwhatever"></activity>