Введение в разработку для платформы Android

Платформа с открытым исходным кодом для специализированных устройств

Android — это полноценная операционная среда, основанная на ядре Linux® V2.6. На начальном этапе областью распространения Android был сегмент мобильных телефонов, включая смартфоны и более дешевые раскладные устройства. Однако полный спектр вычислительных сервисов и богатые функциональные возможности Android позволяют выйти за рамки рынка мобильных телефонов. Android может быть полезен для других платформ и приложений. Настоящая статья дает введение в платформу Android и учит программированию простых приложений для этой платформы.

Фрэнк Эйблсон, проектировщик ПО, Независимый разработчик

Когда Фрэнк Эйблсон (Frank Ableson) закончил карьеру баскетболиста в команде своего колледжа, не заключив многолетнего контракта с «Лос-Анджедес Лейкерс», он занялся разработкой компьютерных программ. Он любит решать сложные задачи, особенно из области связи и интерфейсов с аппаратурой. Свободное время Фрэнк проводит со своей женой Никки и детьми. С ним можно связаться по адресу: frank@cfgsolutions.com.



26.02.2010

Введение

BlackBerry и iPhone, две удобные и массовые мобильные платформы, олицетворяют собой противоположные концы спектра мобильных устройств. BlackBerry незаменим для корпоративного пользователя. В классе же потребительских устройств у iPhone мало конкурентов в части удобства обращения и «крутизны». Android, молодая и еще не утвердившаяся платформа, способна проявить себя на обоих концах спектра мобильных телефонов и, возможно, даже стать мостом через пропасть между работой и игрой.

Сегодня многие сетевые или поддерживающие сеть устройства работают на том или ином варианте ядра Linux. Это солидная платформа: недорогая в развертывании и поддержке и хорошо принимаемая благодаря удобному подходу к развертыванию. Пользовательский интерфейс таких устройств зачастую основан на HTML и может просматриваться с помощью браузера для РС или Mac. Но не всяким устройством нужно управлять посредством компьютера. Рассмотрим обычные бытовые приборы, такие, как плита, микроволновая печь или хлебопечка. Что если у ваших бытовых приборов была бы ОС Android и цветной сенсорный экран? Будь у плиты интерфейс Android, автор и сам, возможно, смог бы что-нибудь приготовить.

Из этой стати вы узнаете о платформе Android и о том, как ее можно использовать для мобильных и стационарных приложений. Мы установим SDK Android и создадим простую программу. Загрузите исходный код примера приложения для этой статьи.


Краткая история Android

Платформа Android является продуктом группы Open Handset Alliance, ставящей себе целью создание более совершенного мобильного телефона. Эта группа во главе с Google включает операторов мобильных сетей, производителей телефонов и компонентов, разработчиков программных решений и поставщиков услуг, а также маркетинговые компании. С точки зрения разработки программного обеспечения Android находится в самом центре мира открытого ПО.

Первым выпущенным на рынок телефоном на платформе Android стало устройство G1 производства HTC, которое распространяла T-Mobile. Это устройство появилось почти через год после того, как о нем пошли слухи, и единственным инструментом разработки программ для него были постепенно совершенствуемые последовательные выпуски SDK. Накануне выпуска G1 команда Android представила SDK v1.0, и начали появляться приложения для новой платформы.

Чтобы стимулировать инновации, Google спонсировала два «Конкурса разработчиков для Android», победители которых получили миллионы долларов. Через несколько месяцев после выхода G1 открылся сайт Android Market, откуда пользователи могли загружать приложения прямо в свой телефон. Всего за полтора года новая мобильная платформа вышла на арену.


Платформа Android

По широте возможностей платформа Android не уступает операционным системам настольных ПК. Это многоуровневая среда на основе ядра Linux с богатыми функциональными возможностями. В подсистему пользовательского интерфейса входят:

  • Окна
  • Представления
  • Виджеты для отображения общих элементов, таких как редактируемые поля, списки и развертывающиеся списки.

Android содержит встраиваемый браузер на базе WebKit - того же механизма с открытым исходным кодом, который лежит в основе браузера Safari мобильного телефона iPhone.

