Программирование для мобильных устройств ― в массы: Упрощенное введение в Android

Обзор мобильных устройств Android и создание своего первого приложения

У мобильных технологий многообещающая перспектива, и Android представляет собой жизнеспособную и интересную для разработчиков платформу. Этот новый цикл статей начинается с введения в Android, специально предназначенного для тех Java™-программистов, которые только знакомятся с мобильными технологиями. Читатель узнает о трехуровневой системе многоверсионности Android (и поймет, почему это важно), а затем сможет настроить свою собственную среду разработки и создать свое первое Android-приложение.

Эндрю Гловер, президент компании, Stelligent Incorporated

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



17.06.2013

Об этом цикле статей

Мобильные приложения растут как грибы после дождя, и специалистам по их разработке есть где приложить свои знания. Предлагаемый цикл статей знакомит с мобильными технологиями тех программистов, которые только начинают осваивать эту сферу. Мы начнем с написания "родных" приложения на Java, а затем добавим в инструментарий JVM-языки, платформы сценариев, инструменты HTML5/CSS/JavaScript и многое другое. Читатель, шаг за шагом, будет овладевать навыками, необходимыми для выполнения практически любого сценария разработки мобильных приложений.

Взлет интереса к мобильным технологиям, наблюдаемый в последнее время, поражает даже ветеранов отрасли. В сентябре 2012 года генеральный директор Apple Тим Кук отразил это чувство в интервью, в котором говорил об успехе устройства iPad своей компании. 67 миллионов проданных iPad всего за два года ― замечательный результат при любых обстоятельствах. Кук представил это число в исторической перспективе, отметив, что «понадобилось 24 года, чтобы продать столько компьютеров Mac, пять лет, чтобы продать столько плееров iPod, и более трех лет, чтобы продать столько смартфонов iPhone». (См. раздел Ресурсы.)

Дела iOS идут хорошо, но и ориентированная на Java платформа Android тоже не отстает. Как заявил недавно представитель Google, с момента официального выпуска Android в 2008 году было активировано 500 млн устройств на этой платформе, и ежедневно активируется по 1,3 млн новых устройств. Apple iTunes App Store и Google Play в общей сложности предлагают не менее 1,4 млн приложений, которые претерпели 60 млрд мобильных загрузок. (См. раздел Ресурсы.)

Все это означает новые возможности для продажи приложений и растущий рынок для программистов. Android ― лучшая отправная точка для тех, кто хочет быстро научиться разрабатывать мобильные приложения. Умеющие программировать на Java и других JVM-языках могут начать с требований, предъявляемых к мобильным приложениям. Универсальность Android позволяет легко освоить новые технологии, такие как HTML5 и PhoneGap, и экспериментировать с ними. А вездесущность этой платформы — наряду с Google Play— гарантирует, что созданные приложения получат широкое распространение.

Эта первая статья нового цикла Программирование для мобильных устройств ― в массы представляет собой введение в Android. Мы начнем с обзора довольно сложной системы многоверсионности Android, а затем займемся настройкой среды разработки и созданием вашего первого собственного приложения.

Три способа программирования для мобильных устройств

На верхнем уровне экосистемы мобильных приложений находятся три основных платформы разработки: "родная", Web и гибридная.

  • Родные платформы позволяют создавать приложения, которые замечательно выглядят и воспринимаются, а также обеспечивают сравнительно высокую производительность. Оборотная сторона разработки родных приложений ― для каждой платформы нужно писать свой код.
  • Мобильные Web-приложения обычно пишут на HTML5, CSS и JavaScript. Их можно написать один раз и запускать на разных платформах, но такие приложения могут уступать родным по внешнему виду, восприятию и производительности.
  • Гибридные инструменты и среды ликвидируют этот разрыв, сочетая в себе простоту программирования и универсальность Web-приложений с блеском родных приложений. Разработчики много спорят о том, какая платформа лучше, но истина такова: каждая из них имеет свои преимущества.

Этот цикл статей охватывает все три платформы.

Торжество Android

