2010-06-02 2 views
3

Я купил HTC Incredible и нырнул в мир андроида! Только чтобы полностью погрузиться в уровень API и обратную совместимость.Confused об API API и совместимости

Мое устройство работает под ОС 2.1, но я знаю, что большинство устройств там работают 1,5 или 1,6; и вскоре OS 2.2 будет работать на новых устройствах. SDK пережил такие огромные изменения, что даже константы были переименованы (например, с VIEW_ACTION на ACTION_VIEW). Методы были добавлены и удалены (onPause заменяет предыдущий вызов и т. Д.).

Итак, если я хочу написать приложение, которое будет работать от 1.6+, значит ли это, что мне нужно установить и написать свой код с использованием API 1.6? затем проверить на более поздних версиях? Или я могу написать, используя SDK 2.1, и просто установить уровень minSDK и не использовать «новые» функции?

Я никогда не работал с SDK, который сильно меняется с момента выпуска до выпуска! Поэтому я не уверен, что делать ....

Я прочитал статью на сайте Android Development (и это сообщение о переполнении стека, которое ссылается на него: Should a legacy Android application be rebuilt using SDK 2.1?), но мне все еще было не очень понятно. Любая помощь будет принята

+0

см также http://stackoverflow.com/questions/4968988/what-if-i-want-to-release-an-update-with-high-minsdk-than-the-one-on-market/4969477 # 4969477 – rds

ответ

5

В SDK пережила такие огромные изменений, что даже постоянные были переименован (от VIEW_ACTION до ACTION_VIEW, например). Методы добавлены и удалены (onPause , заменив предыдущий вызов и т. Д.).

Это были два года назад на бета-версии платформы, прежде чем появились какие-либо устройства доставки. Начиная с Android 1.0, было очень мало того, что прерывает совместимость, в основном в области настроек, которые были перенесены в защищенный API, поэтому приложения SDK не могут с ними общаться.

Итак, если я хочу написать заявление , который будет работать с 1.6+, делает это означает, что я должен установить и написать мой код с помощью API 1.6; затем проверить на более поздних версиях? Или я могу написать с помощью 2.1 SDK и просто установить уровень minSDK и не использовать «новые» функции?

Вы считаете, что они взаимоисключающие. Фактически, они в значительной степени идентичны.

  • Держите набор инструментов на последней версии Android инструменты разработки
  • Поместите minSdkVersion в манифесте, чтобы утверждать, что это самый низкий уровень API вы хотите поддержать
  • Поместите targetSdkVersion в манифесте в состоянии что ваш «целевой» уровень API, поэтому Android может применять некоторые помощники совместимости, если ваше приложение работает на более новой версии Android (обычно вы «нацеливаетесь» на текущий уровень API)
  • Напишите свой код в основном API уровень, указанный в minSdkVersion, опционально с использованием reflection или conditional class loading для доступа новые API-интерфейсы на устройствах, поддерживающих их
  • Тест на все, что вы можете получить ваши руки, по крайней мере, эмуляторы для различных уровней API
+0

отличное спасибо. Это то, что я «думал», должно быть, но просмотр старых сообщений и даже некоторых образцов, которые были написаны со старыми SDK, меня смутили. :) Thanx много. Сделал мою голову прекратить вращение – Keith

3

Вы можете использовать текущий SDK и установить уровень minSDK на любой уровень, который вы хотите. Если вы это сделаете, вы не сможете использовать какие-либо функции, не входящие в minSDK. Также неплохо было протестировать его на всех версиях SDK с эмулятором.

<uses-sdk minSDK="4" targetSDK="8"/> 

Это позволяет ему знать, что вы ориентируетесь 2.2, но минимальный уровень SDK вы хотите, чтобы ваше приложение для запуска на 1,6. Делая это, вы можете использовать некоторые новые XML вещей в более новых версиях, поддерживаемый экрана и различный для различных вводимого коэффициента экранов и т.д.

Смежные вопросы