Android обладает широким спектром возможностей подключения, охватывающим Wi-Fi, Bluetooth и протоколы передачи данных через сотовую сеть (GPRS, EDGE, 3G и др.). Популярным приемом в приложениях для Android является ссылка на Google Maps для отображения адреса непосредственно в приложении.В стек программного обеспечения Android входит и поддержка сервисов, основанных на определении местоположения (например, GPS), и акселерометров, хотя не все устройства на этой платформе оснащены необходимым оборудованием. Есть также поддержка видеокамеры.

Исторически двумя областями, где мобильные приложения отставали от своих настольных собратьев, были графика/мультимедиа и способы хранения данных. Android решает проблему графики благодаря встроенной поддержке 2-D и 3-D графики, включая библиотеку OpenGL. Задача хранения данных упрощается благодаря наличию в платформе Android популярной базы данных с открытым исходным кодом SQLite. На рисунке 1 показана упрощенная схема уровней программного обеспечения Android.

Рисунок 1. Уровни программного обеспечения Android
Уровни программного обеспечения Android

Архитектура приложений

Как уже говорилось, Android работает поверх ядра Linux. Android-приложения пишутся на языке программирования Java и выполняются в виртуальной машине (VM). Важно отметить, что виртуальная машина – это не JVM, как можно было бы ожидать, а открытая технология Dalvik Virtual Machine. Каждое приложение Android запускается внутри экземпляра Dalvik VM, который, в свою очередь заключен в пределах управляемого ядром Linux процесса, как показано на рисунке 2.

Рисунок 2. Dalvik VM
Dalvik VM

Android-приложение содержит элементы одного или нескольких перечисленных ниже типов:

Действия (Activities)
Приложение с графическим интерфейсом реализуется с помощью действия. Когда пользователь выбирает приложение на главном экране или экране пуска приложений, он вызывает действие.
Сервисы (Services)
Сервисы применяются для приложений, которые работают в течение длительного времени, таких как сетевой монитор или проверка обновлений.
Источники данных (Content providers)
Источник данных можно представить себе как сервер баз данных. Его задача - управление доступом к хранящимся данным, таким как база данных SQLite. Если приложение совсем простое, источник данных создавать не обязательно. Если вы пишете более сложное приложение или приложение, в котором к данным обращается несколько действий или приложений, источник данных служит средством организации доступа к вашей информации.
Приемники (Broadcast receivers)
Android-приложение может запускаться для обработки элемента данных или реагирования на события, например, на получение текстового сообщения.

Приложение для Android развертывается на устройстве вместе с файлом AndroidManifest.xml. Этот файл содержит необходимую информацию о конфигурации, которая позволяет правильно установить приложение на устройстве. Он включает также необходимые имена классов и типы событий, которые может обрабатывать приложение, и разрешения, требуемые для его работы. Так, если приложению нужен доступ к сети – например, чтобы загрузить файл, - соответствующее разрешение должно быть явно указано в файле манифеста. Это конкретное разрешение могут иметь многие приложения. Такая защита путем декларирования помогает уменьшить вероятность повреждения устройства по вине некорректно написанного приложения.

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


Необходимые инструменты

Самый простой способ приступить к разработке приложений для Android - это загрузить SDK Android и Eclipse IDE (см. Ресурсы). Разработку Android-приложений можно вести на платформах Microsoft® Windows®, Mac OS X или Linux.

В этой статье предполагается, что вы используете Eclipse IDE и плагин Android Developer Tools для Eclipse. Android-приложения пишутся на языке Java, но компилируются и выполняются в Dalvik VM (не в виртуальной машине Java). Кодирование на языке Java в рамках Eclipse – интуитивно понятный процесс; Eclipse предоставляет богатую среду Java, включая контекстно-зависимую справку и подсказки к коду. Когда ваш Java-код будет безошибочно скомпилирован, Android Developer Tools сам позаботится о том, чтобы приложение был надлежащим образом упаковано, в том числе снабдит его файлом AndroidManifest.xml.

Android-приложение можно написать и без Eclipse и плагина Android Developer Tools, но для этого нужно хорошо разбираться в Android SDK.