Android-устройства набирают популярность быстрее, чем любая другая мобильная платформа, что делает их отличным выбором для первого знакомства с разработкой мобильных приложений, особенно для Java-программистов. Оборотная сторона массового принятия Android ― это фрагментация, которая создает значительные проблемы для тестирования приложений. Для большинства разработчиков реальность такова, что почти невозможно протестировать приложение для каждой комбинации Android-устройства и версии ОС. (На самом деле экономически эффективное выполнение такого тестирования стало растущим направлением развития сферы услуг.) Последующие статьи будут посвящены техническим вопросам, таким как перенос приложения на разные профили Android, а также Java-инструментам для тестирования мобильных Android-приложений. Пока же рассмотрим ситуацию с многоверсионностью Android ― которую необходимо понять, чтобы писать программы для этой платформы.

Многоверсионность Android

Версии ОС Android нумеруются в возрастающем порядке: 1.6, 2.1, 4.2 и т.д. У них также есть имена, соответствующие названиям различных десертных блюд: Donut (бублик), Eclair (эклер) и Jelly Bean (драже с фруктовой начинкой). Jelly Bean в контексте Android означает Android версии 4.2. Версии Android разделяются и по уровням API, которые обозначаются возрастающими последовательными целыми числами. Так, Android API уровня 17 относится к версии Android 4.2, или Jelly Bean.

Если вам кажется, что это несколько путано, то вы не одиноки. Тем не менее понимать это важно, потому что все три взаимозаменяемые схемы многоверсионности находятся в ходу.

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

Многие потенциальные потребители вашего приложения перейдут на новую версию ОС Android только тогда, когда умрет их старое устройство. Поэтому выбор поддерживаемой версии операционной системы Android имеет решающее значение. Хотя последняя версия ― Android 4.2, примерно половина Android-устройств по-прежнему поддерживает Android 2.3.x. Приложение, написанное для Android 3.1, будет работать на новых версиях, таких как версия 4.2, но не работает на более ранних версиях, таких как версия 2.3. Таким образом, чтобы обеспечить более широкое распространение, нужно ориентироваться на старую версию операционной системы.

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


Работа с Android и ADT Eclipse

В первой части этого введения в Android я помогу вам как можно быстрее написать простое Android-приложение. Мы воспользуемся версией Android 4.2 и плагином Eclipse Android Development Tools (ADT), чтобы создать всеми любимое Java-приложение Hello World.

Android-совместимые IDE

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

Выберите один из двух способов настройки среды разработки для Android. Программисты, не знакомые ни с Eclipse, ни с Android, могут начать с загрузки комплекта ADT (Android Developer Tools) Bundle. ADT Bundle сочетается с Android SDK и версией Eclipse, где есть уже установленный плагин ADT. Это быстрый и простой способ начать программирование для Android.

Если среда Eclipse уже установлена и настроена, то достаточно загрузить вручную и установить Android SDK. Базовый SDK Android содержит инструменты системного уровня, которые облегчают разработку для Android. Однако в нем нет самих Android-библиотек, необходимых для работы с определенной версией Android. Загрузив базовый SDK Android для своей операционной системы, перейдите в каталог инструментов SDK и запустите Android-сценарий, приведенный в листинге 1.

Листинг 1. Запуск Android SDK Manager
~/Development/tools/android/android-sdk-mac_x86/tools$>./android

Этот сценарий запускает Android SDK Manager, способный загружать различные версии и библиотеки для Android и создавать экземпляры эмулятора или виртуального устройства. Android SDK Manager открывает окно с большим списком вариантов загрузок, как показано на рисунке 1.

Рисунок 1. SDK Manager
Скриншот SDK Manager

С помощью флажков слева выберите Tools и Android 4.2 (API 17). Эта папка отображает ряд вариантов. Выберите SDK Platform и образ ARM EABI v7a System, как показано на рисунке 2.

Рисунок 2. Варианты выбора в SDK Manager
Варианты системы и инструментов в SDK Manager

Нажмите кнопку Install packages и примите любые требуемые условия лицензии; все остальное сделает менеджер.

