Санкт-Петербургский государственный университет
Опубликован: 24.10.2012 | Доступ: свободный | Студентов: 8202 / 915 | Оценка: 4.00 / 4.00 | Длительность: 05:26:00
Специальности: Системный архитектор
Лекция 1:

Введение в разработку Android-приложений

Аннотация: Краткая история ОС Android. Intel для Android: партнерство и инструментарий разработчика. Архитектура приложений для Android. Ресурсы приложения. Пользовательский интерфейс. Инструментарий разработки приложений для Android. Обзор шагов разработки типичного приложения под Android. Особенности разработки с использованием эмулятора. Отладка кода в эмуляторе и на реальных устройствах.

Презентацию к лекции Вы можете скачать здесь.

1.1. Введение. История Android

Android – открытая операционная система для мобильных телефонов, смартфонов, коммуникаторов, планшетных компьютеров, электронных книг, цифровых проигрывателей, наручных часов, нетбуков и смартбуков, основанная на ядре Linux и поддерживающая различные аппаратные платформы, такие как ARM, MIPS, POWER, x86.

Изначально разрабатывалась компанией Android Inc., которую затем (июль, 2005) купила Google. Впоследствии (ноябрь, 2007) Google инициировала создание бизнес-альянса Open Handset Alliance (в его состав вошли Google, HTC, Intel, Motorola, Nvidia и другие компании), который и занимается сейчас поддержкой и дальнейшим развитием платформы.

С момента выхода первой версии (сентябрь, 2008) произошло несколько обновлений системы. Эти обновления, как правило, касаются исправления обнаруженных ошибок и добавления нового функционала в систему. Каждая версия системы получает собственное кодовое имя на тему десерта.

1.2. Инструментарий разработчика

Перед тем, как приступить к созданию Android-приложений, необходимо выбрать подходящий инструментарий разработки.

Как правило, разработка Android-приложений осуществляется на языке Java. Поэтому, в первую очередь, необходимо установить Java Development Kit (JDK). Но для начала следует разобраться, что представляет из себя Java.

Java – это объектно-ориентированный язык программирования. Программы на Java транслируются в байт-код, выполняемый виртуальной машиной Java, которая обрабатывает байтовый код и передает инструкции оборудованию как интерпретатор. Достоинство подобного способа выполнения программ заключается в полной независимости байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью Java является гибкая система безопасности благодаря тому, что исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером) вызывают немедленное прерывание. Следует заметить, что фактически, большинство архитектурных решений, принятых при создании Java, было продиктовано желанием предоставить синтаксис, схожий с С/C++. В Java используются практически идентичные соглашения для объявления переменных, передачи параметров и операторов. Поэтому те, кто уже имеет опыт программирования на C/C++, смогут быстро освоиться и начать писать Java-приложения.

JDK – это бесплатно распространяемый комплект разработчика приложений на языке Java, включающий в себя компилятор Java, стандартные библиотеки классов Java, примеры, документацию, различные утилиты и исполнительную систему Java Runtime Environment (JRE). В состав JDK не входит интегрированная среда разработки (Integrated Development Environment). Поэтому после того, как будет установлен JDK, следует установить IDE.

Существует несколько популярных сред разработки, но в данном курсе мы остановим свой выбор на Eclipse IDE и соответствующем для нее плагине Android Development Tools (ADT).

Android Software Development Kit (SDK) содержит множество инструментов и утилит для создания и тестирования приложений. Например, с помощью SDK Manager можно установить Android API любой версии (Рис. 1.1), а также проверить репозиторий на наличие доступных, но еще не установленных пакетов и архивов.

Окно SDK Manager, в котором разработчику предоставляется возможность выбрать версии Android API для установки

Рис. 1.1. Окно SDK Manager, в котором разработчику предоставляется возможность выбрать версии Android API для установки

Android Native Development Kit (NDK) позволяет осуществлять разработку Android-приложений на языке C/C++. Зачем это может потребоваться? Есть несколько причин. Например, необходимость использовать код, который уже написан для нативной платформы, или ускорение выполнения критических кусков кода.

1.3. Архитектура Android

Рассмотрим основные компоненты операционной системы Android (Рис. 1.2).

Applications. Android поставляется с набором основных приложений, включающим календарь, карты, браузер, менеджер контактов и другие. Все перечисленные приложения написаны на Java.

Application Framework. Предоставляя открытую платформу разработки, Android дает разработчикам возможность создавать гибкие и инновационные приложения. Разработчики могут использовать аппаратные возможности устройства, получать информацию о местоположении, выполнять задачи в фоновом режиме, устанавливать оповещения и многое другое. Разработчики имеют полный доступ к тем же API, что используются в основных приложениях.