Android SDK распространяется в виде файла ZIP, который распаковывается в папку на жестком диске. Так как вышло несколько обновлений SDK, мы рекомендуем вам поддерживать среду разработки в порядке, чтобы можно было легко переключаться между разными установками SDK. В SDK входят:

android.jar
Файл архива Java, содержащий все классы SDK Android, необходимые для создания приложений.
documention.html и каталог docs
Документация SDK предоставляется локально и через Интернет. В основном она выполнена в формате Javadocs, что позволяет легко ориентироваться во множестве пакетов SDK. Документация включает также общее руководство по разработке и ссылки на широкое сообщество программистов Android.
Каталог с примерами
Подкаталог с примерами содержит полный исходный код различных приложений, в том числе ApiDemo, который демонстрирует многие API. Примеры приложений – отличная отправная точка для изучения разработки Android-приложений.
Каталог инструментов
Содержит все инструменты командной строки для создания Android-приложений. Наиболее часто используемый и полезный инструмент – это утилита adb (Android Debug Bridge).
usb_driver
Каталог, содержащий все необходимые драйверы для подключения среды разработки к поддерживающим Android устройствам, таким, как G1 или разблокированный телефон для разработки Android Dev 1. Эти файлы необходимы только разработчикам, использующим платформу Windows.

Android-приложения могут работать как на реальном устройстве, так и на эмуляторе Android, который прилагается к SDK Android. На рисунке 3 показан главный экран эмулятора Android.

Рисунок 3. Эмулятор Android
Эмулятор Android

Отладочный мост Android

Утилита adb поддерживает несколько дополнительных аргументов командной строки, которые обеспечивают мощные функции, такие как копирование файлов в устройство и из него. Аргумент оболочки командной строки позволяет подключаться к самому телефону и подавать простые команды оболочки. Рисунок 4 иллюстрирует команду оболочки adb, подаваемую реальному устройству, подключенному к ноутбуку под Windows с помощью кабеля USB.

Рисунок 4. Применение команды оболочки adb
Применение команды оболочки adb

В рамках этой консоли можно:

  • Отображать конфигурацию сети с несколькими сетевыми соединениями. Обратите внимание на наличие нескольких сетевых соединений:
    • lo - это локальное (петлевое) соединение.
    • tiwlan0 - это соединение WiFi с адресом, предоставленным локальным сервером DHCP.
  • Отображать значение переменной среды PATH.
  • Выполнять команду su, чтобы стать суперпользователем.
  • Переходить в каталог /data/app, где хранятся пользовательские приложения.
  • Печатать листинг каталогов, в котором вы увидите одно приложение. Файлы приложений Android на самом деле представляют собой архивы, которые можно просматривать с помощью WinZip или эквивалентной программы. Эти файлы имеют расширение apk.
  • Подавать команду ping, чтобы проверить доступность Google.com.

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

В следующем разделе мы создадим простое приложение для Android.


Создание простого приложения

Этот раздел содержит краткий обзор процесса создания Android-приложения. Наш пример приложения предельно прост: это несколько видоизмененное приложение «Hello Android». Мы добавим незначительные изменения, чтобы сделать цвет фона экрана белым – тогда телефон можно будет использовать в качестве фонарика. Не очень оригинально, но как пример полезно. Загрузите весь исходный код.

Чтобы создать приложение в Eclipse, выберите File > New > Android project, что приведет к запуску мастера нового проекта Android (рисунок 5).

Рисунок 5. Мастер нового проекта Android
Мастер нового проекта Android

Теперь создадим простое приложение с одним действием, а также макет пользовательского интерфейса, который будет храниться в папке main.xml. Макет содержит текстовый элемент, который мы заменим на Android FlashLight (фонарик Android). Этот простой макет приведен в листинге 1.

Листинг 1. Макет Flashlight
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/all_white">
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" android:textColor="@color/all_black" 
   android:gravity="center_horizontal"/>
</LinearLayout>

Создайте пару ресурсов цвета в strings.xml (листинг 2).

Листинг 2. Цвет в strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Android FlashLight</string>
    <string name="app_name">FlashLight</string>
    <color name="all_white">#FFFFFF</color>
    <color name="all_black">#000000</color>