Создание эмулятора

Теперь создадим экземпляр эмулятора, который представляет собой виртуальное устройство, способное исполнять приложения. Эмуляторы должны соответствовать определенной версии Android, так что создадим экземпляр эмулятора, работающий с Android 4.2.

Если вы закрыли SDK Manager, запустите его вновь. Если инструменты Android SDK или инструменты платформы были обновлены, перезапустите SDK Manager. В меню верхнего уровня SDK Manager выберите Tools > Manage AVDs, чтобы открыть новое диалоговое окно Android Virtual Device Manager, как показано на рисунке 3.

Рисунок 3. Android Virtual Device Manager
Android Virtual Device Manager

Это диалоговое окно содержит список всех эмуляторов, которые определены на данной машине. Пока ни один эмулятор не создан, список эмуляторов пуст. Нажмите кнопку New, чтобы открыть диалоговое окно Create a new Android Virtual Device (AVD), в котором можно определить эмулятор. Выберите Android version 4.2 из раскрывающегося списка Target. В поле AVD Name укажите имя эмулятора — у меня это Android_4.2. Когда приложение будет готово к тестированию, мы воспользуемся этим именем при запуске эмулятора из командной строки.

Рисунок 4. Создание нового виртуального устройства Android
Создание нового виртуального устройства Android в SDK Manager

Как показано на рисунке 4, AVD может иметь разные свойства, включая тип устройства, параметры видеокамеры и объем оперативной и постоянной памяти. Я выбрал Galaxy Nexus с картой SD емкостью 200 МБ. Наконец, я отметил параметр эмуляции Use Host GPU, который позволяет повысить производительность экземпляров эмулятора.

Нажмите кнопку OK, чтобы увидеть свое новое виртуальное устройство в диалоговом окне AVD. Выберите его и нажмите кнопку Start, чтобы открыть другое диалоговое окно с параметрами запуска. Пока оставьте значения по умолчанию и нажмите кнопку Launch. Запуск экземпляра эмулятора может занять некоторое время, так что выпейте кофе, зайдите в Facebook или обновите свой статус в Twitter.

Рисунок 5. Новое Android-устройство!
Скриншот AVD Galaxy Nexus

Через некоторое время на экране появится замечательное смоделированное устройство (вроде того, что показано на рисунке 5). Теперь можно приступать к созданию приложений для Android 4.2.

Настройка ADT Eclipse

Если среда Eclipse уже установлена, то прежде чем продолжить, необходимо добавить репозиторий плагина Android Development Tools (ADT).

В меню Eclipse откройте Help > Find New Software. Нажмите кнопку Add и добавьте URL плагина ADT: https://dl-ssl.google.com/android/eclipse/ (см. Рисунок 6).

Рисунок 6. Репозиторий плагина ADT
Параметры для добавления Eclipse-плагина ADT

Когда плагин загрузится, следуйте инструкциям по его установке. Настройте плагин ADT на использование уже установленного SDK. Теперь проект ориентирован на платформу Android 4.2 и использует созданный эмулятор.


Hello, Android 4.2!

Чтобы создать Android-приложение в Eclipse, выберите возможность создания проекта Android-приложения (Android Application Project). В диалоговом окне New Android Application выберите имя приложения, имя проекта и имя пакета. Application name — это имя, которое пользователи видят под значком устройства; project name — имя проекта в Eclipse.

Рисунок 7. Создание нового проекта Android
Создание нового проекта Android

Начните с диалогового окна New Android Application на рисунке 7 и выполните следующие действия.

  1. Из раскрывающегося списка Target SDK выберите API 17: Android 4.2 (Jelly Bean) и нажмите кнопку Next.
  2. В следующем диалоговом окне оставьте значение по умолчанию, хотя результирующий код можно поместить в любом месте. Нажмите кнопку Next.
  3. В диалоговом окне Configure Launcher Icon оставьте значения по умолчанию и нажмите кнопку Next.
  4. Сохраните значения по умолчанию в диалоговом окне Create Activity и в последнем диалоговом окне, которое используется для выбора действий приложения. Нажмите кнопку Finish.