Архитектура приложений разработана с целью упрощения повторного использования компонентов; любое приложение может "публиковать" свои возможности и любое другое приложение может затем использовать эти возможности (с учетом ограничений безопасности). Этот же механизм позволяет заменять стандартные компоненты на пользовательские.

Архитектура операционной системы Android

Рис. 1.2. Архитектура операционной системы Android

Libraries. Android включает в себя набор C/C++ библиотек, используемых различными компонентами системы. Эти возможности доступны разработчикам в контексте применения Android Aplication Framework. Некоторые основные библиотеки, перечислены ниже:

  • Mедиа библиотеки – эти библиотеки предоставляют поддержку воспроизведения и записи многих популярных аудио, видео форматов и форматов изображений, в том числе MPEG4, MP3, AAC, AMR, JPG, PNG и других;
  • Surface Manager – управляет доступом к подсистеме отображения 2D и 3D графических слоев;
  • LibWebCore – современный веб-движок, на котором построен браузер Android;
  • SGL – основной графический движок 2D;
  • 3D библиотеки – реализованы на основе OpenGL; библиотеки используют либо аппаратное 3D-ускорение (при его наличии), либо включены программно;
  • FreeType – поддержка растровых и векторных шрифтов
  • SQLite – механизм базы данных, доступной для всех приложений.

Android Runtime. Android включает в себя набор основных библиотек, которые обеспечивают большинство функций, доступных в библиотеках Java. Каждое приложение Android работает в своем собственном процессе, со своим собственным экземпляром виртуальной машины Dalvik. Dalvik была написана так, что устройство может работать эффективно с несколькими виртуальными машинами одновременно.

Dalvik проектировалась специально под платформу Android. Виртуальная машина оптимизирована для низкого потребления памяти и работы на мобильном аппаратном обеспечении. Dalvik использует собственный байт-код. Android-приложения переводятся компилятором в специальный машинно-независимый низкоуровневый код. И именно Dalvik интерпретирует и выполняет такую программу при выполнении на платформе. Кроме того, с помощью специальной утилиты, входящей в состав Android SDK, Dalvik способна переводить байт-коды Java в коды собственного формата и также исполнять их в своей виртуальной среде.

Linux Kernel. Android основан на Linux версии 2.6 с основными системными службами – безопасность, управление памятью, управление процессами и модель драйверов. Разработчики Android модифицировали ядро Linux, добавив поддержку аппаратного обеспечения, используемого в мобильных устройствах и, чаще всего, недоступного на компьютерах.

1.4. Обзор Java-интерфейсов

Для прикладного программиста Android – это набор интерфейсов на языке Java. Рассмотрим, как он организован. В основе набора – пакеты, входящие в стандарт языка Java, такие как java.util, java.lang, java.io. Они есть на любой платформе, где могут быть запущены java-приложения, и неспецифичны для Android. К ним примыкают расширения, которые не входят в стандарт языка – пакеты javax.net, javax.xml и другие. Но самым большим и интересным является набор интерфейсов, созданных специально для Android. Рассмотрим некоторые из его пакетов.

Пакеты android.view и android.widget отвечают за графический интерфейс пользователя (Graphical User Interface). Они содержат набор встроенных виджетов, таких как кнопки и поля ввода, разметки для расположения виджетов на экране. С их помощью можно создать простейшее Android-приложение.

Для работы с примитивами рисования и графическими файлами предназначен пакет android.graphics, а с помощью android.animation можно создавать несложную анимацию.

Пакет android.opengl предоставляет движок OpenGL, android.gesture осуществляет поддержку управления жестами на сенсорном экране, позволяет распознавать жесты и создавать новые.

Большое количество интерфейсов предназначено для коммуникации. Пакет android.net включает стеки сетевых протоколов высокого уровня, таких как HTTP и SIP, поддержку Wi-Fi. Пакет android.webkit – популярный движок веб-браузера, который позволяет легко отображать веб-страницы в приложении. Пакеты android.bluetooth и android.nfc предоставляют стеки протоколов связи на коротких расстояниях BlueTooth и Near Field Communication соответственно. Пакет android.telephony дает доступ к телефонной функциональности – например, отправка SMS.

Для управления прикладными приложениями предназначен пакет android.app. Пакет android.hardware позволяет обращаться к камере и датчикам, а пакет android.location предоставляет информацию о географических координатах устройства, в том числе с помощью датчика GPS.

Пакет android.media отвечает за кодирование звуковых и видео потоков, для мобильных устройств это до сих пор вычислительно сложная задача, требующая качественной оптимизации. Пакет android.database предоставляет доступ к базам данных.

Сергей Петров
Сергей Петров
Дмитрий Григорьев
Дмитрий Григорьев

У меня вопросы: как переносить написанные программы на мобильные устройства (что переносить? в какую директорию?) и как распространять написанные программы?

Юрий Иванов
Юрий Иванов
Россия
Дмитрий Карачун
Дмитрий Карачун
Беларусь, Минск