Разработать приложение для Android для всех версий

Я разрабатываю приложение для Android и не знаю, как сделать его совместимым со всеми версиями. В eclipse я выбираю только один уровень API, а в androidManifest я пытался поставить minSdk и MaxSdk, охватывающие всю версию, но он вылетает на некоторых ОС с другой версией. Как я могу сделать его совместимым со всеми версиями? Можешь мне помочь?


person JackTurky    schedule 23.09.2011    source источник


Ответы (2)


Я бы сказал, что вы очень усложните себе жизнь, пытаясь заставить ваше приложение работать на устаревших версиях Android (и под этим я подразумеваю 1.5 и 1.6). Как упомянул Sky, ориентируйтесь только на Android 2.1 и выше.

Не могли бы вы указать, какое исключение выдается при попытке запустить приложение на другой версии ОС?

Вот определение моего приложения в манифесте.

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="10">

Такое определение не гарантирует, что ваше приложение будет работать на Froyo, Gingerbread и Gingerbread_MR1. Вот пример: я не могу использовать requestSingleUpdate() из LocationManager. класс в моем приложении, потому что он был добавлен только на уровне API 9 (и я намереваюсь, чтобы мое приложение работало на уровне API 8!).

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

person thegreendroid    schedule 23.09.2011
comment
Хорошо понял! но я не знаю, как сделать то же самое во всех версиях. Пример: если я хочу использовать android.media.audiofx, на уровне API 7 и выше это не работает. - person JackTurky; 23.09.2011
comment
Как упомянул Скай, очевидным решением является сторонняя библиотека. Тем не менее, я быстро просмотрел и не нашел реальных альтернатив для android.media.audiofx из того, что я мог найти. - person thegreendroid; 23.09.2011
comment
что я могу сделать? можно ли проверить версию динамически? - person JackTurky; 23.09.2011
comment
Да, вы можете, взгляните на Build.Version и этот вопрос - person thegreendroid; 24.09.2011
comment
вы знаете решение моей проблемы? что я могу сделать? я хочу использовать класс визуализатора, который определен только с уровня API 9 :( - person JackTurky; 25.09.2011
comment
Как я уже сказал, я не смог найти эквивалентную замену сторонней библиотеки для android.media.audiofx. Боюсь, вам придется обойтись без этой функции в вашем приложении на старых телефонах (‹ уровень API 9). Лучше всего проверять версию динамически и отключать эту функцию, если уровень API ‹ 9. - person thegreendroid; 26.09.2011
comment
Моя проблема заключается в том, чтобы динамически загружать библиотеку, например audiofx. Если я проверяю версию во время выполнения, я делаю два разных способа: if(version‹=9) setup1(); иначе setup2(); в setup2 я не загружаю библиотеку, но я вызываю объект, например визуализатор, непосредственно из пакета ( android.media.audiofx.Visualizer vis = new android.media.audiofx.Visualizer(); ), но когда это приложение запускается на устройстве с уровень API ‹9 дает сбой, я думаю, что он тоже компилирует этот код, но пакет не основан .. правда? что я могу сделать? большое спасибо - person JackTurky; 27.09.2011
comment
Вы просто не можете использовать эту библиотеку на более ранних версиях Android. Сколько еще раз мы должны упоминать об этом? Позвольте мне еще раз заявить: ВЫ НЕ МОЖЕТЕ ИСПОЛЬЗОВАТЬ android.media.audiofx НА ANDROID 2.2 И НИЖЕ. - person Sky Kelsey; 28.09.2011

Вам действительно нужна поддержка всех версий? Посмотрите на эту диаграмму, которую команда Android обновляет ежемесячно, и показывает, какой процент устройств работает под управлением той или иной версии Android. Как видите, 97% устройств на Android 2.1+.

Я рекомендую поддерживать только Android 2.1+ (уровень API 7), если вы можете.

Версии платформы Android

person Sky Kelsey    schedule 23.09.2011
comment
если я использую API уровня 7 (2.1), он будет работать и с более высокими версиями? - person JackTurky; 23.09.2011
comment
Насколько я знаю: Да. Статья на эту тему: developer.android.com/resources/articles/future- проверка.html - person Sky Kelsey; 23.09.2011
comment
Проблема в том, что пакет android.media.audiofx не найден на этом уровне API :( - person JackTurky; 23.09.2011
comment
@JacopoTurchi, ты сам решил проблему. Если вам нужен этот пакет, вы говорите об Android 2.3+, что составляет всего 30% от установленной базы. Можете ли вы вместо этого использовать стороннюю библиотеку? - person Sky Kelsey; 23.09.2011
comment
почему бы и нет, но я не знаю, где его найти! :) Много разрабатываю на java, но это первое приложение на android! :) - person JackTurky; 23.09.2011