Поддержка атрибутов манифеста с более высокого уровня API при построении на более низком уровне API? - PullRequest
3 голосов
/ 13 сентября 2011

У меня есть приложение, которое должно быть совместимо с Android 2.1 (Eclair, API Level 7).Я хочу использовать атрибут manifest, который поддерживается только в Android 2.2+ (Froyo, API Level 8).Как правило, я не хочу напрямую вызывать (т. Е. Не через отражение) ЛЮБОЙ API уровня 8 из моего кода.

Принятое решение этой проблемы - компилировать с Froyo(API 8) и включите тэг Использования-SDK в список самых простых для обозначения обратной совместимости:

<uses-sdk android:minSdkVersion="7"/>

Предостережение: мы должны быть осторожны и тщательно тестировать (с помощью автоматических тестов и / или вручную)Eclair, чтобы убедиться, что мы случайно не использовали вызов API для Froyo.

На мой взгляд, это вряд ли приемлемое решение.Я настоятельно предпочитаю использовать рефлексию только для вызова API выше базового требования приложения и хочу поддерживать только параметры манифеста выше базового уровня.Есть ли какие-либо средства, чтобы просто и просто обойти это?

Мой текущий обходной путь - удалить записи манифеста, которые не совместимы с базовым API, и выполнить тестовую компиляцию перед любым открытым выпуском.

Спасибо за любые предложения!

1 Ответ

0 голосов
/ 24 декабря 2013

Это лучшее, что вы можете сделать прямо сейчас.

Это касается использования неподдерживаемых / устаревших атрибутов в файлах макета. Вы не можете поместить условия в файл манифеста или любые другие файлы ресурсов.

Но я не думаю, что это большая проблема, по крайней мере, на данный момент, поскольку с этого момента большинство пользователей будут переходить на последние версии (4.0 и выше).

...