</resources>

Цвет фона основного экрана определяется как all_white. В файле strings.xml видно, что all_white соответствует значению триплета RGB #FFFFFF, что означает чисто белый цвет.

Макет содержит одно поле TextView, которое на самом деле - просто нередактируемый фрагмент статического текста. Текст будет черным и отцентрованным по горизонтали с помощью атрибута gravity.

Приложение содержит исходный файл Java с именем FlashLight.java, как показано в листинге 3.

Листинг 3. Flashlight.java
package com.msi.flashlight;
import android.app.Activity;
import android.os.Bundle;
public class FlashLight extends Activity {
    /** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

Код создается непосредственно в мастере новых проектов:

  • Это часть пакета Java с именем com.msi.flashlight.
  • Он импортирует два класса:
    • класс действия
    • класс пакета
  • При инициировании этого действия вызывается метод onCreate, который передается в savedInstanceState. Не сомневайтесь по поводу использования этого пакета для наших целей; он применяется, когда действие приостановлено, а затем возобновляется.
  • Метод onCreate переопределяет метод класса действия с таким же именем. Он обращается к методу суперкласса onCreate.
  • Обращение к setContentView() относится к макету UI, определенному в файле main.xml. Содержимое main.xml и strings.xml, автоматически отображается на константы, определенные в исходном файле R.java. Никогда не редактируйте этот файл напрямую, так как он изменяется после каждой сборки.

Запуск приложения приводит к отображению белого экрана с черным текстом (рисунок 6).

Рисунок 6. Белый экран фонарика
Белый экран фонарика

Настройка файла AndroidManifest.xml для приложения FlashLight показана в листинге 4.

Листинг 4. AndroidManifest.xml для приложения FlashLight
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.msi.flashlight"
      android:versionCode="1"
      android:versionName="1.0.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".FlashLight"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Этот файл создается автоматически плагином Android Developer Tools для Eclipse. Вам не нужно ничего делать.

Разумеется, это не очень мощное приложение. Но оно может пригодиться, если вы хотите что-нибудь почитать, не нарушая сна супруги, или если погас свет и надо найти путь к предохранителям в подвале.


Заключение

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


Загрузка

ОписаниеИмяРазмер
Исходный код FlashLightos-android-devel-FlashLight.zip22 КБ

Ресурсы

Научиться

  • Оригинал статьи (EN).
  • Open Handset Alliance - группа из 47 компаний, специализирующихся на ИТ и мобильной связи, которые поставили перед собой цель ускорить внедрение инноваций в сфере мобильной телефонии и предложить потребителям еще более широкие возможности, меньшие цены и лучшее качество связи. Сообща они разработали Android, первую полную, открытую и бесплатную платформу мобильной телефонии.(EN)
  • Сайт для разработчиков Android содержит документацию, загрузки, блоги и многое другое. (EN)
  • Подробнее о Dalvik Virtual Machine.(EN)
  • Видеоруководства по устройству Dalvik VM на YouTube.(EN)
  • Unlocking Android: A Developer's Guide - руководство с практическими рекомендациями по ОС Android и инструментам разработки.(EN)
  • Интервью и дискуссии разработчиков ПО в подкастах на developerWorks.(EN)
  • Чтобы оставаться в курсе новостей, посещайте раздел технических событий и Web-кастов на developerWorks.(EN)
  • Следите за developerWorks по Твиттеру.(EN)
  • Следите за предстоящими конференциями, выставками, Web-кастами и другими мероприятиями во всем мире, которые могут заинтересовать разработчиков открытого ПО IBM.(EN)
  • Посетите раздел открытого ПО developerWorks, содержащий богатую справочную информацию, инструменты и новости по проектам, которые помогают в разработке технологий с открытым исходным кодом и их использовании с продуктами IBM.(EN)
  • Узнавайте о технологиях и возможностях продуктов IBM и open source и учитесь работать с ними с помощью бесплатных демонстраций по требованию на developerWorks.(EN)

Получить продукты и технологии

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Мобильные приложения
ArticleID=469991
ArticleTitle=Введение в разработку для платформы Android
publish-date=02262010