Использование атрибутов уровня 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>