Если созданный проект работает, вы увидите новый проект с простым пользовательским интерфейсом, аналогичным тому, что представлен на рисунке 8.

Рисунок 8. Пример запуска проекта в Eclipse
Приложение по умолчанию в Eclipse

Запуск приложения в эмуляторе Android

По умолчанию Android-проекты, созданные с помощью мастера проектов ADT, представляют собой простое мобильное приложение Hello World! (См. Рисунок 8.) Прежде чем начать украшать его, посмотрите, что происходит при запуске простого приложения в эмуляторе.

Откройте эмулятор Android 4.2, если он закрыт. Вместо того чтобы запускать эмулятор в AVD Manager, на этот раз попробуйте сделать это посредством командной строки. Сценарий emulator находится в каталоге SDK tools. При запуске сценария укажите имя эмулятора. Мой эмулятор называется Android_4.2, так что для своего экземпляра эмулятора я запускаю сценарий, приведенный в листинге 2.

Листинг 2. Доступ к эмулятору из командной строки
~/Development/tools/android/android-sdk-mac_x86/tools$>./emulator -avd Android_4.2

Запустите свой экземпляр эмулятора, вернитесь в Eclipse и выберите проект. Щелкните правой кнопкой и выберите Run As > Android Application.

Рисунок 9. Запуск проекта в Eclipse
Запуск проекта в Eclipse

По умолчанию Eclipse развертывает приложение на запущенном эмуляторе (Рисунок 9). Теперь экземпляр эмулятора отображает большой белый экран с любимым приветствием каждого Java-разработчика! Если по какой-либо причине Eclipse столкнется с проблемой при запуске приложения на эмуляторе, вернитесь к параметру Run As и выберите Run Configurations. На вкладке Target еще раз отметьте Automatically select compatible device и убедитесь, что выбран эмулятор.

Рисунок 10. Hello World!
Экран приложения 'Hello World'

Простое Android-приложение

Теперь у вас есть простое приложение Hello World, которое работает на любом Android-устройстве, совместимом с версией 4.2. Теперь можно настроить это приложение и добавить более интересные функции. Пока же я хочу заняться анатомией Android-приложения.

Специализированная JVM Android

Android-приложения написаны на Java, но работают не на стандартной JVM. В ОС Android байт-код Java преобразуется и специализируется в соответствии с требованиями по объему памяти и возможностями обработки мобильного устройства. Подробнее об архитектуре Android-приложения и виртуальной машине Dalvik см. в разделе Ресурсы.

Вернитесь в IDE Eclipse. В каталоге src своего проекта найдите единый файл проекта .java. Если вы сохранили все значения по умолчанию, то этот файл называется MainActivity. Классы Activity ― это рабочие лошадки Android-приложений, аналогичные сервлетам серверных Java-приложений. Каждое такое действие (Activity) имеет жизненный цикл подобно жизненному циклу Java-апплета.

У простого приложения Hello World простой класс Activity. Во-первых, это продолжение класса Activity Android. Точкой входа для действий является метод onCreate, который запускается платформой при загрузке приложения. Основная строка этого метода ― вызов setContentView. Листинг 3 иллюстрирует класс MainActivity по умолчанию.

Листинг 3. MainActivity
package com.example.hello;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  getMenuInflater().inflate(R.menu.activity_main, menu);
  return true;
 }
}

setContentView загружает макет activity_main, как при первом открытии проекта в Eclipse. Это имя соответствует файлу activity_main.xml, который находится в каталоге res/layout. Откройте этот файл, чтобы увидеть графическое представление своего приложения. На левой нижней вкладке есть возможность просмотра исходного XML-файла. Выберите ее, чтобы увидеть исходный файл, который выглядит как Листинг 4.

Листинг 4. Определение исходного макета
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

  <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:text="@string/hello_world" />
</RelativeLayout>

