Кекс, пончик, Эклер, Froyo, Gingerbread, Honeycomb, Ice Cream Sandwich… Возможно, вы слышали, как разработчики Android говорили об этих кодовых именах платформ, и задавались вопросом, как отслеживать все эти разные версии платформы Android. В этом руководстве вы узнаете все, что вам нужно знать о версиях платформы Android.
Платформа Android постоянно развивается. Разработчики, которые хотят писать приложения для Android для конкретных устройств, должны знать о версиях платформы, которые они должны поддерживать, и о том, как этого добиться.
Как работает версия Android
Версии платформы Android помечаются различными способами: по номеру версии, по коду и по уровню API.
- Номер версии — это традиционная инкрементная версия, связанная с прогрессом платформы. Например, первый официальный выпуск Android был Android 1.0. Следующим второстепенным выпуском был Android 1.1 и так далее. Выпуски Android различаются по важности. Очень незначительный выпуск может получить приращение в десятую или даже сотую часть. Основной выпуск обычно увеличивается на целое число. Например, 2.0.
- Кодовое имя — это понятное имя, связанное с существенным обновлением платформы и соответствующее определенной версии Android или диапазону версий. Первые два выпуска платформы Android не имели официальных (и внешних) кодовых имен, но каждая важная последующая версия имеет, независимо от того, была ли это версия с целым номером или нет. Кодовые названия в алфавитном порядке и связаны с конфетами, такими как кексы, пончики и, совсем недавно, сэндвичи с мороженым. Незначительные выпуски или обновления не получают кодовые имена, но сохраняют прежнее кодовое имя и помечены как MR. Например, Honeycomb (Android 3.0) был выпущен в феврале 2011 года, Honeycomb MR1 (Android 3.1) был выпущен в мае того же года.
- Уровень API — это число, определяющее, какая версия Android SDK (набор API) совместима с конкретной версией платформы Android. Как платформа Android созрела, так и Android SDK. Со временем к платформе были добавлены новые классы, методы и функции. Каждый новый класс или метод определяет уровень API, на котором он был представлен. Эти функции доступны только для приложений, предназначенных для устройств, работающих под управлением версии платформы, соответствующей уровню API или выше.
- Android 1.0 соответствует API Level 1. Эта первая официальная версия платформы Android не имела кодового имени.
- Android 1.1 соответствует API Level 2. Эта вторая официальная версия платформы Android не имела кодового имени.
- Android 1.5 соответствует API Level 3. Эта версия платформы Android получила кодовое название Cupcake.
- Android 1.6 соответствует API Level 4. Эта версия платформы Android получила кодовое название Donut.
- Android 2.0 соответствует API Level 5. Эта версия платформы Android получила кодовое название Eclair.
- Android 2.0.1 соответствует API Level 6. Эта версия платформы Android получила кодовое имя Eclair _0_1.
- Версии Android 2.1.X соответствуют API Level 7. Эти версии платформы Android носили кодовое название Eclair MR1.
- Версии Android 2.2.X соответствуют API Level 8. Эти версии платформы Android носили кодовое имя Froyo.
- Android 2.3, 2.3.1 и 2.3.2 соответствуют API Level 9. Эти версии платформы Android носили кодовое имя Gingerbread.
- Android 2.3.3 и 2.3.4 соответствуют API Level 10. Эти версии платформы Android носили кодовое название Gingerbread MR1.
- Версии Android 3.0.X соответствуют API Level 11. Эти версии платформы Android носили кодовое название Honeycomb.
- Версии Android 3.1.X соответствуют API Level 12. Эти версии платформы Android носили кодовое название Honeycomb MR1.
- Версии Android 3.2.X соответствуют API Level 13. Эти версии платформы Android носили кодовое название Honeycomb MR2.
- Android 4.0 (ожидается осенью 2011 года), скорее всего, будет соответствовать API Level 14. Следующая версия платформы Android получила кодовое название Ice Cream Sandwich.
Мало того, что версии Android имеют имена, версии и уровни API … они также имеют логотипы!
Дополнительные сведения о версиях платформы, уровнях API и кодовых именах см. В приложении «Уровни API Android» в документации по Android SDK .
Указание целевого диапазона SDK приложения Android
Приложения Android компилируются для определенной версии Android SDK, как это определено в настройках проекта при создании или обновлении проекта. Цель платформы также определяется в файле манифеста Android, связанном с данным приложением, с использованием значения уровня API.
Разработчики могут использовать тег для указания версий платформы Android, поддерживаемых приложением. Этот тег имеет три атрибута:
- android: minSdkVersion: минимальная версия платформы Android, поддерживаемая приложением, указанная в качестве уровня API. Хотя приложение не скомпилировано с этой версией Android SDK, разработчики должны использовать этот атрибут для указания совместимости. Если это значение не установлено, предполагается, что приложение совместимо со всеми версиями Android SDK. Использование этого атрибута настоятельно рекомендуется.
- android: targetSdkVersion: целевая версия платформы Android, поддерживаемая приложением, указанная в качестве уровня API. Обычно это версия Android SDK, скомпилированная и используемая для указания версии, для которой разработчик в первую очередь тестировал и разработал. Использование этого атрибута настоятельно рекомендуется.
- android: maxSdkVersion: максимальная версия платформы Android, поддерживаемая приложением, указанная в качестве уровня API. Использование этого атрибута не рекомендуется по разным причинам и постепенно прекращается.
Вообще говоря, большинство разработчиков хотят поддерживать как можно больше разных устройств с помощью одного файла пакета приложения. Это означает настройку самого широкого диапазона уровней API для minSdkVersion и targetSdkVersion. Однако, если вы указываете, что ваше приложение совместимо с данной версией, убедитесь, что это действительно так! Откуда вы знаете? Что ж, вам нужно убедиться, что вы используете только те функции Android SDK, которые были представлены на уровне minSdkVersion API или ниже. Мы обсудим, как вы определите это в данный момент.
Какие версии стоит поддерживать? Знание самых популярных версий устройств на рынке сегодня может помочь вам принять это решение (рисунок 2).
Вы можете найти самую свежую информацию, которая обычно обновляется примерно каждые две недели, на сайте разработчика Android .
Разве я не хочу ориентироваться на последнюю версию Android SDK?
Разработчики, не знакомые с платформой, часто подключаются и устанавливают новейшие инструменты Android и Android SDK и думают, что все будет работать на всех устройствах. Это не вариант.
Каждая функция Android SDK, будь то класс, интерфейс, метод, константа или что-то еще, была представлена в определенной версии SDK (указанной в API Level). Поэтому вы должны убедиться, что ваше приложение использует только функции Android SDK, которые соответствуют уровню API minSdkVersion и ниже. Например, если вы утверждаете, что ваше приложение совместимо с Android 1.6 или API уровня 4, вы не можете использовать метод dispatchGenericMotionEvent () класса Activity (http://developer.android.com/reference/android/app/ Activity.html # dispatchGenericMotionEvent (android.view.MotionEvent), который был представлен в API Level 12 или Android 3.1. Примечание: существуют способы условного использования различных методов Android SDK во время выполнения, но эти методы выходят за рамки этого учебника для начинающих. ,
Как узнать уровень API функции Android SDK?
Уровень API Android указан в документации по Android SDK. Для классов и интерфейсов уровень API указан в правом верхнем углу справочной документации по классам, как показано на рисунке 3.
Для констант, конструкторов, методов и тому подобного уровень API указан в правой части описательной надписи для элемента, как показано на рисунке 4.
По умолчанию документация Android SDK отображает классы API, методы и прочее для всех версий платформы Android. Однако вы можете отфильтровать онлайн-документацию по уровню API, установив параметр «Фильтровать по уровню API» в верхнем правом углу на вкладке «Справка» документации веб-сайта разработчика Android, как показано на рисунке 5. Представленные функции API после этого уровень API будет недоступен.
Определение версии устройства для Android
Устройства Android работают с определенной версией платформы. Тем не менее, этот номер версии может меняться со временем, когда операторы и операторы распространяют обновления встроенного ПО по конкретным устройствам.
Вы не можете полагаться на конкретное устройство, всегда имеющее определенную версию Android. Разные носители могут нести одно и то же устройство, но развертывать обновления с разными интервалами или не делать вообще!
Как пользователь устройства вы можете определить версию платформы Android, запустив приложение «Настройки», нажав «О телефоне» или «О планшете» (зависит от типа вашего устройства) и проверив значение параметра версии Android. Это даст вам версию платформы Android, которая в данный момент работает на устройстве.
Как разработчик, вы можете программно проверять версию платформы Android во время выполнения, используя класс android.os.Build.VERSION. Смотрите документацию к классу для более подробной информации .
Вывод
Устройства Android работают под управлением разных версий Android SDK. На версии ссылаются по номеру версии, кодовому имени и уровню API. Разработчики должны знать, какие функции Android SDK они используют для создания своих приложений, поскольку эти решения по проектированию влияют на то, с какими версиями платформы Android их приложение будет совместимо.
Об авторах
Разработчики мобильных приложений Лорен Дарси и Шейн Кондер являются соавторами нескольких книг по разработке Android: углубленная книга по программированию под названием « Разработка беспроводных приложений для Android, второе издание» и « Самс научи себя разработке приложений для Android за 24 часа, второе издание» . Когда они не пишут, они тратят свое время на разработку мобильного программного обеспечения в своей компании и оказание консультационных услуг. С ними можно связаться по электронной почте [email protected] , через их блог на androidbook.blogspot.com и в Twitter @androidwireless .