Представления Android определяются в XML-файлах. У каждого есть макет, к которому можно добавлять виджеты, такие как кнопки или текстовые поля. Пока в нашем примере приложения есть представление RelativeLayout с одним виджетом: TextView. Рассмотрев его, вы увидите текстовое поле, соответствующее ссылке: @string/hello_world.

Эта переменная указывает на реальное строковое значение, присутствующее в файле res/values/strings.xml. Откройте этот файл. Чтобы увидеть исходный текст XML, щелкните на вкладке strings.xml слева внизу.

Листинг 5. Файл strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
 <string name="app_name">Hello 4.2</string>
 <string name="hello_world">Hello world!</string>
 <string name="menu_settings">Settings</string>
</resources>

Вторая строка определения в листинге 5 преобразует hello_world в Hello World!

Манифест Android

Теперь вы знаете, как связаны между собой три важных элемента Android-приложения: действия, макеты и файлы ресурсов. При запуске приложения ОС Android вызывает метод onCreate класса MainActivity. Затем метод onCreate загружает макет, и этот макет вводит некоторые значения из другого файла ресурсов XML. В данном случае результатом является простой пользовательский интерфейс, который говорит: Hello World!

Но как устройство узнает, какое действие вызывать? Здесь в игру вступает AndroidManifest.xml. Найдите этот файл в корневом каталоге своего проекта. Щелкните на нем, и Eclipse загрузит симпатичное настраиваемое представление с несколькими вкладками в левом нижнем углу. Выберите вкладку AndroidManifest.xml для отображения исходного текста XML (Листинг 6).

Листинг 6. AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.hello"
   android:versionCode="1"
   android:versionName="1.0" >

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

  <application
   android:allowBackup="true"
   android:icon="@drawable/ic_launcher"
   android:label="@string/app_name"
   android:theme="@style/AppTheme" >
   <activity
    android:name="com.example.hello.MainActivity"
    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>

Этот файл "объясняет" приложение устройству, на котором оно исполняется. Он содержит XML-блок application, который определяет activity. В нем имеется также ссылка на MainActivity и определяется действие action вместе с категорией category. Элемент action указывает устройству, какое действие запустить. В данном случае action определяет действие Activity как главное (MAIN).

В число других важных деклараций файла AndroidManifest.xml входит часть uses-sdk, которая сообщает, что минимальная версия (min) ― 8 (то есть Android 2.2.x), а целевая ― 17, или Android 4.2. Мы рассмотрим это подробнее в одной из следующих статей. Пока же достаточно сказать, что платформа Android предоставляет библиотеки, совместимые с более ранними версиями.


Заключение

Итак, ваше первое Android-приложение готово. В процессе его создания вы узнали некоторые важные вещи об Android — и о разработке мобильных приложений в целом. Вы установили Android SDK, загрузили Android версии 4.2 и создали AVD (или эмулятор) для имитации работы приложения на устройстве. Если вы используете Eclipse, то интерфейс IDE теперь настроен на создание и развертывание Android-приложений для выбранного AVD. Вся эта настройка требуется для того чтобы можно было работать с Android.

Вы также видели, как собирается простое Android-приложение: большую часть работы выполняют классы Activity, а AndroidManifest.xml определяет его структуру для базового устройства. И получили результат: простое приложение Hello World, которое нам предстоит усовершенствовать.

В следующий раз мы продолжим заниматься Android. Пока же я призываю вас поиграть с этим приложением. Добавьте какие-нибудь виджеты или измените значения параметров в XML-файлах. Если вы чувствуете себя уверенно, попробуйте создать новое приложение Hello World, не используя значений по умолчанию.

Ресурсы

Научиться

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

  • Загрузить Android: SDK Android предоставляет библиотеки API и инструменты разработчика, необходимые для построения, тестирования и отладки приложений для Android.
  • Комплект ADT (Android Developer Tools): загрузите SDK Android и версию Eclipse с уже установленным плагином ADT, чтобы быстро и легко начать работу с Android.

Комментарии

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=Технология Java, Мобильные приложения, Open source
ArticleID=934170
ArticleTitle=Программирование для мобильных устройств ― в массы: Упрощенное введение в Android
publish-date=06172013